봄봄.devlog

MSA 본문

Web

MSA

jihyun03 2020. 11. 18. 15:32

1) 개념

 

Micro Service Architecture의 줄임말

 

하나의 앱을 기능 단위로 쪼갠 것을 말합니다.  각 컴포넌트를 서비스라는 개념으로 정의를 하고, 서비스는 데이터에서부터 비즈니스 로직까지 독립적으로 상호 컴포넌트간의 의존성이 없이 개발된 컴포넌트입니다. REST API와 같은 표준 인터페이스로 그 기능을 외부로 제공합니다. 

 

대규모 웹 서비스가 많아짐에 따라 정의된 아키텍처인데, SOA(Service Oriented Architecture / 서비스 지향 아키텍처)에 근간을 두고 있습니다. 

 

 

2) 모놀로식과의 차이점

 

모놀로식 아키텍처는 소프트웨어의 모든 구성요소 하나의 프로젝트에 통합되어 있는 형태입니다. 반면, MSA 같은 경우는 앱을 기능 단위로 쪼개서 독립적으로 서비스 개발을 합니다. 모놀로식 아키텍처를 적용하면 모든 서비스가 하나의 프로젝트에 종속적이기 때문에 부분 장애가 전체 서비스의 장애로 확대될 수 있고, 부분적인 Scale-Out이 어렵습니다. 

 

3) 장점

  • 서비스별로 독립적 배포가 가능하고, 각각 서비스의 부하에 따라 개별적으로 scale-out이 가능합니다.
  • 서비스별로 기술 스택을 다르게 사용할 수 있습니다. 
  • 각각의 서비스가 모듈화되어 있기 때문에 서비스 개발이 빠르고, 유지보수도 쉽게 할 수 있습니다. 

4) 단점

  • 모놀로식에 비해 상대적으로 많이 복잡합니다. 서비스가 모두 분산되어 있기 때문에 개발자는 내부 시스템을 어떻게 가져가야 할 지 정해야 합니다. 
  • 통신의 장애와 서버 부하가 있을 경우 어떻게 트랜잭션을 유지할지 결정하고 구현해야 합니다.
    • 모놀로식 아키텍처에서는 RDBMS를 사용하면서 하나의 어플리케이션 내에서 트랜잭션이 문제가 있으면 쉽게 데이터베이스의 기능을 이용해서 Rollback을 할 수 있었습니다. 여러 개의 데이터베이스를 사용하더라도 분산 트랜잭션을 지원하는 트랜잭션 코디네이터 등을 이용해서 쉽게 구현이 가능했는제, API 기반의 여러 서비스를 하나의 트랜잭션으로 묶는 것은 불가능합니다.
  • 통합 테스트가 어렵습니다. 

'Web' 카테고리의 다른 글

쿠키/세션 방식과 JWT  (0) 2020.11.19
Comments