MSA란?
MSA (Micro Service Architecture)란 하나의 큰 애플리케이션을 여러개의 작은 서비스로 나누어 개발하는 소프트웨어 아키텍처 스타일이다. 각 마이크로 서비스는 특정 기능을 담당하는 개별적인 애플리케이션으로 독립적으로 배포되고 운영될 수 있다. 이 방식은 기존의 모놀리식 아키텍처와는 대조적이다.
특징
- 독립적인 배포
: 각 서비스를 독립적으로 배포하고 업데이트할 수 있다.
- 다양한 기술 스택
: 서비스 별로 다른 언어 및 데이터베이스를 사용할 수 있다.
- 경량화된 통신
: HTTP/REST API 또는 메세지 브로커를 통해 통신하며 서비스 간 복잡성을 줄인다.
- 장애 격리
: 하나의 서비스 오류가 전체 시스템에 미치는 영향을 줄일 수 있다.
모놀리식 vs MSA 비교
Monolithic Architecture
전통적인 개발 방식으로 모든 기능이 하나의 단일 애플리케이션으로 구축되어 배포되는 구조이다.
장점
- 개발, 배포, 관리가 간단하고 데이터 간의 통신이 빠르며, 전체 애플리케이션을 한 번에 테스트하여 배포할 수 있다.
단점
- 기능 추가 및 변경이 전체 애플리케이션에 영향을 미치며, 부분 수정 시에도 전체 시스템을 다시 배포해야한다.
- 코드 베이스가 커질수록 복잡해지고 유지보수가 어려워질 수 있다.
적용 분야
- 주로 소규모 및 단기 프로젝트 또는 프로토타입 제작에 적합하다.
Microservice Architecture (MSA)
애플리케이션을 여러 개의 독립적인 서비스로 나누어 구축하는 구조이다.
장점
- 서비스 별로 독립적인 개발과 배포가 가능하므로, 특정 기능의 변경이 전체 시스템에 영향을 미치지 않는다.
- 각 서비스 별로 다른 기술 스택을 사용할 수 있어 개발자가 적합한 도구를 선택할 수 있다.
단점
- 서비스 간의 통신 및 데이터 관리를 위한 인프라가 필요하고 시스템 복잡성을 증가시킨다.
- 각 서비스가 독립적으로 동작하기 때문에 전체 시스템의 통합테스트가 어렵고 배포와 모니터링이 복잡해 질 수 있다.
적용 분야
- 주로 대규모 및 복잡한 프로젝트에 적합하고 시스템을 독립적으로 개발하고 확장해야하는 경우에 사용한다.