[CS] MSA(Micro Service Architecture)

박현우·2022년 1월 16일
0

CS

목록 보기
20/20

MSA(Micro Service Architecture)란?

  • 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법입니다.

  • 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크

  • 각 컴포넌트가 독립적으로 기능하기 때문에 해당 기능이 마비되더라도, 전체적인 서비스에 영향을 주지 않습니다.


vs Monolithic

  • 모놀리틱이란, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태입니다.
  • 소규모 프로젝트라면 모놀리틱 방식을 채택하는 것이 이상적이지만, 수백명 이상의 개발자가 투입되는 대규모 프로젝트라면 단점이 뚜렷하게 보입니다.

MSA의 장/단

장점

  • 각각의 서비스는 모듈화가 되어있으며 이러한 모듈까리는 RPC 또는 message-driven API등을 이용하여 통신한다. 이러한 MSA는 각각 개별의 서비스 개발을 빠르게 하며, 유지보수도 쉽게할 수 있도록 한다.

  • 서비스별 개별 배포가 가능하다.

  • 독립되어 있기 때문에 기능별 Scale Out이 가능하다.

  • 한 서비스가 마비되더라도, 전체적인 서비스에 영향을 주지 않는다.

  • 팀 단위로 적절한 수준에서 기술 스택을 다르게 가져갈 수 있다.

단점

  • 성능 - 서비스 간 호출 시 API를 사용하기 때문에, 통신 비용이나, Latency가 그만큼 늘어나게 됩니다.
  • 테스트 / 트랜잭션 - 서비스가 분리되어 있기 때문에 테스트와 트랜잭션의 복잡도가 증가하고, 많은 자원을 필요로 합니다.
  • 데이터 관리 - 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회하기 어렵고, 데이터의 정합성 또한 관리하기 어렵습니다.

0개의 댓글