MSA란 무엇인가

김지현·2025년 2월 11일

MSA

MSA(Microservices Architecture)란 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일로, 모든 기능이 하나의 애플리케이션 내에 포함되는 모놀리식 아키텍처(Monolithic Architecture)와 반대되는 개념이다. 각 서비스는 특정 비지니스 기능을 수행하며 서로 독립적으로 동작하고 API를 통해 통신한다.

주요 특징

  • 서비스 분리 : 애플리케이션을 여러 개의 독립적인 마이크로 서비스로 분리하며 각 서비스는 특정 기능을 담당
  • 독립성 : 각 서비스는 독립적으로 배포 및 운영이 가능하며 특정 서비스만 개별적으로 확장이 가능하다. 서비스 간의 의존성을 최소화하여 하나의 서비스에 문제가 생겨도 다른 서비스에 영향을 미치지 않는다.
  • 분산 데이터 관리 : 서비스마다 각각의 데이터베이스를 가질 수 있다. 데이터의 일관성을 유지하기 위해 이벤트 기반 아키텍처를 사용할 수 있다.
  • 서비스 간 통신 : 주로 RESTful API, gRPC, 메시지 큐 등을 통해 이루어진다.

구성 요소

  • API Gateway : 클라이언트의 요청을 받아 내부 서비스로 라우팅한다. 인증, 로깅, 로드 밸런싱의 역할을 수행한다.
  • Eureka (Service Discovery) : 각 서비스의 위치를 동적으로 찾도록 도와주는 서비스 레지스트리의 역할을 한다.
  • Config Server : 각 마이크로서비스들의 설정 정보를 중앙 관리한다.
[외부 클라이언트]
       │
       ▼
[ API Gateway ] 
   ┌───┴───┐
   ▼       ▼
[User]  [Order]  [Payment]  ← 마이크로서비스
   ▲       ▲         ▲
   │       │         │
[ Eureka (Service Discovery) ]  ← 서비스 등록 및 검색
   ▲
   │
[ Config Server ]  ← 중앙 구성 관리

장점

  • 독립성 : 특정 서비스만 업데이트 가능하며 각각의 서비스를 독립적으로 개발 할 수 있다.
  • 확장성 : 트래픽이 많은 서비스만 개별적으로 확장 할 수 있어 비용 절감이 가능하다.
  • 장애 격리 : 특정 서비스에 장애가 발생해도 전체 시스템이 다운되지 않는다.

단점

  • 복잡성 : 서비스가 많아질수록 구현, 배포, 모니터링, 로깅이 어렵다. 또한 여러 서비스를 관리하기 위한 추가적인 인프라가 필요하다.
  • 네트워크 지연 : 각 서비스의 호출이 많아지면 성능 저하가 발생할 수 있다.
  • 데이터 일관성 : 각 서비스가 독립된 DB를 가지면 트랜잭션 처리가 어렵다.

MA VS MSA

MA(모놀리식 아키텍처)MSA(마이크로서비스)
구성 방식하나의 큰 애플리케이션여러 개의 작은 서비스
배포 방식전체 서비스 재배포 필요개별 서비스 배포 가능
확장성전체 서비스 확장 필요필요한 서비스만 확장 가능
개발 속도팀 간 의존성 높음독립적인 개발 가능
복잡성비교적 간단서비스 간 통신, 운영 복잡
profile
Server Developer

0개의 댓글