마이크로 서비스 keyword

bo-yoon·2021년 10월 16일
0

msa

목록 보기
1/7

"마이크로서비스 패턴"과 "도메인 주도 설계로 시작하는 마이크로서비스 개발"을 읽고 키워드를 정리해놓은 글입니다

마이크로서비스

정의

  • 경계 컨텍스트(bounded context) 가 있는, 느슨하게 결합된 엘리먼트로 구성된 서비스 지향 아키텍처

특징

1) 모듈성 : API 라는 경계를 가지고 있어 서로 다른 서비스가 API를 통해서만 통신. 느슨한 결합
2) 서비스마다 디비 분리
3) dumb pipe( rest, gRCP ) 같은 가벼운 프로토콜 위주의 통신


장점

1) 지속적인 전달/배포
- 테스트성 : 자동화 테스트가 꼭 필요
- 배포성 : 개발자가 자신이 담당한 서비스 자율적으로 배포
- 자율성, 느슨한 결합 : 다른 팀과 독립적으로 개발가능

2) 서비스 규모가 작아 관리가 쉬움
3) 독립적 배포
4) 결함 격리가 잘됨
* 한 서비스에 메모리 누수 발생시, 다른 서비스는 메모리 누수아님

5) 새로운 기술 도입이 쉬움


단점

1) 복잡함
2) 도입 시점, 경우 설정의 어려움
3) 분산 시스템 자체의 단점. 복잡, 지연시간, 설계


확장 큐브

  • 3차원 확장 모델. 애플리케이션을 확장하는 세 가지 방법을 정의
  • x축 확장. 부하 분산기가 동일한 다중 인스턴스에 들어온 요청을 골고루 부하 분산
  • z축 확장. 라우터가 요청 속성에 따라 요청 라우팅
  • y축 확장. 애플리케이션 기능을 분해하여 기능에 따라 서비스로 부하 분산

패턴

  • 패턴이란? 특정 상황에서 발생한 문제에 대한 재사용 가능한 해법

  • 패턴언어란? 특정 영역 내부에서 문제를 해결하는 연관된 패턴의 집합

  • 패턴의 구조
    : 패턴 적용 결과
    1) 강제 조항 : forces
    - 문제를 해결하기 위해 반드시 처리해야할 이슈
    2) 결과 맥락 : resulting context
    - 3 부분(장점, 단점, 이슈) 으로 기제
    3)연관 패턴: related patterns
    : 한 패턴과 다른 패턴의 관계 기술
    (1) 선행자 : 이 패턴을 필요하게 만든 선행 패턴
    (2) 후행자 : 이 패턴으로 야기된 이슈를 해결하는 패턴
    (3) 대안 : 이 패턴의 대체 솔루션을 제공하는 패턴
    (4) 일반화 : 문제를 해결하는 일반적인 솔루션에 해당하는 패턴
    (5) 세분화 : 특정 패턴을 더 세부적으로 나타난 형태

     

마이크로 서비스 아키텍처 패턴 언어

  • msa에 유용한 패턴 모음
  • 3개층으로 분리
    * 인프라 패턴 : 개발 밖 인프라영역
    • 애플리케이션 인프라 : 개발에 영향 인프라영역
    • 애플리케이션 패턴 : 개발 중 문제

분해 패턴

: 애플리케이션을 여러 서비스로 분해하는 패턴

1) 비즈니스 능력에 따라 서비스 분해
2) DDD 하위 도메인에 따라 서비스 구성 분해


통신 패턴

: 프로세스 간 통신(IPC) 패턴

5가지 그룹으로 정리
1) 통신 스타일 : 어떤 종류 IPC?
2) 디스커버리 : 서비스 클라이언트는 예를 들어 http 요청을 할 때 서비스 인스턴스의 IP 주소를 어떻게 가져오는가?
3) 신뢰성 : 서비스 불능시 서비스 간 통신은 어떻게 보장되는가?


서비스 디스커버리 패턴

: 클라이언트가 여러 개의 마이크로서비스를 호출하기 위해서 최적의 경로를 찾아주는 라우팅 기능과 적절한 부하 분산을 위한 로드벨런싱 기능 제공

  • 라우팅 = zuul
  • 로드벨런싱 = Ribbon
  • 로드 벨런싱을 위해 벡엔드 서비스의 명칭과 유동적인 ip 정보를 매핑해서 저장하는 저장소 = Eureka = 서비스 레지스트리 패턴

BFF 패턴

: 다양한 클라이언트(모바일, 웹) 에 맞게 백엔드를 두고, api 게이트웨이 등 클라이언트 종류에 따라 최적화된 처리를 수행하게 도와준다.


서킷 브레이커 패턴

: 여러개의 서비스로 구성되어 있는 시스템에서 하나의 서비스에 장애가 발생했을 때, 다른 서비스에 장애 전이를 막기 위해, 일정 이상 실패 횟수 임계치를 초과하여 해당 서비스를 호출하면 다른 유사한 서비스로 우회하여 사용자는 장애를 인지하지 못하게하고 그 동안 문제되는 서비스를 복구하여 대응하는 패턴이다.


서비스 메시

: 네트워크 인프라 계층에서 msa를 위한 기능( 로드벨런싱, 로깅, 메트릭, 트렌젝션, 추적 등)을 제공

참고 : https://velog.io/@borab/Istio

profile
개발 로그 🍎 🍎 🍎

0개의 댓글