본문 바로가기
해피 코딩/프로젝트

Chapter 3. 최종 회고

by happy-coding 2024. 9. 9.
🔥 Chapter 3. AI 검증 비즈니스 프로젝트가 성공적으로 마무리되었기 때문에, 프로젝트 정리 및 회고를 남기려고 한다.


[ 팀원 및 역할 ]

  • 팀장 - 서병준
    • 사용자 API
    • AI API
  • 팀원 - 김정수
    • 주문 API
    • 결제 API
  • 팀원 - 박영무
    • 인증 및 인가
    • 메뉴 API
  • 팀원 - 이경식
    • 가게 API
    • 카테고리 API
  • 공통
    • 배포

[ 담당한 기능 ] 

  • 회원가입 / 로그인 및 로그아웃
    • 회원가입: 회원가입 시 모든 사용자의 권한은 CUSTOMER로 설정
    • 로그인: 로그인 시 사용자의 데이터를 Redis에 캐싱
    • 로그아웃: 사용자의 토큰을 Redis에 캐싱하여 블랙리스트 처리
    • /auth/blacklist: API를 만들어 블랙리스트 처리된 토큰을 검증

 

  • 사용자 API
    • 사용자 정보 조회
    • 사용자 정보 수정
    • 사용자 권한 변경 신청: 사용자의 권한을 CUSTOMER에서 OWNER로 관리자에게 권한 변경을 신청 (관리자 승인 시 변환 성공)

 

  • 사용자 관련 관리자 API
    • /master/updateRole/{userId}: 권한 변경을 신청한 회원의 권한 변경을 승인 및 거절
    • /master/updateRole/list: 권한 변경을 신청한 사용자 모두 보기
    • /master/search: @RequestParam을 사용하여 회원 정보 단일 검색 기능 구현
    • /master/search/list: Pageable 기능을 사용하여 모든 회원 정보 보기

 

  • AI API
    • RestTemplate을 사용하여 메뉴 등록 시 Gemini에게 메뉴 내용을 추천받기
    • Gemini의 요청 및 응답 내용 저장을 모두 저장


[ 어려웠던 점, 그에 대한 해결방안 ]

  • 로그인 시 권한 문제
처음 로그인을 구현했을 때 Postman에서 Role(권한)을 직접 입력해 줄 수 있도록 구현을 해주었다.  이렇게 구현 시 사용자가 본인이 원하는 권한을 직접 입력하여 접근할 수 있기 때문에 큰 문제가 발생할 수 있다.
  • 해결방안
회원가입 및 로그인 시 모든 사용자는 CUSTOMER 권한을 부여받도록 설계해 주었고, 권한 변경이 필요한 사용자는 사용자 권한 변경 신청 API를 만들어 해결해 주었습니다.
🤔 그렇다면 관리자는 어떻게 로그인을 해야 할까?
💁 관리자 로그인을 위해 Application 시작 후 특정 작업을 자동으로 수행하도록 설정할 수 있는 인터페이스인 CommandLineRunner를 사용하여 Application 시작 시 DB에 관리자 아이디 및 패스워드 정보를 자동으로 만들어 주어 이를 해결하였습니다.

  • 로그아웃 Cache Blacklist 처리
로그아웃을 구현하기 전에는 로그아웃을 시도한 사용자의 정보를 Cache에서 삭제하면 될 것이라고 생각했지만, 막상 찾아보니 블랙리스트 처리를 해줘야 한다는 것을 알게 되었습니다.
  • 해결방안
사용자가 로그아웃을 했음에도 불구하고 JWT는 여전히 유효하기 때문에 블랙리스트 저장소를 만들어서 관리함으로써 이를 해결하였습니다.

[ 잘 된 점과 그 이유 ]

  • GeminiAPI 구현
{
  "contents": [{
    "parts":[{
      "text": "피자 이름 추천해줘"
    }]
  }]
}
DB에 데이터를 저장하기 위해 ObjectMapper를 사용하여 JSON문자열에서 text의 값만 추출하여 저장하였습니다.

[ 협업 간 발생한 문제와 해결 방안 ]

  • 문제
개인이 Pull Request를 생성하고 merge 하는 과정에서 main 브랜치에 잘못 merge 하는 일이 발생하였습니다.
  • 해결 방안
1명 이상의 인원이 승인해야만 main 브랜치에 병합되도록 조건을 추가하였습니다.

[ 팀 프로젝트를 진행하며 느낀 점 ]

개인이 아닌 팀 프로젝트를 진행하는 만큼 팀원들과의 소통이 중요하다는 것을 느꼈습니다.
팀장으로서 느낀 점은 프로젝트에 팀원으로 참여할 때보다 팀장으로서 프로젝트를 참여할 때 에너지가 2배는 더 많이 든다는 것을 느꼈습니다. 그렇지만 그만큼 더 값진 경험과 성장을 했다고 생각하며 앞으로 남은 2번의 프로젝트에 대해서 한 번 더 팀장을 맡아보며 팀을 이끌어 보고 싶다는 생각을 하게 되었습니다. 

 

읽어주셔서 감사합니다 😊

 

😺 GitHub: https://github.com/Ip10-teamProject/Backend

'해피 코딩 > 프로젝트' 카테고리의 다른 글

Chapter 5. 최종 회고  (0) 2024.11.05
Chapter 4. 최종 회고  (1) 2024.09.24