MSA 개념

MSA 개념

Microservice는 독립적으로 디플로이 / 확장 될 수 있는 서비스들을 조합하여 large 어플리케이션을 구성하는 아키텍쳐 패턴이다.

일반적으로 Service Discovery, API Gateway, Orchestration, 등의 서비스들의 조합으로 이루어져있다.

마이크로서비스 아키텍처의 목표는 하나의 기능을 수행하는 작은 애플리케이션의 집합을 구축하고 각각의 마이크로서비스를 자율적이며 독립적으로 실행 가능하게 하는 것이다.

Monlithic 아키텍처의 문제점

  1. 일부 모듈의 변경사항 때문에 전체 어플리케이션 개발/운영 프로세스와 패키징에 영향을 준다.
  2. 모듈별 특성에 맞는 신기술 또는 구조를 적용하기 어렵다.
  3. 모듈별 확장이 어렵다.

MSA의 특징

  1. 어플리케이션 로직을 각자 책임이 명확한 작은 컴포넌트들로 분해하고 이들을 조합해서 솔루션을 제공한다.
  2. 각 컴포넌트는 작은 책임 영역을 담당하고 완전히 상호 독립적으로 배포된다.
  3. 마이크로서비스는 몇가지 기본 원칙에 기반을 두며, 서비스 소비자와 서비스 제공자 사이의 데이터 교환을 위해 HTTP와 JSON 같은 경량 통신 프로토콜을 사용한다.
  4. 어플리케이션은 항상 기술 중립적 프로토콜을 사용해 통신하므로 서비스 구현 기술과는 무관하다. 따라서 마이크로서비스 기반의 어플리케이션을 다양한 언어와 기술로 구축할 수 있다는 것을 의미한다.

MSA VS Monlithic

mono_arch [모놀리스]

msa_arch [마이크로서비스]

1
2
3
4
마이크로서비스의 프론트엔드와 클라이언트 측 부분은 전형적인 프론트엔드 애플리케이션이 아니라 정적인 엔드포인트로 접근할 수 이쓴 API다. 잘 설계된 마이크로서비스 API는 해당 마이크로서비스 API 엔드포인트로 요청을 보내면 마이크로서비스 간에 쉽게 효과적으로 통신할 수 있게 한다.

마이크로서비스 엔드포인트의 유형이 모두 동일해야 한다. 마이크로서비스 API 엔드포인트의 가장 일반적인 두 가지 유형은 REST와 아파치의 Thrift 다. 두 가지 엔드포인트 유형을 모두 사용하는 마이크로서비스를 본 적이 있짐나 매우 드물고 모니터링이 꽤 복잡하기 때문에 특별히 추천하지 않는다.
- [마이크로서비스 구축과 운영] 중 - 

MSA 아키텍처

msa_ac

  1. API Gateway는 API를 통해 접근하는 모든 서비스들에게 Pollcy Management, Consumer Identify Provider 등을 제공한다.

    일반적으로는 사용자가 접근하면 인증을 처리하는 역할 및 원하는 서비스로 바인딩하는 역할을 수행한다.

    API Gateway == External Gateway

  2. Service Mesh는 API의 유입을 통제하는 중요한 기능이라 할 수 있다.

order_system_msa_architecture

  • 사용자 서비스는 REST API를 이용해서 주문 서비스를 활용하며 API Gateway를 통해 정보를 웹브라우저 화면에 표시하거나 모바일 클라이언트에 데이터를 제공한다.
  • 서비스별로 별도의 데이터베이스를 사용 가능하다.

비지니스 도메인

domain


출처

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 - 마이크로서비스 구축 및 운영]_수잔 파울러