🔥 Chapter 3. AI 검증 비즈니스 프로젝트가 성공적으로 마무리되었기 때문에, 프로젝트 정리 및 회고를 남기려고 한다.
- 프로젝트 S.A (Starting Assignments)
- 첫 번째 회고
- 중간 회고
- 프로젝트에 Swagger 적용하기
- Ai가 대세! Gemini API 사용하기
- Redis를 사용하여 로그아웃 블랙리스트 처리하기
- 팀 프로젝트 ERD 다시 그려보기
[ 팀원 및 역할 ]
- 팀장 - 서병준
- 사용자 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번의 프로젝트에 대해서 한 번 더 팀장을 맡아보며 팀을 이끌어 보고 싶다는 생각을 하게 되었습니다.
읽어주셔서 감사합니다 😊
'해피 코딩 > 프로젝트' 카테고리의 다른 글
Chapter 5. 최종 회고 (0) | 2024.11.05 |
---|---|
Chapter 4. 최종 회고 (1) | 2024.09.24 |