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

hee·2026년 3월 8일

Architecture

목록 보기
1/2

목적

지금까지 진행했던 프로젝트는 대부분 동아리나 개인 프로젝트 형태였기 때문에, 하나의 애플리케이션 중심으로 개발을 진행하는 경우가 많았다.
하지만 현재 회사에서 진행 중인 프로젝트는 각 기능을 모듈 단위로 분리하여 여러 개의 애플리케이션으로 구성되어 있다.
이러한 구조를 Microservices Architecture(MSA) 라고 한다.
이번 글에서는 MSA의 개념과 특징에 대해 정리해보고자 한다.

MSA 기반 모듈이란?

  • Microservices Architecture
  • 마이크로 서비스 아키텍처로 설계된 독립적인 서비스 단위를 의미
  • 하나의 큰 애플리케이션을 작고 독립적인 서비스들로 쪼개는 아키텍처 방식을 의미함

모놀리식 vs MSA

[모놀리식 - 전통 방식]
┌─────────────────────────┐
│  하나의 큰 애플리케이션      │
│  - 회원 관리              │
│  - 주문 처리              │
│  - 결제 처리              │
│  - 상품 관리              │
└─────────────────────────┘
→ 한 부분만 수정해도 전체 재배포

[MSA - 마이크로서비스]
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│회원 서비스 │  │주문 서비스 │  │결제 서비스 │  │상품 서비스 │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
→ 각각 독립적으로 개발/배포/운영

MSA 특징

각 모듈(서비스)은:

  • 독립적인 데이터베이스 보유
  • 독립적인 배포 가능
  • 다른 언어/기술 사용 가능 (회원은 Java, 결제는 Python 등)
  • API로 통신 (REST API, gRPC 등)
  • 독립적인 확장 (주문 서비스만 서버 추가 가능)

실제 예시

쿠팡 같은 서비스:
- 회원 모듈 (로그인, 회원가입)
- 상품 모듈 (상품 검색, 상세)
- 주문 모듈 (장바구니, 주문)
- 결제 모듈 (결제 처리)
- 배송 모듈 (배송 추적)
- 리뷰 모듈 (상품 리뷰)

→ 각각 별도 팀이 개발/관리

장단점

장점:

  • 부분 수정/배포 용이
  • 장애 격리 (결제 오류가 검색에 영향 X)
  • 기술 선택 자유
  • 팀별 독립 개발

단점:

  • 복잡도 증가
  • 분산 시스템 관리 어려움
  • 서비스 간 통신 오버헤드
    • 처리 시간 및 메모리가 추가적으로 사용되는 현상을 의미
      • 원래 A처리는 3초걸리는데 안정성을 위해 B처리 10초로 진행
      • 이때의 오버헤드는 7초
    • 기존의 단일 Application인 Monolithic과 MSA의 정보 교환 방식은 근본적으로 다름
    • 모놀리식 → 같은 메모리 공간을 쓰기 때문에, 단순히 함수를 호출하고 데이터가 담긴 메모리 주소값만 넘기면 됨.
    • MSA → 서비스가 서로 다른 서버에 존재. 정보를 주려면 데이터를 패킷으로 쪼개서 네트워크(HTTP, gRPC)를 타고 옆 동네로 넘어가야함
      • 추가로 다른 애플리케이션이기때문에 인증 및 인가도 매번 증명해야하며,
      • 데이터 일관성을 유지하는데에 어려움 → 트랜잭션 하나로는 안됨. 2PC, Saga패턴과 같은 복잡한 로직을 사용해야함

0개의 댓글