본문 바로가기

서버

MSA

큰 서비스를 하고 있는 업체에서는 MSA를 고려해봐야한다는 말을 들어본 적이 있을 것이다.

오늘은 MSA가 어떤 것인지에 대해 정리해볼려한다.

 

MSA [Micro Service Architecture]

"하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐"

마이크로서비스를 전통적인 monolithic 접근 방식과 구별 짓는 기준은 애플리케이션의 핵심기능을 세분화하는 방식이다.

각 기능을 서비스라 부르며, 독립적으로 구축해 배포가 가능하다. 

 

*Monolithic Architecture - 기존의 시스템은 정보제공을 위한 화면부터 DataBase까지 전체가 하나의 흐름으로 묶여있는 애플리케이션 형태(한 프로젝트에 소프트웨어의 모든 구성요소가  포함된 형태)

 

 

등장배경

Monolithic Architecture의 문제점은 부분 장애가 전체 서비스의 장애로 확대될 수 있으며, 부분적인 서비스 변경이 어려워 수정시 장애의 영향도 파악이 어렵다.(수정을 하더라도 다른 부분에 영향을 주어 오류가 발생할 수 있다.)

서비스를 수정하고 배포하는데 매우 시간이 오래걸리고, 특정 Framework와 언어에 종속적이 될 수밖에 없다.

이런 이유로 Monolithic Architecture의 문제점을 보완하기 위해 MSA가 등장하게 되었다.

 

장점

각각의 서비스가 모듈화 되어있고 이러한 모듈끼리 message-driven API등을 이용해서 통신한다.

개별의 서비스 개발을 빠르게 하며, 유지보수도 쉽게 할 수 있도록한다.

특정 서비스에 대한 확장성이 용이하여 메모리, CPU적으로 상당부분 이득이 된다.

 

 

단점

Monolithic Architecture은 단순한 아키텍쳐인데 비해 MSA는 보다 복잡한 아키텍쳐로, 전체 서비스가 커짐에 따라 그 복잡도가 기하급수적으로 늘어날 수 있다.

 

서비스가 분리되어 있기 때문에 테스트와 트랜잭션의 복잡도가 증가한다.

 

데이터가 여러서비스에 걸쳐 분산되기 때문에 한번에 조회가 어렵고 데이터의 정합성 또한 관리하기 어렵다.

 

 

참고

https://microservices.io/

https://martinfowler.com/articles/microservices.html

'서버' 카테고리의 다른 글