MicroService Architecture

Monolithic & Micro

모놀릭 서비스 아키텍처 (Monolithic Service Architecture)

  • 모든 비지니스 로직이 App 안에 포함되어 있는 시스템 구조

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

  • 각각의 비지니스 로직이 분할되어 각자 실행되는 시스템 구조

API Gateway 를 이용한 서비스 외부 노출을 방지하는 MSA

🎛️ MSA란 서비스를 비지니스 경계에 맞게 세분화하고, 서비스 간 통신은 네트워크 호출을 통해 진행하여,

확장가능하며 회복적이며 유연한 어플리케이션을 구성하는 것


왜 ? MSA ?

1. 모놀릭 방식은 소프트웨어 구성요소가 한 프로젝트에 합쳐져있어,
큰 변화에 대한 대응이 어려우며, ‘새로운 기능 추가’ 및 ‘업데이트’에 어려움이 있음

2. 여러 역할을 하는 시스템이 하나의 소프트웨어로 집합,
‘특정 부분에 문제 발생시’ ‘큰 장애’ 로 이어질 수 있음

3. 여러역할을 하는 시스템이 하나의 서버에 올라가 있기에,
Scale-Out 시 필요 없는 자원이 함께 증가

4. 민첩하고 손쉬운 배포 및 업데이트 가능


MSA를 구성하는 Component

$ Config Management (환경변수)

  • 서비스의 리빌드, 리부팅 없이 설정사항을 반영 (Netflix Archaius, k8s ConfigMap)

Service Discovery (서비스의 위치정보 확인)

  • MSA기반 서비스 배포시 서비스 검색 및 등록 (Netflix Eureka, Istio, k8s Service )

API Management (허용된 API 분별)

  • 클라이언트 접근 요청을 일원화 (Netflix Zuul, k8s Ingress)

Centralized Logging

  • 서비스별 로그의 중앙집중화 (EKL Stack)

Distributed Tracing

  • MSA 간의 호출 추적 (Spring Cloud Sleuth, Zipkin)

Centralized Monitorring

  • 서비스별 Metric 정보의 중앙집중화 (Netflix Spectater, Heapster)

Resilience & Fault Tolerance (모든 서비스 Dash Board 집중화)

  • MSA 구조에서 하나의 실패한 서비스가 체인에 연결된 전체 서비스들에 파급효과는 발생시키지 않도록 하기 위한 ‘계단식 실패 방지’ 구조 (Netflix Hystrix, k8s Health Check)

Auto - Scaling & Self Healing

  • 자동 스케일링, 복구 자동화를 통한 서비스 관리 효율화

MSA 기반 기술 및 서비스


Service Mesh Architecture

마이크로 서비스간 통신을 위해 각 서비스를 식별(Discovery)하고, 경로를 파악(Routing) 하며,
로드밸런싱(Load-Balancing)을 하고

전체 서비스의 장애 전파를 차단(Circuit Break)하여, Telemetry와 통합되어 로깅, 모니터링, 트래이싱 기능을 담당하는 Service Mesh에 대한 이해가 필요

Connect

  • 지능형 라우팅을 통해 서비스 / 엔드포인트 간의 트래픽과 API 호출 흐름을 제어함
  • Service Mesh는 서비스간 통신을 추상화하여 안전하고, 빠르고, 신뢰할 수 있게 만드는 아키텍처

Secure

  • Service Mesh를 통해 서비스간 안전한 통신이 가능
  • 커뮤니케이션을 허용하거나 거부하도록 정책을 적용 가능

Monitor

  • Service Mesh를 사용하면 분산 마이크로 서비스 시스템을 쉽게 모니터링 가능해짐
  • k8s 경우 ‘프로메테우스’, ‘Jaeger’와 같은 시각화 도구들과 증식 통합되므로 서비스, 트래픽흐름, API 지연 시간 및 추적 간의 종속성을 발견하고 시각화 할 수 있음

Service Mesh 서비스


MSA의 어려운점

Don’t even consider ‘Micro Service Architecture’ unless you have a system that’s too complex to manage as monolith
- Martin Fowler

왠 만큼 어려운 구조가 아니고서야, 모놀릭 시스템이 더 맞다.

- 시스템 구조가 복잡해야 MSA 생산성이 나옴