한 해가 지나고 벌써 1월의 3번째 주차가 지났습니다. 이번에 진행했던 백엔드 프로젝트에 대한 내용을 위주로 회고를 진행해 보겠습니다.
두 번째 단위 프로젝트가 마무리되었습니다. 이번 프로젝트는 첫 번째 데이터베이스 프로젝트에 비해 개인적인 아쉬움이 많이 남지만, 그만큼 '어떻게 하면 더 체계적으로 개발할 수 있을까?'에 대해 깊이 고민해 볼 수 있었던 귀중한 시간이었습니다. 이번 프로젝트에서 겪은 시행착오와 배운 점들을 정리해 봅니다.
프로젝트 초기, 어떤 순서로 진행해야 할지에 대한 명확한 가이드라인이 없다 보니 방향을 잡는 데 예상보다 많은 시간을 허비했습니다. 단순히 '코드를 짜는 것'보다 '언제 무엇을 할지'를 정의하는 것이 팀 전체의 생산성에 얼마나 큰 영향을 미치는지 체감했습니다.
설계가 견고하지 않으면 구현 과정에서 반드시 병목 현상이 발생한다는 것을 깨달았습니다. 이번 프로젝트를 통해 복기한 주요 설계 유의점입니다.
이번 프로젝트에서는 CQRS(Command Query Responsibility Segregation) 구조를 채택하여 진행했습니다.
프로젝트의 구조를 MSA(Microservices Architecture)로 결정한 후, 서비스를 어떻게 나눌 것인지가 가장 큰 화두였습니다.
이번 프로젝트에서 기술적으로 가장 이해하기 어려웠던 부분은 API Gateway를 통한 보안 제어였습니다. 특히 기존의 Standalone 방식과 Gateway 방식의 차이점을 이해하고, JWT 토큰을 어떻게 효율적으로 검증할지 고민했습니다.
이와 관련된 Spring Cloud Gateway Security 설정과 독립 실행형 방식과의 비교 분석 내용은 별도의 WIL 포스팅으로 자세히 정리했습니다.
🔗 별도 게시글 링크: MSA 환경에서의 Gateway Security와 JWT 활용법
"설계에 쏟는 1시간이 코딩 10시간을 줄여준다"는 말을 뼈저리게 느낀 프로젝트였습니다. 비록 과정 중 시행착오는 있었지만, CQRS와 MSA라는 거대한 구조를 직접 부딪치며 설계해 본 경험은 앞으로 더 견고한 시스템을 구축하는 데 든든한 밑거름이 될 것입니다.
다음 프로젝트에서는 이번에 느낀 설계 체크리스트를 바탕으로, '코드만 잘 짜는 개발자
'가 아닌 '시스템 전체를 조망할 수 있는 개발자'로 성장해 나가고자 노력하겠습니다.