정보관리기술/소프트웨어공학

MSA(Micro Service Architecture)

아이티신비 2024. 1. 8. 08:00

문제1) 최근 여러 기업에서 MSA(Micro Service Architeture) 도입이 활발하게 이루어지고 있다. MSA에 대한 아래의 사항을 설명하시오

 

가. MSA 개념 및 특징과 구현 시 지켜야 할 원칙

나. 모놀리스 아키텍처(Monilith Architecture)와 MSA 비교

다. MSA 구현을 위한 서비스 매쉬(Service Mesh)

 

답)

 

 

1. MSA 개념 및 특징과 구현 시 지켜야 할 원칙

구분
설명
개념
  • 하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 구현하여 조합하는 방법
구현 시
원칙
Strong Module Boundaries
(명확한 모듈 경계)
  • 시스템 변경 사항이 발생하면, 변경할 특정 도메인 내 마이크로서비스 단위만 이해하고 처리
Independent Deployment
(독립적 배포)
  • Loose Coupling 이나 High Cohesion와 같은 의존성 관계를 고려하여 시스템을 설계, 구축함으로 각각의 마이크로서비스를 독립적으로 배포하는 것을 용이
Technology Diversity
(기술 다양성)
  • 마이크로서비스의 독립성이 강화되면서, 마이크로서비스 내의 기술 선택이 자유로움

 

2. 모놀리스 아키텍처(Monolith Architecture)와 MSA 비교

가. 모놀리스와 마이크로서비스 아키텍처의 개념도

모놀리스 아키텍처
마이크로서비스 아키텍처
  • 마이크로서비스 아키텍처의 등장으로 이전까지의 단일 아키텍처를 모놀리스라고 분류

 

나. 모놀리스와 마이크로서비스 아키텍처 개념의 상세 비교

항목
모놀리스 아키텍처
마이크로소프트 아키텍처
개념
하나의 서비스 또는 애플리케이션이 하나의 아키텍처로 구현된 방법
하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 구현하여 조합하는 방법
목적
전체 어플리케이션을 하나의 통합된 패키지로 개발, 배포
어플리케이션을 개별서비스 단위로 개발, 배포
개발
배포, 테스트, 표준화된 방식으로 관리 용이
서비스 단위의 신속한 개발, 확장 용이
특징
  • 서비스 복잡도, 규모 증가에 따른 문제점 증가
  • 배포 시간의 증가
  • 부분적 스케일 아웃의 어려움
  • 안정성의 감소
  • 특정 서비스의 오류가 다른 서비스에 영향을 주지 않음
  • 서비스 별 다른 언어로 개발 가은
  • 분산시스템에 따른 추가적인 복잡도 증가
  • 전체의 서비스를 포함하는지, 최소한의 서비스만 포함하는지의 여부로 구분가능

 

3. MSA 구현을 위한 서비스 매쉬(Service Mesh)

가. 서비스 매쉬의 정의 및 아키텍처

구분
설명
정의
서비스 앞 단에 경량화된 프록시를 배치하여 서비스 간의 통신을 제어하는 아키테처 패턴(Architecture Pattern)
아키텍처

 

나. 서비스 매쉬의 주요 기술요소

구분
기술요소
설명
아키텍처
Control Plane
  • 중앙 집중화된 컨트롤러(Controller)에서 프록시(Proxy)설정 정보 통제
  • 컴포넌트(Component)의 관리 및 모니터링(Monitoring)수행
Data Plane
  • 트래픽(Traffic)을 설정에 따라 프록시를 통해 전달
컴포넌트
Sidecar Proxy
  • 어플리케이션 컨테이너(Container)와 별도로 추가적 사이드카 컨테이너 배포
  • 실제 서비스와 병렬로 구성하여 프록시 호출
Service Discovery
  • 서비스 시작 시 컨트롤러에 제시
  • 트래픽 규칙과 구성을 프록시에 배포
Circuit Breaker
  • Destination Rule 을 정의하여 연결 및 이상 감지
  • 마이크로서비스의 Resiliency 제공
비즈니스
Business Logic
  • 마이크로서비스에서 수행되는 비즈니스 기능 및 데이터 입출력
  • 마이크로서비스(MicroServices)에는 비즈니스 로직(Business Logic)을 중심으로 남게 되어 경량화 구현 가능

 

4. 서비스메시와 API Gateway의 비교

비교
서비스메시
API Gateway
특징
  • 분산형 아키텍처
  • 개별서비스 통신 제어
  • 중앙집중형 아키텍처
  • 내부 서비스 제어 및 보호
네트워크구성
  • 서비스 내 Sidecar 구성(Internal)
  • 독립적인 API Gateway 구성(External)
라우팅 단위
  • 요청 서비스
  • 요청 서버
서비스호출
  • Sidecar Proxy Pattern 사용
  • 호출자 코드 내 공급자 주소 및 Failover 코드 삽입
  • Gateway Proxy Pattern 사용
  • 단일 엔드포인트(Endpoint) 제공
서비스분배
  • Service Registry 서비스 목록 수신
  • Sidecar 에서 로드밸런싱 알고리즘 수행
  • 로드밸런싱(Load Balancing) 구성요소에 요청하여 Redirect
결함허용
  • 개별 서비스에 한정
  • API Gateway 장애 시 전체 서비스 영향(SPOF, Single Point Of Failure)
  • API Gateway 가 구현 편의성 측면에서 유리하나 단일 접점제공(SPOF)으로 장애발생 시 영향 범위가 넓으므로 기업의 아키텍처(Architecture)요구사항을 종합적으로 고려하여 적합한 방식 선택