MSA
- 하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 나누는 것 ▶️ 변경과 조합이 가능한 아키텍처
- 독립적으로 개발, 배포, 운영, 서비스가 가능
모놀리식(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)
'IT > CS' 카테고리의 다른 글
[DB] 데이터 모델링의 이해 - 논리 모델링 절차 (0) | 2022.04.13 |
---|---|
[JavaScript] 자바스크립트 비동기적 프로그래밍 (0) | 2021.12.07 |
[Java] Lambda expression (0) | 2021.09.28 |
[JavaScript] jQuery (0) | 2021.08.22 |
[JavaScript] 배열 및 함수 (0) | 2021.08.20 |