본문 바로가기

Archived(IT)/MSA

마이크로 서비스 패턴 #1 모놀리틱으로부터

키워드 위주의 복습용 정리

 

모놀리식이 꼭 나쁠까?

개발의 편이성(IDE는 단일 App 최적화)

테스트 및 배포 용이성(테스트 과정의 단순화)

확장 용이성(다중 인스턴스)

 

모놀리식이 나빠지는 순간

복잡성의 과부하(대규모 개발 조직에 따른)

개발 속도 저하(테스트 및 배포 과정의 과도화)

확장성의 저하(다양한 리소스)

전달성 및 신기술 도입 어려움

 

확장큐브

애플리케이션을 확장한다는 의미에는 크게 3가지 방향

X축 확장 -> 여러 인스턴스에서 같은 서비스 나눠서 처리(동일 인스턴스의 증가)

Z축 확장 -> 요청의 속성에 따라 서비스 나눠서 처리(고객 아이디 A~H, L~P, R~Z)

Y축 확장 -> 서비스를 나누기(주문 서비스, 결제 서비스, 고객 서비스 등)

 

MSA의 여러 특징

마이크로서비스는 모듈성, 각개의 DB 가 핵심이다.

SOA와 비교하면 서비스 규모와 Bus 구조및 DB 구성에 따른 인프라의 차이점이 존재

(주의점: 각개의 DB가 꼭 물리적으로 DB서버를 운영해야만 하는 것은 아님, 논리적으로도 나눌 수도 있음)

 

장점
  • 크고 복잡한 애플리케이션을 지속적 배포/전달 가능
  • 서비스 규모가 작아서 관리 용이성
  • 서비스 독립적 배포/확장 가능
  • MSA의 아키텍처에 따른 자율적 팀 움직임
  • 결함 격리
  • 신기술 도입 용이성

핵심은 서비스를 나눠서 관리할 수 있다(언어, 환경, 기술 도입, 배포)!

단점

딱 맞는 서비스 찾기 힘듬

분산 시스템의 복잡성(통신, 다중DB 쿼리 등)

공통 기능에 대한 관리

현실적으로 도입 시기에 대한 문제

 

MSA 패턴

강제 조항 : 반드시 해결해야 하는 이슈

결과 맥락 : 패턴 적용에 따른 결과

  • 장점 : (해결된 이슈에 따라) 패턴의 장점
  • 단점 : (미해결 이슈에 따라) 패턴의 단점
  • 이슈 : 패턴에 따른 새로운 이슈

연관 패턴 : 다섯 가지 관계 유형

  • 선행자 : 이 패턴을 필요하게 만든 패턴(모놀리식 패턴)
  • 후행자 : 이 패턴으로 야기된 이슈를 해결하는 패턴
  • 대안 : 이 패턴의 대체 솔루션을 제공하는 패턴
  • 일반화 : 문제를 해결하는 일반적인 솔루션에 해당하는 패턴
  • 세분화 : 특정 패턴을 더 세부적으로 나타낸 형태
MSA 패턴 2

인프라 패턴 : 개발 영역 밖의 인프라 문제 대응

애플리케이션 인프라 : 개발에도 영향을 미치는 인프라 문제 대응

애플리케이션 패턴 : 개발자가 맞닥뜨리는 문제 대응

그 외 MSA와 연관된 패턴(고려해야할 패턴들)

  • 통신 패턴
  • 트랜잭션 로깅을 위한 일관성 패턴
  • 데이터 쿼리 패턴
  • 관측성 패턴
  • 서비스 테스트 자동화 패턴
  • 횡단 관심사 처리 패턴
  • 보안 패턴