이런 분이 읽으면 좋습니다
요약: “마이크로서비스 = 현대적, 모놀리스 = 구식”이라는 공식은 2026년에 완전히 무너졌다. 15인 이하 팀에서 마이크로서비스는 순 생산성 손실이다. 모듈러 모놀리스로 시작하고, 모듈 경계가 충분히 검증된 뒤에 필요한 부분만 서비스로 추출하는 것이 가장 안전한 경로다.
이 글은 새 프로젝트의 아키텍처를 결정하는 CTO·시니어 개발자를 위해 썼다.
핵심 트레이드오프
| 모듈러 모놀리스 | 마이크로서비스 | |
|---|---|---|
| 배포 단위 | 단일 (1 바이너리/컨테이너) | 서비스당 독립 배포 |
| 팀 자율성 | 코드 레벨 모듈 경계 | 서비스 레벨 완전 분리 |
| 인프라 복잡도 | 낮음 (1 CI/CD, 1 DB) | 높음 (서비스당 파이프라인) |
| 독립 스케일링 | 불가 (전체 스케일) | 가능 (서비스별) |
| 장애 격리 | 프로세스 내 전파 위험 | 서비스 경계에서 격리 |
| 적합 팀 규모 | 1~15인 | 15인+ |
| 디버깅 | 스택 트레이스 하나 | 분산 트레이싱 필수 |
왜 스타트업이 마이크로서비스를 후회하는가
마이크로서비스는 코드의 복잡도를 인프라의 복잡도로 이동시킨다. 코드가 간결해지는 대신, 서비스 간 통신·분산 트랜잭션·서비스 디스커버리·분산 트레이싱·서비스별 CI/CD 를 관리해야 한다.
3~5인 팀에서 이 인프라를 관리하면:
- 배포 파이프라인이 서비스 수만큼 늘어난다. 5개 서비스 × 개별 CI/CD = 5배 관리 비용.
- 분산 트레이싱 없이는 디버깅이 불가능하다. Jaeger 나 Datadog APM 을 도입해야 하고, 이것도 비용.
- 서비스 간 API 계약이 깨지면 런타임에 발견된다. 모놀리스에서는 컴파일 에러로 잡히는 것이 마이크로서비스에서는 프로덕션 장애가 된다.
연구에 따르면 10~15인 미만 팀에서 마이크로서비스는 조율 오버헤드로 인해 순 생산성 손실이 발생한다.
모듈러 모놀리스 — 중간 경로
모듈러 모놀리스는 단일 배포 단위 안에서 모듈 경계를 코드 레벨로 강제하는 아키텍처다. 각 모듈은 자기 도메인의 데이터와 로직을 소유하고, 모듈 간 통신은 정의된 인터페이스(public API) 를 통해서만 한다.
핵심 규칙:
- 모듈 간 직접 DB 조회 금지 — 각 모듈이 자기 테이블 소유
- 모듈 간 통신은 인터페이스(이벤트 버스 또는 서비스 계층)로만
- 아키텍처 테스트(ArchUnit, ArchGuard)로 경계 위반을 CI 에서 자동 탐지
Shopify 는 이 패턴으로 수천 명의 엔지니어가 하나의 Rails 모놀리스를 운영한다. 모듈이 충분히 성숙하면 그때 서비스로 추출.
언제 마이크로서비스로 전환하는가
피해야 할 상황
다음에 읽을 글
- REST vs GraphQL vs tRPC: 2026 선택 가이드 — 모듈 간 또는 서비스 간 통신 방식 선택
- AWS vs GCP vs Azure: 2026 스타트업 비용 비교 — 아키텍처 위의 인프라 비용
- Supabase vs PlanetScale vs Neon: SaaS에 맞는 Postgres 선택 — 모놀리스든 서비스든 DB 는 하나 골라야 한다