본문 바로가기
IT 지식/디자인 패턴

[디자인 패턴] MSA 아키텍처

by 이민우 2021. 5. 17.
728x90
반응형

MSA (Micro Service Architecture, 마이크로 서비스 아키텍처)

 

기존의 아키텍처 스타일은 모노리틱 아키텍처이다. 모노리틱 아키텍처는 모든 기능을 하나의 덩어리로 묶은 아키텍처이다.

 

예를 들어 쇼핑몰을 구축하는 데 다음의 기능 리스트들이 존재한다고 생각해보자.

 

1) 회원 관리

 1-1) 회원 등록

 1-2) 회원 정보 수정

 1-3) 회원 탈퇴

 1-4) 회원 정보 조회

2) 상품 관리

 2-1) 상품 등록

 2-2) 상품 수정

 2-3) 상품 삭제

 2-4) 상품 검색

3) 주문 관리

 3-1) 주문 등록

 3-2) 주문 수정

 3-3) 주문 취소

 3-4) 주문 조회

 

모노리틱 아키텍처는 이러한 기능들을 한 덩어리로 묶는다. 즉, 동일한 개발툴을 사용해 모든 기능을 하나의 어플리케이션으로 구현하고, 각 기능들은 함수로 호출하게 된다.

 

이런 개발 아키텍처는 당연히 편한 점도 있다. 하나의 어플리케이션으로 구축되기 때문에 개발 및 환경설정이 간단하기 때문이다.

 

하지만 기능들이 더 추가된다면? 당연히 여러 문제점들이 발생할 수 있다. 테스트 시간이 길어지고, 유독 한 기능에만 사용자들이 몰려도 전체 시스템을 확장해야만 한다. 또한 한 기능에 사용자들이 몰려 트래픽이 초과하면 모든 시스템이 마비될 수 밖에 없다.

 

 

그래서 등장한 것이 MSA이다. MSA는 이러한 복잡한 웹 시스템에 대응하기 위해 개발된 API 기반의 서비스 지향적 아키텍처 스타일이다. 모노리틱 아키텍처와 달리 기능들을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법이다.

좌 : 모노리틱 / 우 : MSA

 

이런 방식은 여러 가지 장점이 존재한다.

 

1) 부분 확장 가능 및 재사용성 증가

모노리틱과 달리 각 서비스별로 구축이 되어있기 때문에 특정 기능에 트래픽이 몰린다면 그 기능을 확장해주면 된다. 이러한 점 덕분에 한 기능이 마비되어도 다른 기능들은 영향을 받지 않는다.

또한 기능들이 별도로 분리되어 있기에 비슷한 기능이 존재하는 다른 프로젝트에서 재사용이 가능하다.

 

2) 데이터 분리

보다시피 기능 뿐 아니라 DB도 분리되어 데이터가 다른 서비스에 대해 의존성이 없어지게 된다. 이 덕분에 서비스를 독립적으로 개발 및 배포할 수 있게 된다.

 

하지만 이게 마냥 장점만은 아닌게 데이터가 필요하면 API 통신을 통해 가져와야 하고, 이 방식은 속도 저하의 원인이 될 수 있다.

 

3) 대용량 분산 환경에 적합하다.

서술했듯, 각 기능들이 분리되어 있기에 대용량 분산 시스템을 개발하기에 편리하다.

 

728x90
반응형

'IT 지식 > 디자인 패턴' 카테고리의 다른 글

[디자인 패턴] Singleton Pattern  (0) 2021.05.24