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의 트래픽을 관리하는 컨테이너를 생성해서 관리
- API Gateway (Zuul,Kong,nginx) : 외부에서 하나의 Endpoint만 알면 접근/관리 가능해서 편리 (+서비스 디스커버리,라우팅, 로드밸런싱, 보안)
- MS간의 통신
- Service Mesh (Istio) : MS간 통신 담당, API GW와 같은 역할이지만 MSA 내부에서 접근용도
- API GW와 같은 역할이지만 둘 다 있는 게 효과적 : GW에 먼저 라우팅(인증,에지 라우팅) -> MESH 라우팅(관찰/제어) 점점 통합되는 중...
- Backing Service (Kafka, RMQ, AMQ) : 큐를 이용한 비동기 통신
- Service Mesh (Istio) : MS간 통신 담당, API GW와 같은 역할이지만 MSA 내부에서 접근용도
- 개발
- 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 |