반응형

MSA란?

가장 작은 단위의 서비스로 나눈 독립적으로 배포 가능한 서비스들로 구성하는 구조

 

MSA 장점

  • 필요 서비스만 배포 가능
  • 서비스 확장 가능 (Scale-out) + cloud
  • 신기술 적용 용이

MSA 단점

  • 성능하락  - 서비스간 통신에 많은 비용이 들어감
  • 트랜잭션 - MS간의 통신으로 인한 트랜잭션 관리 힘듦

 

Monolithic -> MSA 바꾼 이유

  • 플랫폼 사업 - 필요한 기능만 묶어서 제공  => 다양한 제품군으로 적용 가능
  • 그로 인한 장점은 테스트/배포가 빨라지고, 추후 사업 진행 상황에 따른 scale-out 용이 (=cloud 장점)

 

MSA 구성

  • 가장 작은 / 독립된 MS들로 서비스 구성 => DDD(도메인 주도 설계)
  • MS가 많아서 찾기/관리 어려움
    • API Gateway (Zuul,Kong,nginx) : 외부에서 하나의 Endpoint 알면 접근/관리 가능해서 편리 (+서비스 디스커버리,라우팅, 로드밸런싱, 보안)
      • Non java 서비스는 sidecar 등록(polyglot) => Eureka java 어플
      • Sidecar :  MS의 트래픽을 관리하는 컨테이너를 생성해서 관리
  • MS간의 통신
    • Service Mesh (Istio) : MS 통신 담당,  API GW 같은 역할이지만 MSA 내부에서 접근용도
      • API GW 같은 역할이지만 있는 효과적 : GW 먼저 라우팅(인증,에지 라우팅) -> MESH 라우팅(관찰/제어) 점점 통합되는 ...
      • Backing Service (Kafka, RMQ, AMQ) :  큐를 이용한 비동기 통신
  • 개발
    • CI/CD (Jenkins, Gitlab) : 개발 소스 통합/배포 자동화
    • 컨테이터 환경 (Docker, k8s) : 서비스들을 실행하는 환경을 관리
  • 모니터링 및 서비스 관리
    • Telemetry (Zipkin+ Sleuth, Grafana, Prometheus, EFK, ELK ) : 서비스 모니터링 log/프로세스 추적 가능
반응형

'개발 > MSA' 카테고리의 다른 글

MSA (2) - 아키택쳐 개요 정리  (1) 2021.11.23
MSA(1) - MSA란? (MSA Overview)  (1) 2021.11.22

+ Recent posts