IT/CS

[Architecture] MSA

Terriermon 2021. 9. 28. 10:47

MSA

- 하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 나누는 것 ▶️ 변경과 조합이 가능한 아키텍처

- 독립적으로 개발, 배포, 운영, 서비스가 가능

모놀리식 vs 마이크로서비스

모놀리식(Monolithic) 아키텍처

- 하나의 프로젝트로 구성, 거대한 덩어리

- 단일 서비스 개발 방식, 단일 패키지 배포

🔴 문제점
- 시스템 복잡, 구조/영향도 파악의 어려움
- 추가/변경 신속 대응 X
- 부분적/일시적 확장이 어려움
- 장애 발생 시 전체 업무로 전파
- 업무별 독립적인 개발/테스트/배포/유지보수 어려움

 

마이크로서비스(Micro Service) 아키텍처

- 독립적이고 단순한 개별 서비스로 전체 서비스 구성

- 단인 애플리케이션을 나누어서 작은 서비스들의 조합으로 구성

🔵 장점
- 독립성 (개발/테스트/배포/운영/유지보수)
- 확장성
- 장애격리
- 개발 주기 단축
- 장애 발생 시 독립적인 서비스에만 영향

 

 

MicroService Architecture

 

 

MSA Inner Architecture

- 독립성, 기만성 확보를 위해 응용 서비스를 분리 설계

- 서비스 정의, DB 구조 설계, API 설계, Layer 설계 등

 

MSA Outer Architecture

6개의 영역으로 분리

1. External Gateway(API Gateway)

- 서버 최앞단에 위치, 외부로부터의 API 요청을 내부 API로 연결 (Routing)

- 사용자 인증(Consumer Identity Provider), 권한 정책관리(Policy Management) 및 API 관리 기능 제공

 

 

2. Service Mesh

- 서비스간 통신

- 내부 서비스간 통신 관리 및 운용을 위한 서비스 제공

 

3. Container Management

- 서비스 실행을 위한 Container 기반 환경

- K8S,EKS, Dokcer 등

 

4. Backing Services

- 애플리케이션이 실행될 때 네트워크를 통해 사용할 수 있는 모든 서비스

- 서비스간 데이터 저장, 비동기 통신, 이벤트 전달 등을 위한 Message Queue, MOM, Persistence 기반 서비스 제공

MSA에서 송신자와 수신자의 직접 통신(강한 결합)을 지양하고 Message Queue로 비동기적 통신을 지향함
why? 장애발생 시 문제 때문
- 강한 결합 구조는 하나의 서비스 장애 발생 시 트랜잭션이 끊어짐 ▶️ 해당 서비스 요청 보존X, 에러 발생
- MSA는 마이크로서비스 오케스트레이션이 진행되면서 새로운 마이크로 서비스를 신규 생성하거나 재생성함

 

5. Telemetry

- 분산된 다수 서비스 실행 상태의 로그 확인 및 추적

- 분석 효율성 확보를 위한 로그 취합/분석 도구

 

6. CI/CD Automation

- 소스 Commit부터 운영 환경 배포까지 자동화된 절차와 도구

- 지속적인 통합(CI), 지속적인 전달(CD), 지속적인 배포(CD)

반응형