2024. 5. 8. 20:53ㆍSpring Cloud
들어가며
Spring Cloud를 공부하기 앞서 마이크로서비스에 대한 개념 이해가 필요하다.
Spring Microservice는 Spring Framework에서 마이크로서비스 기반의 어플리케이션들을 관리하는 프레임워크이다.
마이크로서비스는 독립적인 작은 서비스들을 모아서 하나의 큰 서비스를 만드는 디자인 패턴이다.
각각의 서비스들은 각 역할을 수행하며 API를 통해 서로 통신한다.
Microservice란 무엇인가
마이크로서비스란 ‘함께 작동하는 작은 서비스들’이다.
각 서비스들은 다른 방식으로 실행될 수 있고, 다른 비즈니스 도메인을 가지며, 각각 개발되고 각각 배포된다.
다른 언어로 개발될 수 있고, 다른 DB와 통신할 수 있다.
- 서로 HTTP, REST 방식으로 통신한다.
- 각자 배포 가능한 단위로 구성된다.
- 클라우드 기반으로 개발할 수 있다.
Microservice의 특징
- Single Responsibility Principle
- Modelled around Business Domain
- Isolate Failure
- Infrastructure Automation
- Deploy Independently
단일 책임 원칙 (Single Responsibility Principle)
클래스나 모듈은 한 번에 하나의 책임만을 가진다.
동시에 여러 책임을 가지고 작용할 수 없다.
비즈니스 도메인 기반 설계 (Modelled around Business Domain)
마이크로서비스는 기술 스택이나 DB에 종속되지 않는다.
즉 자신의 비즈니스 목적을 달성하기 위한 최적의 방안으로 설계되어야 하지 통신하는 다른 서비스의 구성을 쫓아갈 필요가 없다.
단독 실패 (Isolate Failure)
전체 어플리케이션의 상태는 마이크로서비스의 장애에 영향을 받지 않는다.
마이크로서비스는 언제든 장애가 발생할 수 있지만, 장애를 탐지하고 자동적으로 복구되어야 한다.
인프라 자동화 (Infrastructure Automation)
마이크로서비스를 구성하는 환경을 변수화하여 동일한 설정을 여러 개 마이크로서비스에 적용할 수 있다.
독립적 배포 (Deploy Independently)
마이크로서비스는 플랫폼 독립적이다.
즉 다른 마이크로서비스에 영향을 주지 않고 독립적으로 배포할 수 있다.
Spring Cloud란 무엇인가
Spring Cloud는 Spring Framework로 클라우드 기반 어플리케이션을 제작할 때 사용하는 라이브러리이다.
마이크로서비스 연결, 설정 관리, 서킷 브레이커 패턴 등 클라우드 기반 어플리케이션 관리에 사용되는 구현체들을 제공한다.
Spring, Spring Boot 하위 프레임워크이며 Netfix Eureka, Ribbon, Hystrix, OpenFeign 등 오픈소스 라이브러리나 클라우드 기반 기술들과 호환이 가능하다.
아래와 같은 서비스와 연동해 마이크로서비스 디자인 패턴을 구축할 수 있다.
- Spring Cloud Config : 설정 관리
- Spring Cloud Netflix : 넷플릭스 OSS 라이브러리 사용
- Spring Cloud Sleuth : 분산 추적
- Spring Cloud OpenFeign : 외부 서비스와 REST 통신
- Spring Cloud Circuit Breaker : 서킷 브레이커 패턴 구현
- Spring Cloud Eureka : 서비스 발견
- Spring Cloud Zuul : 게이트웨이 구현
Spring Cloud 사용을 통해 클라우드 기반으로 한 Spring 어플리케이션을 제작할 수 있다.
Resources
'Spring Cloud' 카테고리의 다른 글
Spring Cloud Sleuth이란 무엇인가 (0) | 2024.05.20 |
---|---|
Spring Cloud OpenFeign 사용해보기 (0) | 2024.05.13 |
Spring Cloud Circuit Breaker 사용해보기 (0) | 2024.05.10 |
Spring Cloud Config 사용해보기 (0) | 2024.05.10 |
Spring Cloud Gateway 사용해보기 (0) | 2024.05.10 |