오늘은 애플리케이션을 구성하는 방법론인 MSA와 MA에 대해 알아보고, 각각의 특징과 장단점에 대해서 설명드리겠습니다.
대략적인 Architecture image입니다. 사진만 봐도 Monolitic은 한 곳에 뭉쳐져 있고, MSA는 각각 Microservice로 분산되어 있는 것을 육안으로 확인할 수 있습니다.
MSA (Microservice Architecture)
- 소프트웨어 시스템을 여러 작은 독립적인 서비스로 분할하여 개발하고 배포하는 방식
- SOA (Service Oriented Architecture)의 특징을 공통으로 가집니다
- SOA: 대규모 컴퓨터 시스템을 구축할 때의 개념으로 업무상 일 처리에 해당 소프트웨어 기능을 서비스로 판단하고 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 가는 방법론
- 장단점
- 장점
- 각 서비스를 독립된 상호 컴포넌트간의 의존성 없기에 서비스별 소스 코드 수정이 쉽고, 수정한 서비스만 배포가 가능할 뿐만 아니라 배포 시 전체 서비스의 중단이 없습니다.
- 요구사항 처리시에 MA에 비해 손쉽게 처리 가능합니다.
- MA에 비해 각각의 서비스가 약한 결합도를 지니기에 오류가 발생해도 전체 서비스에 영향을 주지 않습니다.
- 단점
- 각 서비스를 독립된 서버에 분할 배치하기 때문에, 중복되는 모듈에 대해서 그만큼 메모리 사용량이 늘어나게 됩니다
- 다른 서비스에 대한 종속성을 가지고 있지만, 분리되어 있기에 통합 테스트에 대한 어려움이 존재할 수 있습니다.
- MA에서는 단일 DB에서 트랜잭션 처리가 수월했지만, MSA에서는 네트워크를 통해 독립적인 서비스가 상호작용하기에 트랜잭션 처리가 어렵습니다.
- 장점
MA (Monolitic Architecture)
- 하나의 애플리케이션 내에 모든 로직이 들어가 있는 형태의 아키텍처
- Tomcat 서버, WAR 파일 내에 한 애플리케이션에 사용자 관리, 상품, 주문관리 등 모든 컴포넌트들이 담겨 있습니다.
- 장단점
- 장점
- 작은 크기의 애플리케이션에는 적합합니다.
- 개발/빌드/배포/테스트가 용이하며 인프라 구조가 단순하여 운영 비용 부담이 없습니다.
- 단점
- 특정 컴포넌트를 수정했을 경우에, 수정된 컴포넌트만 재배포하는 것이 아니라 전체 애플리케이션을 통으로 재배포해야 하므로 잦은 배포가 있는 시스템의 경우 불리합니다.
- 여러 Server로 나누어 일을 처리하기 위한 Scale-out이 어렵습니다.
- 특정 프레임워크, 언어에 종속적일 수 밖에 없습니다.
- 장점
이번에 회사에서 같은 팀 팀원분과 함께하는 사이드 프로젝트에 MSA를 도입하려고 했는데, 도입하기 전에 관련 개념을 MA와 비교하여 정리해 보았습니다.
다음 포스팅에서는 MSA의 핵심 컴포넌트인 API Gateway에 대해서 상세히 기록해 보도록 하겠습니다.
<참고 자료>
https://metanetglobal.com/bbs/board.php?bo_table=tech&wr_id=38
'CS' 카테고리의 다른 글
[CS] HTTP, HTTPS의 개념과 차이점에 대해 알아보자 (0) | 2023.12.01 |
---|---|
[CS] I/O 속도 개선을 위한 ios_base::sync_with_stdio(false), cin.tie(NULL), '\n' (1) | 2023.08.15 |
[CS] 면접을 위한 CS 전공지식 노트 정리(chapter4 데이터베이스) (1) | 2023.06.05 |
[컴퓨터 구조] chapter3 정리(컴퓨터 연산 : 부동소수점) (0) | 2023.05.28 |
[컴퓨터 구조] chapter3 정리 (컴퓨터 연산 : 덧셈, 뺄셈, 곱셈, 나눗셈) (0) | 2023.05.22 |