본문 바로가기
MSA

1 - MSA 개요

by 젼젼39 2026. 2. 23.

1. 마이크로서비스 아키텍처 (MSA) 개념

  • 정의: 거대한 애플리케이션을 비즈니스 단위의 독립적인 소규모 서비스들로 쪼개어 설계하는 방식
  • 핵심 원리: 각 서비스는 고유한 기능을 수행하며, 개별적으로 개발·배포·확장이 가능한 구조를 가짐
  • 통신 방식: 서비스들이 서로 분리되어 있으므로 주로 REST API(HTTP/HTTPS)나 메시지 브로커(Kafka, RabbitMQ 등)를 통해 데이터를 주고받음
  • 주요 특징:
    • 배포 독립성: 특정 기능 수정 시 전체 시스템을 건드리지 않고 해당 서비스만 업데이트하면 됨
    • 조직 효율성: 서비스별로 전담 팀을 구성하여 의사결정 속도와 개발 민첩성을 높일 수 있음
    • 기술 자율성: 서비스 특성에 따라 자바, 파이썬, Go 등 가장 적합한 언어와 DB를 선택할 수 있음

2. 아키텍처별 상세 비교 및 장단점

2-1) 모놀리틱 아키텍처 (Monolithic Architecture)

  • 특징: 모든 비즈니스 로직이 하나의 코드 베이스와 패키지에 담긴 전통적인 방식
  • 장점 (+):
    • 단순한 구조: 초기 개발 단계에서 설계와 구현이 직관적이고 배포가 간편함
    • 데이터 무결성: 단일 데이터베이스를 사용하므로 트랜잭션 관리와 데이터 일관성 유지가 쉬움
  • 단점 (-):
    • 확장의 한계: 특정 기능에만 부하가 걸려도 전체 애플리케이션의 리소스를 늘려야 하므로 비효율
    • 수정의 리스크: 아주 작은 코드를 고치더라도 전체를 다시 빌드하고 배포해야 하는 부담이 큼
    • 기술 고착화: 한 번 정한 기술 스택을 변경하기 매우 어렵고, 전체 시스템이 특정 라이브러리에 종속됨

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

  • 특징: 비즈니스 기능(Domain)을 중심으로 서비스를 분리하여 운영하는 현대적인 방식
  • 장점 (+):
    • 유연한 확장: 트래픽이 몰리는 특정 서비스(예: 주문, 결제)만 골라서 서버를 증설할 수 있음
    • 빠른 출시: 서비스 단위로 배포가 이루어지므로 지속적 배포(CD)에 최적화되어 있음
    • 장애 격리: 특정 서비스에 장애가 발생해도 전체 시스템이 마비되지 않고 기능별로 방어가 가능함
  • 단점 (-):
    • 설계 복잡도: 서비스 간 통신(Inter-service Communication) 및 분산 트랜잭션 처리가 까다로움
    • 운영 부담: 관리해야 할 서버와 로그, 모니터링 포인트가 늘어나 인프라 관리 비용이 증가함
    • 네트워크 오버헤드: 내부 호출이 네트워크를 거치므로 로컬 호출보다 응답 속도 면에서 지연이 발생함

3. 결론 및 도입 전략

  • 성장 단계별 적용: 프로젝트 초기에는 개발 속도와 비용 절감을 위해 모놀리틱으로 시작하는 것이 유리함
  • 전환 시점: 비즈니스가 성장하여 팀 규모가 커지고, 특정 모듈의 확장성이나 배포 속도가 병목이 될 때 MSA로 점진적으로 전환하는 방향을 권장

'MSA' 카테고리의 다른 글

4 - 로드밸런싱  (0) 2026.02.23
3 - 서비스 디스커버리 (Eureka)  (0) 2026.02.23
2 - Spring Cloud  (0) 2026.02.23