Netflix는 세계에서 가장 MSA 를 잘하고 시청시간이 1.25억 시간 이상인 넷플릭스의 동영상 트래픽을 100% 처리한다. 이를 동시 최고 트래픽으로 환산하면 초당 수십 테라비트에 달하며, 이에 따라 넷플릭스 오픈 커넥트는 세계에서 가장 많은 트래픽량을 처리하는 네트워크 중 하나이다.
이름만 들어도 아는 유명한 기업들이 MSA를 도입하기 위해 Netflix 오픈소스를 사용하고,
spring camp 2018 세션에서 들었던 11번가 레거시 제거 프로젝트 에서도 Netflix 오픈소스를 사용했다고 들었다.
spring camp 2018 세션에서 들었던 11번가 레거시 제거 프로젝트 에서도 Netflix 오픈소스를 사용했다고 들었다.
내가 회사에서 진행하는 프로젝트에서도 Netflix 오픈소스를 사용해서 이름은 많이 들어봤는데 정확히 하는 역할이 무엇인지 알아보기 위해서 정리!!
일단 Netflix 홈페이지에 있는 설명을 보면.....
대충 해석해 보면
The cloud platform is the foundation and technology stack for the majority of the services within Netflix. The cloud platform consists of cloud services, application libraries and application containers. Specifically, the platform provides service discovery through Eureka, distributed configuration through Archaius, resilent and intelligent inter-process and service communication through Ribbon. To provide reliability beyond single service calls, Hystrix is provided to isolate latency and fault tolerance at runtime. The previous libraries and services can be used with any JVM based container. The platform provides JVM container services through Karyon and Governator and support for non-JVM runtimes via the Prana sidecar. While Prana provides proxy capabilities within an instance, Zuul (which integrates Hystrix, Eureka, and Ribbon as part of its IPC capabilities) provides dyamically scriptable proxying at the edge of the cloud deployment.
클라우드 플랫폼은 Netflix 내의 대부분의 기반과 기술 스택입니다. 특히 플랫폼은 Eureka를 통한 서비스 검색, Archaius를 통한 분산 구성, Ribbon을 통한 탄력적이고 지능적인 프로세스 간 및 서비스 통신을 제공합니다. 단일 서비스 호출 이상의 안정성을 제공하기 위해 Hystrix는 런타임에 대기 시간과 내결함성을 분리하기 위해 제공됩니다. 이전 라이브러리 및 서비스는 모든 JVM 기반 컨테이너에서 사용할 수 있습니다.
Netflix, 클라우드... MSA를 공부 해봤다면 지겹도록 들을 중요 키워드가 몇개 나온다.
나는 이 4개의 키워드를 주제를 중심으로 Netflix에서는 MSA 서비스를 제공할때 이 모듈을 왜 썻는지, 왜 필요한지 파악하고 Spring에서 어떻게 적용되었는지 확인 할 것 이다.
Eureka
Hystrix
Ribbon
Zuul
들어가기에 앞서 spring-cloud-netflix git에 Readme를 보면 다음과 같이 설명 되어있다.
This project provides Netflix OSS integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms. With a few simple annotations you can quickly enable and configure the common patterns inside your application and build large distributed systems with battle-tested Netflix components. The patterns provided include Service Discovery (Eureka), Circuit Breaker (Hystrix), Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon).
설명을 보면 어떤 패턴에 기반한 기술이 적용되있는걸 알 수 있다.
이 패턴이 MSA를 이해하는데 아주 중요한 역할을 한다.
'개발' 카테고리의 다른 글
Netflix MSA Service Discovery pattern (Eureka) - 2 (0) | 2018.09.06 |
---|---|
Circuit Breaker (Hystrix) (0) | 2018.09.05 |
3. Spring batch domain – job, step (0) | 2018.09.04 |
2. Spring Batch Admin (0) | 2018.09.03 |
1. Spring batch 소개. (0) | 2018.08.27 |