MSA란 무엇인가

김지현·2025년 2월 11일
0

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(마이크로서비스)
구성 방식하나의 큰 애플리케이션여러 개의 작은 서비스
배포 방식전체 서비스 재배포 필요개별 서비스 배포 가능
확장성전체 서비스 확장 필요필요한 서비스만 확장 가능
개발 속도팀 간 의존성 높음독립적인 개발 가능
복잡성비교적 간단서비스 간 통신, 운영 복잡

0개의 댓글

관련 채용 정보