MSA(MicroService Architecture)란?
📌 정의
작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있다.
완전히 독립적으로 배포가 가능하고, 다른 기술 스택이 사용 가능한 단일 사업 영역에 초점을 둔다.
특징
MSA는 API를 통해서만 상호작용할 수 있다. 즉, 마이크로 서비스는 서비스의 end-point를 API 형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화한다. 내부의 구현 로직, 아키텍처와 프로그래밍 언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저하게 가려진다.
따라서 SOA의 특징을 다수 공통으로 가진다.
👍 장점
- 크고 복잡한 애플리케이션을 지속적으로 전달/배포할 수 있다.
- 서비스 규모가 작아 관리하기 쉽다.
- 서비스를 독립적으로 배포/확장할 수 있다.
- 마이크로서비스 아키텍처 덕분에 팀이 자율적으로 움직인다.
- 결함 격리가 잘 된다.
- 새로운 기술을 실험하고 도입하기 쉽다.
👎 단점
- 딱 맞는 서비스를 찾기가 쉽지 않다.
- 분산 시스템은 너무 복잡해서 개발, 테스트, 배포가 어렵다.
- 여러 서비스에 걸친 기능을 배포할 때에는 잘 조정해야한다.
- 마이크로서비스 아키텍처 도입 시점을 결정하기가 어렵다.