본문 바로가기

251017 (금) SpringCloud

@6uiw2025. 10. 17. 22:54

 

학습 목표

Spring Cloud와 Spring Cloud의 주요 기능 학습하기

 

 

 

Spring Cloud란?

 

스프링 부트를 기반으로 마이크로서비스 아키텍처(MSA) 를 쉽게 구축하고 관리하도록 도와주는 툴 모음

 

 

 

주요 기능과 대표 도구들 

  • 서비스 등록 디스커버리: Eureka, Consul, Zookeeper
  • 로드 밸런싱: Ribbon, Spring Cloud LoadBalancer
  • 서킷 브레이커: Hystrix, Resilience4j
  • API 게이트웨이: Zuul, Spring Cloud Gateway
  • 구성 관리: Spring Cloud Config
  • 분산 추적: Spring Cloud Sleuth, Zipkin
  • 메시징: Spring Cloud Stream

서비스 디스커버리

  • 서비스 디스커버리는 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능
  • 각 서비스는 등록 서버에 자신의 위치를 등록하고, 다른 서비스는 이를 조회하여 통신
  • 주요 기능으로는 서비스 등록, 서비스 조회, 헬스 체크 등이 있음

 

로드 밸런싱 (Load Balancing)

  • 요청을 여러 서버에 골고루 나눠주는 역할 = 분산 처리

 

서킷브레이커 (Circuit Breaker)

  • 문제 생긴 서비스로 계속 요청 보내서 전체가 터지는 걸 막는 보호장치 (실패 전파를 막음)

 

API 게이트웨이 (API Gateway)

  • 모든 외부 요청이 먼저 거치는 관문(Gate)
  • 클라이언트와 내부 서비스 사이의 공통 기능 중앙화

 

 


Spring Cloud 주요 모듈

 

서비스 등록 디스커버리

Eureka

넷플릭스가 개발한 서비스 디스커버리 서버로, 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리

 

주요 특징:

  • 서비스 레지스트리: 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소
  • 헬스 체크(Health check): 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성을 보장

 

로드 밸런싱

 

Ribbon

  • 넷플릭스가 개발한 클라이언트 사이드 로드 밸런서로, 서비스 인스턴스 간의 부하를 분산
  • 주요 특징:
    • 서버 리스트 제공자: Eureka로부터 서비스 인스턴스 리스트를 제공받아 로드밸런싱에 사용
    • 로드밸런싱 알고리즘: 라운드 로빈 알고리즘 지원, 가중치 기반 등 다양한 로드 밸런싱 알고리
    • Failover: 요청 실패 시 다른 인스턴스로 자동 전환

 

 

 

 

“Feign Client(페인 클라이언트)”

Spring Cloud에서 제공하는 HTTP 클라이언트로, 다른 마이크로서비스나 외부 API를 쉽게 호출할 수 있도록 도와주는 도구
REST API 호출을 Java 인터페이스처럼 간단하게 사용할 수 있게 해주는 라이브러리

 


 

유레카

  • 넷플릭스가 개발한 서비스 디스커버리 서버로, 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리
  • 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할을 하며, 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성을 보장
  • 여러 인스턴스를 지원하여 고가용성을 유지할 수 있음

 


Eureka의 고가용성 구성

Product App을 많은 사람이 요청하여 서비스가 부하를 견디지 못할 때
여러개의 Product app을 둬서 호출을 분산
→ 이것을 클러스터 구성이라고 함

즉, 여러 개의 서버를 둬서 부하를 분산시키는 것

 

클러스터 구성

  • Eureka 서버의 고가용성을 위해 여러 인스턴스를 구성할 수 있음
  • 다중 인스턴스로 구성하여 고가용성을 유지하며, 각 인스턴스는 서로를 피어로 등록하여 상호 백업
  • Eureka 서버를 다중 인스턴스로 구성할 때 각 서버의 피어 설정을 통해 서로를 인식하고 백업할 수 있음

 


오늘의 코멘트

MSA 공부를 위해 Spring Cloud의 개념에 대해서 알아보았다.
실습도 중요하지만 실습에 앞서 기본 개념을 탄탄히 다지는 것이 중요한 것 같다.
처음 접해보는 개념인 만큼 반복해서 보고 학습해야 겠다.
6uiw
@6uiw :: LOG.INFO("MING's DEVLOG")

개발을 하면서 공부한 기록을 남깁니다

목차