MSA, 멀티모듈 차이

하루·2026년 3월 1일

멀티모듈 (Multi-module)

멀티모듈은 하나의 애플리케이션을 여러 모듈로 나누는 구조.
하지만 실행은 여전히 하나의 서버(애플리케이션) 로 동작.

주요 특징

구성 방식 - 하나의 프로젝트를 여러 모듈로 분리
실행 방식 - 하나의 애플리케이션만 실행
배포 방식 - 전체를 함께 빌드 및 배포
통신 방식 - 모듈 간 직접 메서드 호출
의존 관계 - Gradle / Maven으로 모듈 간 의존성 설정
데이터베이스 - 보통 하나의 DB 사용
유지보수 - 한 프로젝트 안에 있어 관리가 쉬움
대표 기술 - Gradle, Maven
적합한 규모 - 소형 ~ 중형 프로젝트
코드 재사용 - 공통 모듈로 분리하여 재사용 가능

📂 예시 구조
api
core
domain
common

✅ 장점

  • 구조가 단순하다

  • 로컬 개발 및 테스트가 편리하다

  • 코드 관리가 수월하다

  • 초기 설계 비용이 낮다

❌ 단점

  • 서비스 단위 독립 배포 불가

  • 전체를 함께 빌드/배포해야 함

  • 대규모 트래픽 확장에는 한계


마이크로서비스 아키텍처 (MSA)

MSA는 하나의 시스템을 여러 개의 독립적인 서비스로 분리하는 구조.

각 서비스는 독립적인 서버와 데이터베이스를 가지며,
네트워크 통신(REST API, 메시지 큐 등)을 통해 서로 데이터를 주고받는다.

주요 특징

구성 방식 - 여러 개의 독립 서비스로 분리
실행 방식 - 서비스별 개별 애플리케이션 실행
배포 방식 - 서비스 단위로 독립 배포 가능
통신 방식 - REST API, 메시지 큐 등 네트워크 통신
의존 관계 - 서비스 간 느슨한 결합 (Loose Coupling)
데이터베이스 - 서비스별 개별 DB 사용
유지보수 - 분산 관리로 복잡성 증가
대표 기술 - Spring Cloud, Docker, Kubernetes, Eureka, Gateway
적합한 규모 - 중대형 시스템, 대규모 트래픽
코드 재사용 - 공통 기능은 별도 공통 서비스로 구성

📂 예시 구조
user-service
order-service
product-service

✅ 장점

  • 서비스 단위 독립 배포 가능

  • 특정 서비스만 개별 확장 가능

  • 장애 격리 가능

  • 기술 스택을 서비스별로 다르게 선택 가능

❌ 단점

  • 네트워크 통신 비용 발생

  • 인프라 관리 복잡

  • 모니터링 및 트랜잭션 관리 어려움

  • 초기 설계 비용이 높음

비교

멀티모듈

  1. 서버 1개
  2. DB 보통 1개
  3. 전체 배포
  4. 내부 메서드 호출
  5. 복잡도 낮음
  6. 확장성 제한적

MSA

  1. 서버 여러개
  2. 서비스별 개별 DB
  3. 서비스별 배포
  4. 네트워크 통신
  5. 복잡도 높음
  6. 확장성 높음
    🎯 결론
    ✔ 멀티모듈

하나의 애플리케이션 안에서 기능을 모듈로 분리한 구조.
유지보수 및 코드 관리에 유리하며, 서버는 하나만 실행.

0개의 댓글