Skip to content

Latest commit

 

History

History
50 lines (33 loc) · 2.86 KB

Spring-Cloud-Netflix.md

File metadata and controls

50 lines (33 loc) · 2.86 KB

Spring Cloud Netflix

  • Spring Boot 어플리케이션을 위한 Netflix OSS(Open Source Software) 통합을 제공
  • battle-tested를 거친 Netflix component를 통해 대규모 분산 시스템을 구축할 수 있다

제공 패턴

  • Service Discovery (Eureka)
    • 서비스 등록 및 탐색
    • Eureka 인스턴스를 등록할 수 있으며, client는 Spring이 관리하는 빈을 사용하여 탐지할 수 있다.
    • 내장된 Eureka Server는 선언적 java config를 통하여 생성될 수 있다.
  • Circuit Breaker (Hystrix)
    • Hystrix clients는 간단한 어노테이션 기반으로 구축될 수 있다.
    • 선언적 java config로 내장된 Hystrix dashboard
  • 선언적 REST Client (Feign)
    • REST API 호출을 용이하게 해주는 HTTP Client
    • Feign은 JAX-RS 또는 Spring MVC 어노테이션으로(선언적) 인터페이스를 동적으로 구현한다.
  • Client Side Load Balancer (Ribbon)
    • zuul에 내장된 로드 밸런서
  • External Configuration
    • 환경 설정 외부화 담당
    • Spring 환경에서 Archaius로 연결 (Spring Boot를 사용하여 Netflix 구성 요소를 설정 가능)
  • Router and Filter
    • Zuul 필터의 자동 등록 및 Reverse Proxy 생성 설정 접근에 대한 간단한 규칙
  • Proxy & Gateway (Zuul)

img

spring-cloud-netflix 생태계는 다음과 같다.

  • 모든 요청은 Zuul(API-Gateway)에서 처리되며, URI에 맞는 서비스를 라우팅한다. 만약 동일한 서비스가 여러 개의 인스턴스에 있는 경우에는 로드밸런싱을 통해 트래픽을 나눈다. 이는 Zuul에 내장된 Ribbon이 하는 기능이며, Default는 라운드로빈 방식에 의해 분산이 된다.
  • 모든 서비스는 유레카 서버에 등록된다.
  • Eureka는 URL을 해석하여 해당 서비스의 서버 정보를 Zuul에게 전달한다. 그럼 이를 통해서 Zuul이 해당 서버에 라우팅을 한다.
  • 또한 Filter 기능을 통하여 로깅, 인증, 모니터링, CORS 정책 같은 서비스 간의 공통된 기능을 처리할 수 있다.
  • 인스턴스간의 모든 호출(서비스와 서비스, gateway와 서비스 ... 등) 사이에는 Hystrix Circuit breaker 패턴이 적용된다.

출처