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 기반의 서비스 지향적 아키텍처 스타일이다. 모노리틱 아키텍처와 달리 기능들을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법이다.
이런 방식은 여러 가지 장점이 존재한다.
1) 부분 확장 가능 및 재사용성 증가
모노리틱과 달리 각 서비스별로 구축이 되어있기 때문에 특정 기능에 트래픽이 몰린다면 그 기능을 확장해주면 된다. 이러한 점 덕분에 한 기능이 마비되어도 다른 기능들은 영향을 받지 않는다.
또한 기능들이 별도로 분리되어 있기에 비슷한 기능이 존재하는 다른 프로젝트에서 재사용이 가능하다.
2) 데이터 분리
보다시피 기능 뿐 아니라 DB도 분리되어 데이터가 다른 서비스에 대해 의존성이 없어지게 된다. 이 덕분에 서비스를 독립적으로 개발 및 배포할 수 있게 된다.
하지만 이게 마냥 장점만은 아닌게 데이터가 필요하면 API 통신을 통해 가져와야 하고, 이 방식은 속도 저하의 원인이 될 수 있다.
3) 대용량 분산 환경에 적합하다.
서술했듯, 각 기능들이 분리되어 있기에 대용량 분산 시스템을 개발하기에 편리하다.
'IT 지식 > 디자인 패턴' 카테고리의 다른 글
[디자인 패턴] Singleton Pattern (0) | 2021.05.24 |
---|