기존 마이크로서비스 아키텍처는 120개 이상의 의존성과 140개 이상의 목적지를 개별 리포지토리에서 관리하는 복잡한 의존성 관리, HTTP 요청에 의존하여 느리고 불안정한 테스트, 그리고 비효율적인 배포로 인해 개발 생산성을 저해했습니다. 테스트는 최대 1시간이 소요되고 잦은 실패로 기술 부채를 심화시켰습니다.
모놀리스 전환 및 해결책
문제 해결을 위해 모든 목적지 코드를 단일 리포지토리와 단일 서비스로 통합하는 모놀리스 아키텍처로 전환했습니다.
-
의존성 통합: 모든 목적지가 단일 버전의 의존성을 사용하도록 통일하여 코드베이스 복잡성을 크게 줄였습니다.
-
테스트 혁신: Traffic Recorder: yakbak 기반으로 테스트 트래픽을 기록하고 재생하여 실제 HTTP 요청 없이 테스트를 수행, 140개 이상 목적지 테스트를 밀리초 단위로 완료 가능하게 했습니다.
-
배포 효율성 증대: 단일 서비스 배포로 공유 라이브러리 변경 시 몇 분 안에 배포가 가능해져 개발자 생산성이 대폭 향상되었습니다.
이점 및 트레이드오프
모놀리스 전환은 개발 생산성 향상과 운영 효율성 개선을 가져왔습니다. 하지만 장애 격리 난이도, 인메모리 캐싱 효율성 저하, 의존성 업데이트 시 다수 목적지에 미치는 영향과 같은 트레이드오프를 수반하며, 이는 통합된 테스트 스위트를 통해 관리하고 있습니다.