SOA: Service Oriented Architecture 재사용을 통한 비용 절감이 목적이다.
반면 MSA는 서비스 간의 결합도를 낮추어 변화에 능동적으로 대응하는 것이다.
즉, MSA 는 서비스 공유를 최소한으로 낮추는 것이고
SOA는 서비스 공유를 효율적으로 최대화 시키는 것이다.
SOA
공통의 서비스를 *ESB(Enterprise Service Bus)에 모아 사업 측면에서 공통 서비스 형식으로 서비스를 제공하는 것.
ESB:복잡한 아키텍처에 대한 기본 서비스를 제공하기 위함, 인프라 소프트웨어
MSA
각 독립된 서비스가 노출된 REST API를 사용
DB 공유
상단 그림중 오른쪽 그림이 msa개발 아키텍쳐이다.
Customer, Order, Shopping Cart 각각 다른 언어로 사용이 되었고 다른 db를 사용하고 있다.
눈에 띄는 것은 저 KAFKA인데 바로 DB간의 동기화 역할을 맡고있다.
예를 들어 Customer 에서 DB 정보를 kafka에 넘겨줄 경우 Customer 는 상황을 넘기는 것만 알고
kafka는 해당 리소스를 요청하는 곳에 넘겨주는 일을 할 뿐이다.
그에 비해 왼쪽그림 soa는
ESB에 분할이 되어있지 않고 모여있다. 또한 Database 를 보면 shared Database라는 단어를 볼 수 있을것이다.
MSA Architecture
soa의 윤곽을 어느 정도 알았으니 msa에 조금더 집중해 보려고 한다. 다들 msa를 검색하면
이런 그림을 많이 봤을것 같다.
조금 어렵게 보이겠지만 한번 뜯어보고자 한다.
1. 클라이언트 / 또 다른 서비스들
그림의 왼쪽을 보면 Mobile App, Browser App, Other Services 이 존재 하고 이들 모두가
External Gateway로 향하고 API Gateway를 통해서 서비스에 진입을 하게 된다.
이후 API Gateway에서는 Service Router를 통해 해당 요청을 어떤 서비스로 보내야할지 묻게 되고
Service Discovery에서 확인을 하게된다.
Service Discovery에서 확인된 해당 요청이 가야할 서비스를 알게 되었다면 Load Balancing을 통해
A/B Instance (1~n) 로 보내지게 되는데 바로 저 진한남색 칸이 MicroService 이다.
2. Service Dev and Ops
편하게 관리자 정도로 생각하면 될 것같다. CI/CD를 통한 무중단 배포에 관련되어있다.
3. Backing Services
Persistence는 다양한 스토리지들이 모여있는 것이고 MOM는 kafka와 같이 메세징 서비스를 의미한다.
4. Service Mesh
서비스들간의 내부 통신의 역할을 가진다.
Control Plane을 보면 서비스 매시를 더 자세히 들여다 볼수 있는데
Config설정과 라우팅, 인증, 설정 정보, 로드 밸런싱, 탄력성 등의 역할을 하여
안정적이고 효율적인 서비스를 지원 한다.
MSA 의 기반기술
API Gateway 기본 예제(.yml 로 설정) (0) | 2022.08.30 |
---|---|
API GateWay (0) | 2022.08.29 |
[Eureka] 기본 예제 (0) | 2022.08.24 |
MSA / Cloud Native 에 관한 설명 (0) | 2022.08.22 |
MSA [Micro Service Architecture] (0) | 2022.08.12 |
댓글 영역