프로젝트/팀 개발일지

[Spring Boot/Toy Project] Quostomize - Admin 페이지와 로그 관리 기능 개발 (w. 개발 범위와 우선순위 조정의 중요성)

Se On 2024. 11. 13. 19:19

들어가며

✍️ 프로젝트의 초기 목표와 클라이언트 요구사항
백엔드 API 개발 종료기한을 이틀 앞둔 가운데, 오늘은 클라이언트의 주요 요구사항인 Admin 페이지 개발과 로그 데이터 수집 및 관리에 집중했습니다.
  • 초기 목표
    • Admin의 권한 관리, 통계 시각화, 우리금융그룹과의 연계 기능 등을 포함한 관리자 페이지를 목표로 했습니다.
    • 사용자의 이용기록을 관리하는 별도 로그 기능을 기획했습니다.
  • 실제 개발 과정
    • 그러나 실제 개발 과정에서는 우선순위 조정과 구체적인 기능 범위 설정이 필요했습니다.
    • 클라이언트가 요구하는 핵심기능을 반영하고, 프로젝트 기한 내 완성할 수 있는 현실적인 접근법을 선택하게 되면서 여러 차이점을 경험했습니다.

 

1. Admin 및 Admin page 정의

💭 초기 목표

  • 의도한 결과: Admin의 권한을 정의하고 이에 따른 기능을 정리하여 관리자 페이지 개발하는 것
  • 중점 사항: 회원 및 카드에 대한 권한조정, 통계데이터를 시각화, 우리금융그룹과의 연계 기능을 중심으로 기획

 

🖼️ 현실

  • 진행 상황: 우리FISA에서 필수구현사항을 제시해 두었기에, 이를 기반으로 우선순위 재조정
    • 필수기능
      1. 알림기능
      2. 정보조회 및 권한수정
      3. 가맹점 제휴 및 혜택 퍼센트 변경
    • 개선기능
      1. 우리금융그룹 연계
      2. 통계지표

 

✏️ 배운 점

  • 우선순위 조정의 필요성: 프로젝트 평가에 있어 클라이언트(우리FISA)의 요구사항을 최우선으로 반영하는 것이 중요함을 깨달음
  • 적정선 찾기: 클라이언트 요구사항을 충족하면서도 팀이 구현하고자 하는 기능을 함께 보여줄 수 있는 균형이 필요
    • ex
      가맹점 제휴 및 혜택비율 변경: 실제 변경이 아닌 결재요청 단계까지만 구현
      결재요청 단계까지만 구현해도 되는 이유: 회사의 일반적인 결재로직

 

🎯 목적

  • 지속
    • 우선순위에 따른 기능 개발(필수 → 개선)
    • 필수: 알림기능, 정보조회 및 권한수정, 가맹점 제휴 및 혜택 퍼센트 변경
  • 개선
    • 추가: 우리금융그룹 연계 및 통계지표 제공 기능
  • 포기
    • 구체적인 기능 개발 (기초 결재로직만 구현하기로 협의)

 

2. 로그 데이터 수집 및 관리방안 협의

💭 초기 목표

  • 의도한 결과: 우리FISA 프로젝트 요구사항에 맞는 로그관리 기능 개발
  • 기획 내용: 사용자의 서비스 로그인 및 이용기록을 별도 로그로 저장하고 조회할 수 있는 기능 구현

 

🖼️ 현실

  • 진행 상황: 로그 관리 방안이 명확하지 않음, 로그데이터 저장 방법 협의 필요
  • 로그인 및 이용기록
    • 이용기록: 초기에는 결제기록이 아닌 포인트 사용 기록으로 대체하려고 했으나, 포인트기록 테이블이 없어 불가능하다는 점과 촉박한 개발 일정으로 인해 결제기록을 이용하기로 결정
  • 로그데이터 저장방법 
    • 초기에는 결제기록을 위한 ip_address, transaction_id, amount 필드를 고려했으나, 프로젝트의 최소 요구사항에 맞춰 필드 간소화하기로 협의
    • 최종 결정: 로그종류와 상태구분만 필드에 포함, 11/29(금) 이후 백엔드 및 프론트엔드 기능 개발과 함께 세부로그항목을 추가할 예정
필드 목록 타입 및 설명
log_sequence_id 로그 고유 식별 ID (bigint, auto increment, PK)
member_id 회원 식별 ID (FK)
log_type 로그 종류 구분 (varchar(50), not null)
ex: login, logout, payment
log_message 로그 설명 (text, not null)
status 로그 상태 (varchar(20))
ex: success, failed, pending
ip_address 로그인 ip 주소 (varchar(255))
회원이 로그인한 ip 주소
암호화 필요
transaction_id 결제 트랜잭션 id (varchar(100))
결제 로그의 경우, 결제 트랜잭션 id 기록
암호화 필요
amount 결제금액 (decimal(10, 2))
결제 로그의 경우, 결제금액
암호화 필요

 

✏️ 배운 점

  • 로그 관리 방안에 대한 멘토님 조언
    • 대규모 로그데이터를 효율적으로 관리하기 위해 주기적인 데이터 삭제 및 성능 향상을 위한 인덱스 설계 필요성 인식
    • 특히 우리은행에서는 로그를 1년 주기로 삭제하는 정책 진행 중
  • 개발 일정 관리: 촉박한 일정를 고려하여 개발범위를 정하고 우선순위를 조정하는 것이 중요함을 깨달음
  • 로그 수집 방법 협의
    • 새벽 12:30~1:00 스케줄링 또는 배치 작업
    • 로그데이터 일괄 저장하는 방식으로 협의 완료
    • 이번에 스케줄링이나 배치를 공부하여 개발해보았기에 기술적인 문제는 없을 것으로 예상됨

 

🎯 목적

  • 지속
    • 로그 관리 기능 개발
  • 개선
    • 기능 개선을 위한 인덱스 설계
  • 포기
    • 구체적인 로그데이터 관리 (필드 최소화 및 필수 요구사항 충족)

정리하면

✍️ 오늘 회고록을 정리하며 배운 점은...
  • 구체적인 기능을 개발하는 것도 좋지만, 일정을 고려하여 개발 범위를 정하고 우선순위를 조정하는 것이 기한 내 개발 성공에 결정적이라는 것입니다.
  • 때로는 모든 기능을 완벽하게 구현하기보다 클라이언트의 요구사항에 따라 필요한 기능을 우선 개발하고, 효율적인 관리 방안을 적용하는 것이 더 효과적일 수 있음을 느꼈습니다.
  • 앞으로도 프로젝트를 진행하면서 이를 바탕으로 목표에 맞는 최적의 개발 범위와 우선순위를 설정해 효율적으로 진행해 나가고자 합니다.

 

GitHub - woorifisa-projects-3rd/Quostomize-BE

Contribute to woorifisa-projects-3rd/Quostomize-BE development by creating an account on GitHub.

github.com

반응형