# Prologue

![](https://1967639135-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LE8_fwLnI2gUuguYTDU%2F-LH6l3KoYH7hthyWqBvj%2F-LH6l4H0EWQvNC1mq4_P%2Fmonolithic-vs-microservice.png?generation=1531286149933496\&alt=media)

## 모놀리틱 애플리케이션의 한계

* 비즈니스 규모 증가 -> 생존을 위해 MSA로 전환
* 우버 사례
  * 배포에 2\~3일, 프론트엔드는 1주일 마다 배포 vs 백엔드 배포 주기
* 빠른 서비스 딜리버리 불가&#x20;

## 마이크로서비스 아키텍처로 전환 시 해결과제

1. 서비스간 커뮤니케이션 방법 변화
2. 솔루션: Netflix Zuul, Feign
3. 클라우드, 컨테이너 활용에 따른 위치 관리, 로드밸런싱 이슈
4. 솔루션: Netflix Eureka, Ribbon
5. 네트워크 문제 등 예상치 못한 에러에 대한 대응 방안
6. 솔루션: Netflix Hystrix, Spring Cloud Sleuth

## Netflix OSS 탄생 배경

* 비즈니스 로직을 작성하는 것 외에 마이크로서비스 아키텍처를 위해 필요한 서비스가 많다!
* 2008년부터 7년간 MSA로 전환 경험, 내부 서비스를 Netflix OSS로 공개

## 오늘의 학습 내용

* Netflix Zuul, Eureka, Ribbon, Hystrix, Feign
* Spring Cloud Sleuth

## Eureka, Zuul, Ribbon Interation

![](https://1967639135-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LE8_fwLnI2gUuguYTDU%2F-LH6l3KoYH7hthyWqBvj%2F-LH6l4H7nk8mdW0QmEi9%2Feureka-zuul-ribbon-interaction.png?generation=1531286149875505\&alt=media)

### Zuul

* Server-side load balancer
* 왜 클라이언트와 백엔드 서비스가 직접 통신하지 않지?

### Eureka

* Service discovery
* 서비스 클라이언트: "현재 실행중인 서비스 인스턴스 정보를 모두 알려줘!"
* Eureka는 어떻게 이 주소를 알 수 있지?

### Ribbon

* Client-side load balancer
* Ribbon이 어떻게 라우팅할 인스턴스를 찾지?
