MSA 개념
Microservice는 독립적으로 디플로이 / 확장 될 수 있는 서비스들을 조합하여 large 어플리케이션을 구성하는 아키텍쳐 패턴이다.
일반적으로 Service Discovery, API Gateway, Orchestration, 등의 서비스들의 조합으로 이루어져있다.
마이크로서비스 아키텍처의 목표는 하나의 기능을 수행하는 작은 애플리케이션의 집합을 구축하고 각각의 마이크로서비스를 자율적이며 독립적으로 실행 가능하게 하는 것이다.
Monlithic 아키텍처의 문제점
- 일부 모듈의 변경사항 때문에 전체 어플리케이션 개발/운영 프로세스와 패키징에 영향을 준다.
- 모듈별 특성에 맞는 신기술 또는 구조를 적용하기 어렵다.
- 모듈별 확장이 어렵다.
MSA의 특징
- 어플리케이션 로직을 각자 책임이 명확한 작은 컴포넌트들로 분해하고 이들을 조합해서 솔루션을 제공한다.
- 각 컴포넌트는 작은 책임 영역을 담당하고 완전히 상호 독립적으로 배포된다.
- 마이크로서비스는 몇가지 기본 원칙에 기반을 두며, 서비스 소비자와 서비스 제공자 사이의 데이터 교환을 위해 HTTP와 JSON 같은 경량 통신 프로토콜을 사용한다.
- 어플리케이션은 항상 기술 중립적 프로토콜을 사용해 통신하므로 서비스 구현 기술과는 무관하다. 따라서 마이크로서비스 기반의 어플리케이션을 다양한 언어와 기술로 구축할 수 있다는 것을 의미한다.
MSA VS Monlithic
[모놀리스]
[마이크로서비스]
1 |
|
MSA 아키텍처
-
API Gateway는 API를 통해 접근하는 모든 서비스들에게 Pollcy Management, Consumer Identify Provider 등을 제공한다.
일반적으로는 사용자가 접근하면 인증을 처리하는 역할 및 원하는 서비스로 바인딩하는 역할을 수행한다.
API Gateway == External Gateway
-
Service Mesh는 API의 유입을 통제하는 중요한 기능이라 할 수 있다.
- 사용자 서비스는 REST API를 이용해서 주문 서비스를 활용하며 API Gateway를 통해 정보를 웹브라우저 화면에 표시하거나 모바일 클라이언트에 데이터를 제공한다.
- 서비스별로 별도의 데이터베이스를 사용 가능하다.
비지니스 도메인
출처
https://waspro.tistory.com/429
https://waspro.tistory.com/431?category=857035
http://guruble.com/마이크로서비스microservice-아키텍처-그것이-뭣이-중헌디/
https://brunch.co.kr/@yesjun/2
[Production-Ready Microservices - 마이크로서비스 구축 및 운영]_수잔 파울러