본문 바로가기

ETC

MSA란?

MSA 정의

Micro Service Architecture의 약어
  • 애플리케이션 개발을 위한 아키텍처
  • 대규모 애플리케이션을 각각 담당 영역을 가진 소규모의 독립적인 구성요소로 구분할 수 있다.
  • 구성 요소는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둔다.

 

MSA 등장배경

Monolithic Architecture의 한계

출처 : Open Legacy / The Pros and Cons of a Monolithic Application Vs. Microservices

1. 부분장애가 서비스의 장애로 확대될 수 있다.

2. 사용되지 않는 다른 모든 서비스가 Scale-out되어야 하기 때문에 부분 Scale-out이 어렵다.

3. 여러 컴포넌트가 하나의 서비스에 강하게 결합되어 있기 때문에 수정에 대한 영향도 파악이 힘들다.

4. 배포시간이 오래 걸린다.

5. Framework에 종속적이다.

 

이러한 이유로 기존의 특정한 물리적인 서버에 서비스를 올리던 on-promise 서버 기반의 Monolithic Architecture에서 클라우드 환경을 이용하여 서버를 구성하는 MicroService Architecture로 많은 서비스들이 전환되고 있다. 

 

MSA 특징

API를 통해서만 상호작용할 수 있다. 실질적인 세부사항인 내부의 구현 로직, 아키텍처와 프로그래밍 언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저히 가려진다. 이러한 이유로 SOA의 특징을 갖고 있다.

 

MSA 장점

1. 각각의 서비스는 모듈화가 되어 있어 RPC 또는 message-driven API 등을 이용하여 통신한다.

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

3. 서비스별로 독립적인 배포가 가능하다.

4. 각각 서비스의 부하에 따라 개별적으로 scale-out이 가능하다.

 

MSA 단점

1. 상대적으로 복잡하다. 개발자는 내부 시스템의 통신을 어떻게 가져가야 할지 정해야한다. 또한, 통신의 장애와 서버의 부하 등이 있을 경우 어떻게 transaction을 유지할지 결정하고 구현해야한다. 

2. 개발 환경과 실제 운영 환경을 동일하게 가져가는 것이 쉽지 않기 때문에 통합 테스트가 어렵다.

 

'ETC' 카테고리의 다른 글

Event Driven Architecture란?  (0) 2023.05.10
[k8s] Kubernetes in Google Cloud(1) - Introduction to Docker  (0) 2023.05.05