서론
이번 글에서는 MSA(마이크로 서비스 아키텍처)의 개발, 배포, 운영에 필요한 아키텍처를 쉽게 구성할 수 있도록 지원하는 Spring Boot기반의 프레임 워크인 Spring Cloud에 대해 알아보려한다.
MSA에 대한 전반적인 지식은 알고있다는 전제하에 Spring Cloud를 중점적으로 알아볼 것이다.
Spring Cloud란?
Spring Cloud는 서론에서 말했듯 분산 시스템 개발에 효과적인 기능을 제공해주는 프레임 워크이다.
보통 분산 시스템이라 하면 circuit breakers, routing, proxy, load balancing 등이 있는데, 이때 이 spring cloud를 이용해서 이러한 분산 시스템을 쉽고 빠르게 서비스를 개발할 수 있게 해준다.
마지막으로 MSA를 곁들여 다시 정리하면 다음과 같다.
"Spring Cloud는 MSA를 위한 환경설정, 서비스 검색, 라우팅, 프록시 등 분산 시스템을 빠르게 설정할 수 있는 프레임워크이다."
이제 Spring Cloud의 설정들에 대해 알아보자.
Spring Cloud Config Server란?
Config Server는 remote configuration을 HTTP API로 제공한다.
환경 설정을 독립적으로 관리할 수 있다. 위의 예시 이미지처럼 환경 설정을 Spring Cloud Config Server를 통해 외부 저장소(Git, S3 등)에 저장할 수 있다.
그렇게되면, 각 애플리케이션의 환경 설정을 따로 배포하지 않아도 되는 효과가 있다. 다시 말해 모든 서비스에 공통된 환경 설정을 Spring Cloud Config Server를 통해 한번에 할 수 있는 것이다.
Naming Server (Eureka) & Spring Cloud Gateway란?
외부 또는 내부의 서비스에서 오는 요청이 스프링 클라우드 게이트웨이를 통해서 원하는 서비스를 찾아갈 수 있게 해준다. 여기서 말하는 Naming Server는 찾고자 하는 서비스의 위치를 저장하는 것을 말한다.
따라서 Spring Cloud Gateway를 사용하여 서버의 요청 정보를 분산할 수 있게 해준다.
서비스간 통신 방식?
<해당 내용은 이 후 자세히 다룰 예정이다>
이번 포스팅에서는 MicroService간 통신은 RestTemplate 또는 FeignClient를 사용하면 되는 것 정도로만 알고 넘어가자(현재는 restTemplate이 deprecated가 되어 WebClient를 권장)
모니터링은 어떻게?
<해당 내용은 이 후 자세히 다룰 예정이다>
이것도 종류와 방법이 여럿있지만 이번 글에서는 Zipkin 또는 Netflix API Gateway를 이용하면 된다 정도만 알고가자.
마무리
현재 간단하게 ecommerce서비스를 msa 구조로 개발하며 공부중이다.
이번 포스팅에서는 Spring Cloud에 대해 알아보는 시간을 가졌는데, 이후에는 실제 필자가 msa를 구축하면서 나오는 이슈 또는 중요 내용들은 예제 소스와 추가 내용들을 덧붙여 정리할 생각이다.
이번 글은 여기서 마무리지어보겠다.
'Programming > Spring' 카테고리의 다른 글
JPA Entity의 @Setter를 지양하는 이유에 대해서 (feat. @Builder) (2) | 2022.09.10 |
---|---|
[Spring] 스프링 빈 생명 주기에 대해서 (Spring Bean Life Cycle) (0) | 2022.08.08 |
[Spring Boot] JPA Entity 현재시간(current_timestamp) 적용 방법(@CreationTimestamp/ @UpdateTimestamp) (1) | 2022.06.09 |
[Spring Boot] Jackson을 이용하여 Response값 Filtering 방법 (개념/ 예제) (2) | 2022.06.07 |
[Spring] 의존성 주입(Dependency Injection)이란? (개념/ 예제/ 총 정리) (2) | 2022.05.31 |
댓글