1. 개요

현대 소프트웨어는 서비스 규모와 비즈니스 요구에 따라 다양한 아키텍처 스타일을 채택한다.
그 중 가장 널리 논의되는 두 가지는 Monolithic(모놀리식, 단일체) 아키텍처와 Microservice(마이크로서비스) 아키텍처다.

본 글에서는 두 아키텍처의 정의, 특징, 장단점, 대표 사례와 실제 선택 기준까지 정리한다.


2. Monolithic Architecture (모놀리식 아키텍처)

정의
  • “Monolith” = 하나의 큰 돌(덩어리)
  • 소프트웨어의 모든 기능을 하나의 코드베이스, 하나의 배포 단위로 구현하는 방식
  • 초기 웹서비스/앱 개발에서 가장 흔한 패턴
주요 특징
  • 단일 코드베이스: 모든 기능(인증, DB, API, UI 등)이 한 프로젝트/서버에 있음
  • 하나의 배포: 전체 앱이 한 번에 빌드·배포됨
  • 내부 함수 호출: 컴포넌트 간 통신이 함수 호출/라이브러리 참조로 간단
장점
  • 개발/배포가 단순: 작은 팀, 초기 스타트업에 적합
  • 디버깅/테스트 용이: 모든 로직이 한곳에 있어 파악이 빠름
  • 성능: 모듈 간 통신이 함수 호출로 빠름
  • 관리 도구가 적음: 배포/운영 인프라가 간단
단점
  • 확장성 한계: 서비스가 커질수록 코드/팀/릴리즈 관리가 어려워짐
  • 변경 영향 범위 큼: 일부 기능 변경도 전체 재배포 필요
  • 장애 영향: 한 부분 오류가 전체 서비스 장애로 이어질 수 있음
  • 새로운 기술 도입 난이도: 일부 모듈만 따로 언어나 프레임워크를 바꾸기 힘듦
실제 사례
  • 전통적인 LAMP1 웹서비스, 초기형 스타트업, 예전의 ERP/CRM 시스템
  • Docker의 초기 엔진도 모놀리식 구조(dockerd + 이미지 빌드 + 런 등 모든 기능 결합)

3. Microservice Architecture (마이크로서비스 아키텍처)

정의
  • 애플리케이션을 작고 독립적인 “서비스 단위” 로 분리*
  • 각 서비스는 고유의 책임과 데이터, 실행환경을 가짐
  • 서비스들은 보통 네트워크(API, 메시지 등)로 통신
주요 특징
  • 독립 배포: 각 서비스는 개별적으로 배포/스케일/업데이트 가능
  • 작은 코드베이스: 각 서비스가 작아 관리와 학습이 쉬움
  • 다양한 기술 사용 가능: 서비스별로 다른 언어, 프레임워크, DB 선택 가능
  • 장애 격리: 한 서비스 장애가 전체 시스템에 영향 주지 않음
  • 조직 분리: 기능팀/서비스팀 별도로 운영 가능
장점
  • 확장성: 트래픽 많은 서비스만 선택적 확장 가능
  • 배포 민첩성: 부분적 배포/롤백/업데이트가 쉬움
  • 실험과 변화 용이: 새로운 기술, 언어, DB 적용이 유연
  • 대규모 조직에 적합: 팀 간 독립적 개발/운영
단점
  • 운영 복잡성 증가: 서비스 수가 많아질수록 인프라/네트워크/모니터링 등 관리 부담 증가
  • 통합 테스트 어려움: 서비스 간 통합/시나리오 테스트가 복잡
  • 트랜잭션 관리: 분산 트랜잭션, 데이터 일관성 이슈 발생
  • 서비스 경계 설계의 어려움: 어떻게 분할할지 고민 필요
실제 사례
  • Netflix, 쿠팡, 네이버, 카카오 등 대규모 서비스
  • Kubernetes 기반 클라우드 네이티브 서비스 대부분

4. Monolithic vs Microservice 비교표

구분모놀리식(Monolithic)마이크로서비스(Microservice)
코드베이스하나여러 개(서비스별)
배포 방식전체 한 번에개별 서비스 단위
장애 영향전체 장애일부 서비스 장애로 국한
확장성전체 스케일업/아웃서비스별 개별 확장
기술 다양성제한됨서비스별 자유
운영 복잡도낮음높음
도입 추천 상황작은 팀/프로젝트, 초기 개발대규모 조직, 빈번한 업데이트/확장

5. 언제 어떤 아키텍처를 선택해야 할까?

  • 모놀리식 추천 상황

    • 작은 팀, MVP/프로토타입 단계
    • 빈번한 구조 변경 없이 빠른 결과물이 필요할 때
    • 복잡한 트래픽/스케일링/기술 혼합 요구가 없는 서비스
  • 마이크로서비스 추천 상황

    • 조직·트래픽 규모가 커지고, 서비스별 독립적 배포/확장이 중요할 때
    • 다양한 언어/기술, 잦은 기능 추가·변경이 필요한 경우
    • 장애 격리, DevOps, CI/CD 등 현대적 개발/운영 프로세스 적용 환경

6. 결론

  • 모놀리식과 마이크로서비스는 “정답과 오답”이 아니라, 상황에 따라 맞는 도구 를 고르는 것
  • 모놀리식은 빠른 시작·단순함 이 장점, 마이크로서비스는 확장성·유연성 이 핵심
  • 자신의 프로젝트/조직/비즈니스 요구에 따라 가장 적합한 아키텍처를 선택해야 함

Footnotes

  1. 가장 널리 사용되던 오픈소스 기반 웹 서버 스택. 리눅스, 아파치, MySQL, PHP.