이책은 스프링으로 하는 마이크로서비스 구축(스프링 부트와 스프링 클라우드를 이용한 도커/쿠버네티스 마이크로서비스) 책을 읽고 학습한 내용을 정리한 글입니다.
- 고객은 플랫폼의 일부분만을 자체 시스템 환경에 배포할 수 있으며, 명확한 API를 사용해 기존 시스템과 통합할 수 있다.
- 어떤 고객은 플랫폼 기능의 일부를 고객의 시스템 환겨에 있는 기존 구현으로 대체하는 것을 선택할 수도 있는데, 이런 경우에는 기존 기능을 플랫폼 API에 맞추는 작업이 필욯다.
- 플랫폼의 각 컴포넌트는 개별적으로 베포, 업그레이드 할 수 있다. API가 명확하기 때문에 다른 컴포넌트의 수명 주기와 상관없이 컴포넌트를 업그레이드 할 수 있다.
- 명확한 API를 사용하면 플랫폼의 각 컴포넌트를 다른 컴포넌트와 상관없이 여러 서버로 스케일 아웃할 수 있다.
- 고가용성 요구 사항을 충족하거나 많은 양의 요청을 처리하고자 스케일링을 수행하는데, 기술적으로는 자바 EE 웹 컨터이너를 실행하는 여러 서버의 앞단에 로드 밸런서를 설정하는 방식으로 스케일링을 수행한다.
- 마이크로서비스의 필요성은 수직 스케일링의 한계 즉, 가용한 최고 사양의 머신이 가진 성능을 넘어서 스케일링해야 한다는 난제를 마주했기에 등장했다.
- 때문에 일체형 어플리케이션을 독립적으로 출시 및 스케일링할 수 있작은 컴포넌트로 나누는 방식으로 전환하기 시작했다.
- 앞단에 로드 밸런서를 배치하고 여러 개의 소형 서버에 작은 컴포넌트를 배포하면 수평 스케일링이 가능하다
- 클라우드에 배포하는 경우에는 가상 서버를 필요한 만큼 계속해서 추가하면 된다.
💡마이크로 서비스 개발 및 마이크로서비스 기반 아키텍처에 관련된 문제를 해결하는데 도움을 주는 몇가지 오픈 소스 도구와 프레임워크 소개
- 동기식 통신을 사용하는 다수의 소형 컴포넌트는 연쇄 장애를 일으킬 수 있다. 부하가 높은 상황에서 특히더 그렇다.
- 다수의 소형 컴포넌트를 최신 상태로 유지하는 건 어렵다.
- 많은 컴포넌트가 처리에 관여하는 요청은 추적하기 어렵다. 예를 들어, 각 컴포넌트가 로컬에 로그 이벤트를 저장하는 경우에는 근본 원인 분석을 수행하기 어렵다.
- 컴포넌트 수준의 하드웨어 자원 사용량 분석도 어렵다.
- 다수의 소형 컴포넌트를 수동으로 구성하고 관리하는 건 비용이 많이 들고 오류가 발생하기 쉽다.