MSA를 선택하였다면 Spring Cloud를 적용하자
Spring Cloud
비즈니스 초기에 마이크로서비스의 개수가 적은 상황이라면 느끼기 힘들 수도 있겠지만 비즈니스가 성장하면서 마이크로서비스의 개수가 증가할수록 관리가 복잡해지고 어려워지는 것을 느낄 수 있을 것이다.
Spring Cloud를 적용하면 이런 문제를 쉽게 해결할 수 있다.
Spring Cloud는 분산 시스템에서 공통적인 패턴(구성 관리, 서비스 검색, 지능형 라우팅, 마이크로 프록시 등 )을 모아 신속하게 구축할 수 있는 도구를 스프링 라이브러리 형태로 제공한다.
따라서 개발자는 분산 시스템에서 필요한 부분들에 대한 부담을 덜고 충실하게 서비스의 기능을 구현하는 것에 충실할 수 있다. 또한 특정 벤더(AWS, Cloud Foundry 등)에 종속적이지 않기 때문에 다양한 분산 환경에서 잘 작동한다.
다음은 Spring 프로젝트팀에서 제공하는 Spring Cloud의 기능목록이다.
Spring Cloud와 함께 Spring Config, RabbitMQ 그리고 Netflix의 오픈소스인 Eureka, Zuul 을 활용하여 이상적인 마이크로서비스의 개발을 도울 수 있다.
Spring Cloud가 적용된 이상적인 마이크로서비스 환경의 구성
Spring Cloud 적용에 사용되는 컴포넌트
Spring Config와 RabbitMQ에 대하여 간단히 설명한 후에Eureka와 Zuul에 대한 내용을 중점적으로 알아볼 것이다.
Spring Config : Spring Boot Application은 application.properties 혹은 application.yml 파일에 환경설정을 저장하고 이 파일의 정보를 읽어 빌드하는데, 이 파일들은 해당 프로젝트와 함께 저장된다.
Spring Cloud Config 서버를 두어 사용하면 모든 Spring Boot Application의 환경설정 파일을 한 곳에 저장시킬 수 있고 해당 서버에 접근하여 환경설정 정보를 가져오도록 할 수 있다.
이렇게 적용하면 모든 Application의 환경설정 정보를 한곳에서 관리가 가능하고 환경설정이 바뀌어도 Application 전체를 다시 빌드하지 않아도 된다.
RabbitMQ : AMQP (Advanced Message Queueing Protocol) 로 만들어져 있으며 Message Queue를 제공한다.
이상적인 마이크로서비스 환경은 마이크로서비스 사이의 통신이 비동기적으로 이루어지는 것인데, RabbitMQ를 사용하면 마이크로 서비스들이 외부의 Queue를 통해 메세지를 주고받도록 함으로써 쉽게 이 부분을 구성할 수 있다.
Eureka : 마이크로서비스들의 정보를 레지스트리에 등록할 수 있도록 하고 마이크로서비스의 동적인 탐색과 로드밸런싱을 제공한다.
Zuul : 모든 마이크로서비스에 대한 요청을 먼저 받아들이고 라우팅하는 프록시 API Gateway 기능을 수행한다.
참조 사이트 : https://lion-king.tistory.com/entry/Spring-Boot-Spring-Cloud-MSA-2-Spring-Cloud%EB%9E%80-%EA%B0%84%EB%9E%B5%ED%95%9C-%EC%86%8C%EA%B0%9C?category=855644
'SPRING > 기본 상식' 카테고리의 다른 글
[SPRING] Zuul이란? (0) | 2021.05.25 |
---|---|
[SPRING] Eureka란? (0) | 2021.05.25 |
[SPRING] Spring Batch - Batch Job에 대해 알아보기 (0) | 2021.05.21 |
[SPRING] 웹 스코프 (0) | 2021.04.28 |
[SPRING] 빈 스코프 (싱글 스코프, 프로토타입 스코프) (0) | 2021.04.28 |