개요
약 2주간의 짧았던 MSA 프로젝트를 진행하면서 팀원들의 겪었던 어려웠던 점과 배운 것에 대해 정리한다.
프로젝트 Repository
트러블 슈팅
Gemini Ai - 학습 데이터 관련
원인: AI에게 요청을 보내는 과정에서 모델의 학습 데이터를 제대로 파악하지 못해서 원하는 수준의 답변을 얻지 못했다.
- 팀원이 겪었던 사항으로 프로젝트 마감 기간에 쫓겨 제대로 AI를 활용하지 못했기 때문에 발생한 문제라고 생각 된다.
- 추후 AI를 사용하게 될 일이 있다면 사용방법이나 요청에 필요한 데이터 등에 알아보거나 다른 사람들이 사용한 코드 등을 참고해서 작업하는 것이 좋을 거 같다.
1. 서비스 간 통신 오류 및 데이터 불일치
- 문제: Gateway URL 등록 문제 및 Feign Client 설정 및 예외 처리 부재.
- 해결 방법: Gateway URL 등록 수정 및 Feign Client에서 가져오는 데이터를 공용 Response로 감싸서 가져온 후 필요한 값을 꺼내 쓰는 방식 사용, 예외 처리 추가.
- 개선점: 트랜잭션 일관성 강화 및 에러 코드 명확화.
2. Gateway에서 토큰 검증 후 정보를 요청 헤더에 추가했으나 타 서비스에서 사용하지 못함
- 문제: Gateway에서 수정된 요청 객체를 반환하지 않음, 필터 체인에 반영되지 않아서 다른 서비스에서 헤더를 읽을 수 없음
- 해결 방법: 수정된 요청 객체를 생성한 후, 반환 값을 새로운 요청으로 변경
- 개선점: 필터 체인에 전달한 정보가 헤더에 반영되어 다른 서비스에서 헤더 안의 X-Username, X-Role 등을 가져올 수 있게 됨
3. 주문 생성 시 받은 최종 발송 시한을 Slack에 전달하는 과정에서 Feign Client를 통해 데이터를 받는데 실패함
- 문제: Feign Client를 호출하는 과정에서 제대로 된 값을 반환 받지 못하고 에러가 발생함
- 해결 방법: 로그를 사용해 Feign Client 호출 과정에 어떤 부분에서 문제가 생겼는지 찾아내 해당 부분을 수정함(호출 시 전달해야 되는 데이터 변수 명과 순서가 바뀜).
- 개선점: Feign Client에서 성공적으로 값을 받아와 주문 생성 기능이 정상적으로 동작할 수 있게 됨.
어려웠던 점
- MSA 구성 간 크고 작은 에러들로 인해 해결에 어려움을 겪음, 각 서비스간 통신에서 발생한 에러의 원인을 찾는 것이 힘들었다.
- 트러블 슈팅 시 강의를 참고해서 따라 했지만 해결되지 않는 부분에 대해 원인을 찾기 어려웠음.
- DDD 구조로 프로젝트를 구성하는 게 어려웠다.
- Slack이나 AI 등 외부 서비스를 호출해서 사용할 때 테스트 환경을 구축하기 어려웠으며, 로컬 테스트만으로 모든 케이스 확인이 어렵고, 예외에 대한 대처도 힘들었다.
정리
- 프로젝트를 하며 겪었던 트러블 슈팅이나 어려운 점을 다른 프로젝트에서 겪었을 때 오늘 정리한 것을 바탕으로 조금은 해결에 도움이 되었으면 좋을 거 같다.
'자바 심화 > TIL' 카테고리의 다른 글
모니터링 - Slack Alert 보내기 (1) | 2024.12.20 |
---|---|
모니터링(Monitoring) (0) | 2024.12.19 |
Open Route Service API 사용 (1) | 2024.12.16 |
프로젝트 문제 해결(역직렬화, git 에러) (0) | 2024.12.12 |
DDD(Domain-Driven Design) (1) | 2024.12.09 |