본 포스팅은 인프런
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의를 기반으로 작성된 포스팅입니다.
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - 인프런 | 강의
Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해
www.inflearn.com
2017년까지 새로운 enterprise Java application은
기존의 앱서버에서 배포되지 않을것이다.
즉, 단일 웹서버가 아니라 Cloud 상태로서 분리될 수 있는
마이크로 서비스로 개발될것이다.
Spring Cloud
기존의 모놀리스 방식이 아닌 독립적으로 개발하기 위한 방식인
마이크로 서비스 아키텍처를 지원하기 위한 프레임워크이다.
스프링 클라우드 공식사이트
https://spring.io/projects/spring-cloud
Spring Cloud
Spring Cloud is an umbrella project consisting of independent projects with, in principle, different release cadences. To manage the portfolio a BOM (Bill of Materials) is published with a curated set of dependencies on the individual project. Go here to r
spring.io
Spring Cloud를 사용하기 위해서는
해당 사이트에서 Spring Boot 호환 버전을 확인하여 사용하면 된다.
Spring Cloud를 사용하기 위해서는 Spring Boot가 필수이다.
Spring Cloud
환경 설정 관리, 서비스 검색, 회복성처리, 라우팅, 프록시 등등의
서비스를 사용함에 있어서 필요한 분산 시스템들을 사용하여
빠르게 어플리케이션을 개발하는데 목적을 두고 만들어졌습니다.
Spring Cloud Projects
Spring Cloud 로 Application 구축하기
Spring Cloud를 이용하여 Application을 구축할 때 기본적으로
어떠한 내용으로 구성해야 하는지 어떤 서비스가 사용되는지 정리해보자.
1. Centralized configuration management
- 환경 설정 관리를 위해서는 Spring Cloud Config Server 가 필요하다.
다양한 마이크로 서비스에서 사용할 수 있는 환경설정 정보를
Spring Cloud Config Server를 통해 외부의 저장소에 환경설정 정보를
저장할 수 있다.
ex) Gateway API, Token 등등의 값을 한곳의 저장소에 모아놓고
나머지 마이크로 서비스에서 해당 데이터값을 참조하여 사용한다.
변경된 내용이 생긴다 하더라도 서비스를 배포하는것이 아닌
외부 저장소에 있는 설정정보를 변경하면된다.
-> 유지보수가 월등히 쉬워진다.
2. Location transparency
- 서비스의 등록과 위치정보 확인, 검색과같은 서비스를 위해서는
넷플릭스의 Eureka 등을 사용한다.
3. Load Distribution (Load Balancing)
- 서버에 들어왔던 요청정보를 분산 하기위한 용도로써(로드밸런서)
혹은 Gateway 기능으로써 Ribbon, Spring Cloud Gateway를
사용할 수 있다.
Ribbon은 최신 Spring Cloud 이전까지는 Ribbon과 넷플릭스의 Zuul이 사용되었지만
최신 Spring Cloud 버전에서는 Spring Cloud Gateway를 사용하는것을
권장하고 있다.
이러한 마이크로 서비스 뿐만 아니라 Gateway 서비스도
Naming Server에 위치를 등록하여 사용하면된다.
4. Easier REST Clients
- 각각의 마이크로 서비스간의 통신을 위해서는 REST Template이나
FeignClient 등을 이용하여 데이터 통신을 한다.
5. Visibility and monitoring
- 시각화, 모니터링을 위해서는 분산 추적을 위한 Zipkin이나
외부 모니터링 서비스를 사용한다. 로그 추적등이 가능하다.
6. Fault Tolerance
- 장애가 발생했을 경우 빠르게 복구하기 위해 회복성 패턴이 있는데
넷플릭스의 Hystrix등이 사용된다.
'프로그래밍 공부 > Spring' 카테고리의 다른 글
Spring Cloud Netflix Eureka (0) | 2023.02.02 |
---|---|
AOP와 Spring AOP (0) | 2022.12.29 |
Spring Security란? (0) | 2022.01.19 |
Spring 컴포넌트 스캔, 의존관계 자동주입 (0) | 2021.12.31 |
Spring 싱글톤 컨테이너 (0) | 2021.12.30 |