핵심 요약
당근은 Layered Architecture에서 시작해 Hexagonal Architecture를 거쳐 Clean Architecture와 Monorepo로 아키텍처를 체계적으로 진화시켜 대규모 서비스 확장과 배포 독립성을 달성한 경험을 공유합니다.
주요 경험
- Layered Architecture 도입 후 서비스 성장에 따라 Service 간 강한 결합과 의존성이 증가하여 테스트와 리팩터링이 어려워졌습니다.
- Hexagonal Architecture 도입으로 도메인, Usecase, Adapter로 분리하고 Strangler Fig Pattern과 Feature Toggle로 점진적으로 전환하는 전략을 채택했습니다.
- Money 2.0 이후 도메인 모듈화와 의존성 역전, 배포 독립성, 테스트 용이성을 확보했고, Monorepo 기반의 Scaffolding 및 공통 도구로 개발 속도와 협업 효율성을 크게 개선했습니다.
얻은 인사이트
- 비즈니스 규칙이 구현 기술에 의존하지 않도록 모듈 간 의존성 역전이 유지보수성과 확장성에 큰 도움을 줍니다.
- Monorepo 도입은 One Team 문화 형성과 빠른 피드백 루프를 가능하게 하여 릴리스의 신뢰성과 일관성을 높였습니다.
- 코드 리뷰의 깊이가 늘고 공통 규칙이 확산되며 엔지니어 전원의 기술 수준이 함께 성장하는 환경이 조성되었습니다.

