Books/스프링으로 하는 마이크로서비스 구축

1. 마이크로서비스 소개

tjddneva 2024. 5. 6. 15:58

마이크로서비스 정의

마이크로서비스 목표

마이크로서비스 아키텍처는 두 가지 목표를 달성하고자 일체형 애플리케이션을 작은 컴포넌트로 나누는 것

  • 빠르게 개발해 지속적으로 배포
  • 수동 혹은 자동으로 쉽게 스케일링

즉, 마이크로서비스는 독자적인 업그레이드와 스케일링이 가능한 독립 소프트웨어 컴포넌트

독립 컴포넌트로 동작하려면, 다음과 같은 기준 유지 필요

  • 아무것도 공유하지 않는 아키텍처를 유지, 데이터베이스의 데이터를 공유하지 않음
  • 명확한 인터페이스를 통해서만 통신
  • 개별적인 런타임 프로세스로 배포
  • 마이크로서비스 인스턴스는 Stateless.

 

마이크로서비스의 문제

  • 동기식 통신을 사용하는 다수의 소형 컴포넌트의 연쇄 장애
  • 다수의 소형컴포넌트를 최신 상태로 유지가 어려움
  • 많은 컴포넌트가 관여하는 요청은 추적이 어려움
  • 컴포넌트 수준의 하드웨어 자우너 사용량 분석의 어려움
  • 다수의 소형 컴포넌트를 수동으로 구성하고 관리하는 데 비용이 많이 들고 오류 발생

 

마이크로서비스 디자인 패턴

  • 서비스 검색
  • 에지 서버
  • 리액티브 마이크로서비스
  • 구성 중앙화
  • 로그 분석 중앙화
  • 분삱 추적
  • 서킷 브레이커
  • 제어 루프
  • 모니터링 및 경고 중앙화

이 디자인 패턴들을 구현한 오픈소스들이 여러가지가 있는데, 그것들을 구성해나가보자..