1. Why MSA in 11st?

2. Project Vine

3. MSA 플랫폼 Solution

4. Java Library Hystrix

5. Netflix OSS(Open Source Software)의 Eureka

6. Netflix OSS(Open Source Software) Ribbon

7. API Gateway

8. Netflix OSS(Open Source Software) Zuul

9. Server to Server 호출 in MSA

1. Why MSA in 11st?

초대형 거대 Monolithic System(Click)

8년 넘게 사용해 온 낙후된 S/W Stack

200만 라인의 공통 모듈

폭증하는 트래픽으로 수년 내에 감당하기 힘들 것으로 예상되는 부하

2. Project Vine(11번가 팀에서 만듦)

2-1) Project Vine

Strangler Application Pattern

Legacy System(Click) 교살 전략

→ 새로운 Application은 도립된 API 서버로 개발

→ Legacy와 함께 운영

2-2) Project Vine Image

Untitled

→ 업무 도메인 별로 서버 분리

→ Legacy 코드에서는 새로운 API 서버들을 호출

→ 기존 코드와 새로운 API 호출은 DB Flag를 통해서 Switchable하게

3. MSA 플랫폼 Solution

3-1) NETFLIX | OSS(Click)

→ 개발자들이 가장 친숙해 하는 환경

Untitled

Untitled

4. Java Library Hystrix(Click)

4-1) Hystrix

Netflix가 만든 Fault Tolerance Library

장애 전파 방지 & Resilience

4-2) Hystrix Java Library

Untitled

4-3) Hystrix의 주요 4가지 기능

4-4) Hystrix Command를 호출할 때 벌어지는 일

4-4)-1. Isolation

→ 두 가지 Isolation 방식을 Circuit Breaker 별로 지정 가능함.

4-4)-2. Circuit breaker(Click)

메소드의 실행 결과 성공 혹은 실패(Exception) 발생 여부를 기록하고 통계 냄.

통계에 따라 Circuit Open 여부를 결정함.

Untitled

Untitled

→ 외부에서 장애가 생기면 같이 장애가 날 확률이 높을 수 있기 때문에

→ 인위적으로 Circuit Breaker Key에 해당하는 값을 같게 해주면

⇒ 두 개의 메소드는 통계를 공유하게 되고, 하나가 차단될 때 나머지도 함께 차단이 됨.

4-4)-3. Fall-back(Click)

실패한 경우 (Exception) 사용자가 제공한 메소드를 대신 실행함.

ex) 상품 추천 서버를 호출했는데 추천 서버가 반응이 없거나 Exception이 난다면

고정된 상품 목록을 대신 보여줌으로써 사용자 불편사항을 최소화 할 수 있음.

Untitled

⇒ Fall-back 잘못 사용하면 비즈니스 로직의 에러나 장애 상황을 감추게 될 수 있음.

4-4)-4. Time out

5. Netflix OSS의 Eureka(Click)

6. Netflix OSS의 Ribbon(Click)

7. API Gateway(Click)

8. Netflix OSS의 Zuul(Click)

9. Server to Server 호출 in MSA