관리 메뉴

IT.FARMER

Netflix OSS(eureka, Hystrix , zull, ribbon) 본문

Spring/Spring Cloud

Netflix OSS(eureka, Hystrix , zull, ribbon)

아이티.파머 2021. 7. 21. 19:16
반응형

2021.07.21 - [Spring/Spring Cloud] - Spring Cloud
2021.07.21 - [Spring/Spring Cloud] - Netflix OSS 와 Spring Cloud 의 ecosystem
2021.07.21 - [Spring/Spring Cloud] - spring cloud eureka
2021.07.21 - [Spring/Spring Cloud] - Spring Cloud Gateway, Circuit Breaker and Hystrix with in Eureka
2021.07.21 - [Spring/Spring Cloud] - API Gateway (Application Programming Interface)
2021.07.21 - [Spring/Spring Cloud] - Netflix OSS(eureka, Hystrix , zull, ribbon)
2021.07.21 - [Spring/Spring Cloud] - circuit breaker (hystrix and the resilience4j)

 

넷플릭스에서는 자체적으로 MSA 시스템을 구성하는데 있어 라이브러리를 만들었고, 이것을 오픈소스로 공개 하였다. 우리는 이것을 Netflix OSS(open source sofrware)라 칭한다.

Netflix OSS에는 이미 대규모 distributed battle-tested를 거친 컴포넌트들이 존재한다. 제공하는 패턴은 다음과 같다.

  • Service Discovery(Eureka)
  • Circuit Breaker(Hystrix)
  • Intelligent Routing(Zuul)
  • Clint Side Load Blancing (Ribbon)

위에 언급한 패턴을 보면 서비스 디스커버리, 섯킷브레이커 , 인텔리전트 라우팅, 클라이언트 사이드 로드벨런싱이 존재한다.

이중에 Hystrix는 mainterunce 상태로 들어가서 유지보수만 하고 있으며, Resilience4j 로 돌아선듯 하다. 이유는 다른 챕터에서 다시 한번 언급 하도록 하겠다.

간단한 Netflex OSS에 대해 간단하게만 언급한다.

Service Discovery

직역하면 서비스를 발견하는 , 찾아내는것으로 현재 우리서비스가 동작되고 있는 구조를 Eureka Service를 통해 확인 할 수 있다.

이전에 Spring Boot Admin을 사용할때 SERVER ↔ CLIENT구조를 보았듯이 Euraka 또한 SERVER, CLIENT 구조로 메인 서버를 띄어 두고 MSA로 사용할 작은 모듈 혹은 서비스들을 모니터링 한다.

각각 서버의 상태를 Eureka Server 로 복제 함으로, 이는 추후에 서버를 고가용성으로 구성할수 있고 배포할수 있는 토대가 된다. → eureka clustering

Circuit Breaker

서킷 브레이커는 누전차단기를 예를 들어 생각하면 된다. 전기가 과도하게 사용되거나 몰릴경우 누전차단기가 작동됨으로 서버를 안정적으로 운영 할 수 있다. 서킷브레이커를 사용함으로 서버의 회복성과 탄력성을 높일 수 있다.

Intelligent Routing

지능형 라우팅으로 엔진엑스와 같은 프록시 기반의 라우터이다. 엔진엑스를 좀더 입맛에 맞게 수정하면서 사용 할 수 있다.

  • 인증 및 인가
  • 데이터의 변경 (Header 와 Parameter 조작...)

Client side load blancing

클라이언트에서도 로드벨런싱을 사용 할 수 있다. 이는 계속 언급하는 AWS 환경이나, VM 환경에서 K8을 이용하여 사용할시 IP, Domain, PORT 등 서버의 정보가 변하게 되는데 이를 모두 캐치 하거나 관리 할 수 없음으로 유레카라는 디스커버리 서비스를 사용하게 되고 클라이언트API Gateway(back and side load blancer)를 사용하지 않고 Ribbon 이라는 Client side 의 load blancing platform 을 사용할수 있다.

Ribbon은 HTTP 및 TCP 클라이언트의 동작에 대한 많은 제어를 제공하는 클라이언트측 부하 분산 장치 이다.

 

 

https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.2.0.RC2/reference/html/#circuit-breaker-spring-cloud-circuit-breaker-with-hystrix

반응형