본문 바로가기
개발관련

MSA란 무엇일까 ?

by 수바니 2024. 8. 1.

MSA란?

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

단일 애플리케이션을 자체 프로세스로 실행되고 경량 매커니즘(주로 HTTP 리소스 API)으로 통신하는 작은 서비스들의 모음으로 개발하는 방식

 

MSA의 전환의 대표적 사례는 넷플릭스와 아마존이 있다.

넷플리스는 원래 DVD대여 업체였다고한다. 그런데 2008년 데이터베이스 손상으로 인해 3일간 회원들에게 DVD발송이 어려워지자 넷플릭스측은 안정적이고 수평으로 확장 가능한 분산시스템으로의 전환이 필요하다는것을 깨닫게 된다.

마이그레이션 완료까지 무려 7년이나 걸렸다고 한다.

 

7년이나 걸릴정도로 오래 전환을 해왔고, 그 과정속에서도 구독자와 월간 시청시간은 무려 1,000배나 증가했다고 한다.

 

그렇다면 과연, MSA의 전환이 왜 필요할까 ?

 

사실 위의 그림처럼 모놀리식으로 관리하기에 특별한 복잡한 시스템을 운영할 상황이 아니라면 굳이 MSA의 전환이 필요하진 않다.

(모놀리식 아키텍쳐 : 하나의 서비스 또는 애플리케이션이 하나의 거대한 아키텍쳐를 가지는 방식)

 

장점

1. 모놀리식과 다르게 독립적으로 배포 가능한 단위로 구성되어있다.

 

2. 개발 언어에 독립적

 

3. 확장성이 좋다.

 

4. 쉬운 유지보수

 

단점

 

1. 상대적인 복잡성을 가진다.

 

2. 트랜잭션 유지의 어려움

 

3. API 관리의 중요성 증가

 

4. 통합테스트가 어렵다.

각 서비스로 나눠져있기 때문에 통합테스트 하기가 어렵다.