모놀리식(monolithic) 아키텍처는 애플리케이션을 하나의 통합된 단위로 구축하고, 마이크로서비스(microservices) 아키텍처는 여러 작고 독립적인 서비스로 구축합니다. 각각은 복잡성, 확장성, 배포, 팀 조직 측면에서 상당한 트레이드오프를 갖습니다.
모놀리스 vs 마이크로서비스
모놀리스 → 전체 애플리케이션을 하나의 배포 단위로 (하나의 코드베이스, 하나의 프로세스):
✓ 단순 → 초기에 개발·테스트·배포·디버깅이 쉬움; 분산 복잡성 없음
✗ 대규모에서 → 부분별 독립 확장이 어려움; 큰 코드베이스가 복잡해짐; 모든 것이
한 번에 배포; 버그가 전체에 영향 가능
마이크로서비스 → 여러 작고 독립적인 서비스 (각각 기능 + 그 데이터를 소유):
✓ 독립적 확장, 배포, 팀; 기술 유연성; 장애 격리
✗ 분산 복잡성 → 네트워크 호출, 서비스 간 데이터 일관성, 배포/
운영 복잡성, 서비스 간 디버깅, 더 많은 인프라
핵심 트레이드오프
모놀리스 → 더 단순, 시작이 빠름; 작은 팀/앱에 좋음; 운영 부담 적음
마이크로서비스 → 상당한 복잡성의 대가로 유연성과 독립적 확장/배포
(분산 시스템은 어려움)
→ 마이크로서비스는 조직과 확장 문제를 해결하지만 복잡성을 더함
