[MSA] Spring Boot 를 사용한 마이크로서비스 구축 및 소개(1부)

min.c00·2023년 4월 2일
0

MSA + Spring Boot

목록 보기
1/7
post-thumbnail

마이크로 서비스 소개


이책은 스프링으로 하는 마이크로서비스 구축(스프링 부트와 스프링 클라우드를 이용한 도커/쿠버네티스 마이크로서비스) 책을 읽고 학습한 내용을 정리한 글입니다.

목차

  1. 마이크로서비스의 장점
  2. 마이크로서비스의 기반 아키텍처
  3. 마이크로서비스의 문제점

1. 마이크로서비스의 장점

  • 고객은 플랫폼의 일부분만을 자체 시스템 환경에 배포할 수 있으며, 명확한 API를 사용해 기존 시스템과 통합할 수 있다.

  • 어떤 고객은 플랫폼 기능의 일부를 고객의 시스템 환겨에 있는 기존 구현으로 대체하는 것을 선택할 수도 있는데, 이런 경우에는 기존 기능을 플랫폼 API에 맞추는 작업이 필욯다.

  • 플랫폼의 각 컴포넌트는 개별적으로 베포, 업그레이드 할 수 있다. API가 명확하기 때문에 다른 컴포넌트의 수명 주기와 상관없이 컴포넌트를 업그레이드 할 수 있다.

  • 명확한 API를 사용하면 플랫폼의 각 컴포넌트를 다른 컴포넌트와 상관없이 여러 서버로 스케일 아웃할 수 있다.
  • 고가용성 요구 사항을 충족하거나 많은 양의 요청을 처리하고자 스케일링을 수행하는데, 기술적으로는 자바 EE 웹 컨터이너를 실행하는 여러 서버의 앞단에 로드 밸런서를 설정하는 방식으로 스케일링을 수행한다.


2. 마이크로서비스의 기반 아키텍처

  • 마이크로서비스의 필요성은 수직 스케일링의 한계 즉, 가용한 최고 사양의 머신이 가진 성능을 넘어서 스케일링해야 한다는 난제를 마주했기에 등장했다.
  • 때문에 일체형 어플리케이션을 독립적으로 출시 및 스케일링할 수 있작은 컴포넌트로 나누는 방식으로 전환하기 시작했다.
  • 앞단에 로드 밸런서를 배치하고 여러 개의 소형 서버에 작은 컴포넌트를 배포하면 수평 스케일링이 가능하다
  • 클라우드에 배포하는 경우에는 가상 서버를 필요한 만큼 계속해서 추가하면 된다.

💡마이크로 서비스 개발 및 마이크로서비스 기반 아키텍처에 관련된 문제를 해결하는데 도움을 주는 몇가지 오픈 소스 도구와 프레임워크 소개

  1. 스프링 클라우드(Spring Cloud)는 동적 서비스 검색과 구성 관리, 분산 추적, 서킷 브레이커 등의 기능을 제공한다.
  1. 도커와 같은 컨테이너 엔진을 사용하면 개발 환경과 상용환경 사이의 간격을 최소화 할 수 있다. 도커를 실행하는 서버에선 자바의 war나 jar와 같은 배포 가능한 런타임 아티팩트(runtime artifact)뿐만 아니라 컨테이너로 실행할 수 있는 이미지로 컴포넌트를 패키징해 실행할 수 있다
  1. 컨테이너를 실행하고 여러 대의 서버로 확장하는 고가용성을 지원하고 컴퓨팅 자원을 추가할수 있도록 컨테이너 오케스트르레이터(container orchestrator)가 필요하다. 쿠버네티스는 사실상의 표준이 됐으며, 오프레미스용으로 사전 패키징된 버전을 사용하거나 주요 클라우드 공급자가 제공하는 관리형 쿠버네티스 서비스를 사용할 수 있게 되었다.
  1. 서비스 메시(service mesh)개념도 중요하다. 서비스 메시를 사용하면 컨테이너 오케스트레이트를 보완해 마이크로서비스의 관리 편의성과 탄력성을 높일 수 있다.

샘플 마이크로서비스 환경


3. 마이크로서비스의 문제점

  1. 동기식 통신을 사용하는 다수의 소형 컴포넌트는 연쇄 장애를 일으킬 수 있다. 부하가 높은 상황에서 특히더 그렇다.
  2. 다수의 소형 컴포넌트를 최신 상태로 유지하는 건 어렵다.
  3. 많은 컴포넌트가 처리에 관여하는 요청은 추적하기 어렵다. 예를 들어, 각 컴포넌트가 로컬에 로그 이벤트를 저장하는 경우에는 근본 원인 분석을 수행하기 어렵다.
  4. 컴포넌트 수준의 하드웨어 자원 사용량 분석도 어렵다.
  5. 다수의 소형 컴포넌트를 수동으로 구성하고 관리하는 건 비용이 많이 들고 오류가 발생하기 쉽다.

0개의 댓글