SlideShare a Scribd company logo
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Growth
Web UI / Front End API 
Middle Tier 
MySQL 
Data Center
Regional Load Balancers Regional Load Balancers
API or Web Calls 
memcached 
Cassandra 
Web service 
S3 bucket
We’re here to help you get to global scale… 
Apache Licensed Cloud Native OSS 
http://netflix.github.com
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Web App 
Front End 
(REST 
services) 
Micro service Implementation 
Hystrix Call “Auth Service” 
Ribbon REST client 
Eureka 
Server(s) 
App Service 
(auth-service) 
with Eureka 
Fallback 
Implementation Karyon
Karyon Eureka 
Ribbon 
Hystrix
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Hardware Will Fail 
Slowly Changing 
Large Scale 
Speed 
Everything Is Broken 
Rapid Change 
Large Scale 
Everything Works 
Slowly Changing 
Small Scale 
Hardware Will Fail 
Rapid Change 
Small Scale 
Scale
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Regional Load Balancers Regional Load Balancers
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Web App 
Front End 
(REST 
services) 
Micro service Implementation 
Hystrix Call “Auth Service” 
Ribbon REST client 
Eureka 
Server(s) 
App Service 
(auth-service) 
with Eureka 
Fallback 
Implementation Karyon
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Client 
A 
p 
a 
c 
h 
e 
Server (Karyon) 
HTTP Admin Console 
Eureka (Service 
Registry) 
Apache 
Tomcat 
Ribbon 
Load 
Balancing 
Metrics 
(Servo) 
Eureka 
Integration 
Bootstrapping (Governator) 
Metrics (Servo) 
Eureka Integration 
Registration 
Fetch Registry 
H 
T 
T 
P 
C 
L 
I 
E 
N 
T 
H 
y 
s 
t 
r 
i 
x 
EV 
Cac 
h 
e
Client (Ribbon 2.0) Server (Karyon) 
Admin Console 
Eureka (Service 
Registry) 
Ribbon Transport 
Load 
Balancing 
Metrics 
(Servo) 
Eureka 
Integration 
Bootstrapping (Governator) 
Metrics (Servo) 
HTTP 
Eureka Integration 
Registration 
Fetch Registry 
Ribbon 
Hystrix 
EVCache 
Rx 
Ne 
t 
t 
y 
RxNetty 
UDP 
TCP 
WebSockets 
SSE
@ArchaiusBootstrap 
@KaryonBootstrap(name 
= 
"hello-­‐netflix-­‐oss") 
@Modules(include 
= 
{HelloNossApp.KaryonJerseyModuleImpl.class, 
KaryonWebAdminModule.class, 
KaryonEurekaModule.class}) 
public 
final 
class 
HelloNossApp 
{ 
public 
static 
class 
KaryonJerseyModuleImpl 
extends 
KaryonJerseyModule 
{ 
protected 
void 
configure() 
{ 
super.configure(); 
bind(AuthenticationService.class).to(AuthenticationServiceImpl.class); 
} 
public 
int 
serverPort() 
{ 
return 
8888; 
} 
public 
int 
shutdownPort() 
{ 
return 
8899; 
} 
public 
void 
configureInterceptors(GovernatorHttpInterceptorSupport<ByteBuf, 
ByteBuf> 
interceptorSupport) 
{ 
interceptorSupport.forUri("/hello").interceptIn(AuthInterceptor.class); 
} 
} 
}
interface 
@Http(method 
= 
HttpMethod.GET, 
uriTemplate="/users/{userId}/recommendations") 
@Hystrix(fallbackHandler 
= 
RecommendationFallbackHandler.class) 
@EvCache(name 
= 
"movie-­‐rec", 
appName 
= 
"movieService", 
cacheKeyTemplate 
= 
"{userId}") 
recommendationsByUserId @Var "userId" 
MovieService 
movieService 
= 
Ribbon.from(MovieService.class); 
Observable<Recommendations> 
result 
= 
movieService.recommendationsByUserId(“user1”) 
.toObservable();
createHttpResourceGroup "movieService" 
newRequestTemplate "recommendationsByUserId" 
"GET" 
"/users/{userId}/recommendations" 
requestBuilder 
"userId" “user1”
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Regional Load Balancers 
Zuul – Traffic Shaping/Routing 
AZ1 AZ2 AZ3 
Data Data Data 
Geo-located 
Chaos Kong 
Chaos Kong 
Regional Load Balancers 
Zuul – Traffic Shaping/Routing 
AZ1 AZ2 AZ3 
Data Data Data 
Customer 
Device
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
A/B Test 
Engine 
Personalization 
Engine User Info Movie 
Metadata 
Movie 
Ratings 
Similar 
Movies 
API 
Reviews
A/B Test 
Engine 
Personalization 
API 
Similar 
Movies Reviews User 
Info 
Engine User Info Movie 
Metadata 
Movie 
Ratings
A/B Test 
Engine 
Personalization 
Engine 
API 
User 
Movie 
Movie 
Similar 
Info 
Metadata 
Ratings 
Movies Reviews
User 
Info 
API 
A/B Test 
Engine 
Personalization 
Engine 
Movie 
Metadata 
Movie 
Ratings 
Similar 
Movies Reviews
A/B Test 
Engine 
Personalization 
Engine 
API 
User 
Movie 
Movie 
Similar 
Info 
Metadata 
Ratings 
Movies Reviews
Dev309  from asgard to zuul - netflix oss-final
User Info 
API 
A/B Test 
Engine 
Personalization 
Engine 
Movie 
Metadata 
Movie 
Ratings 
Similar 
Movies Reviews
A/B Test 
Engine 
Personalization 
Engine 
API 
User 
Movie 
Movie 
Similar 
Info 
Metadata 
Ratings 
Movies Reviews
Personaliza 
tion Engine 
User 
Info 
Movie 
Metadata 
Movie 
Ratings 
Similar 
Movies 
API 
Reviews A/B Test 
Engine
Personaliza 
tion Engine 
User 
Info 
Movie 
Metadata 
Movie 
Ratings 
Similar 
Movies 
API 
Reviews A/B Test 
Engine 
Fallback
Personaliza 
tion Engine 
User 
Info 
Movie 
Metadata 
Movie 
Ratings 
Similar 
Movies 
API 
Reviews A/B Test 
Engine 
Fallback
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
+ 
Scumblr Sketchy
Dev309  from asgard to zuul - netflix oss-final
‒ 
‒ 
‒ 
‒ 
‒ 
‒ 
‒
Dev309  from asgard to zuul - netflix oss-final
http://netflix.github.com
https://github.com/Answers4AWS/netflixoss-ansible/wiki/AMIs-for-NetflixOSS 
http://answersforaws.com/resources/netflixoss/cloudformation/
https://github.com/Netflix-Skunkworks/zerotodocker 
https://hub.docker.com/u/netflixoss/
Dev309  from asgard to zuul - netflix oss-final
Mac OS X 
Virtual Box 
Ubuntu 14.04 
single kernel 
Container #1 
Filesystem + process 
Eureka 
Container 
Zuul 
Container 
... 
Another 
Container
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-final
Talk Time Title
http://netflix.github.com
@NetflixOSS 
http://netflix.github.com
Please give us your feedback on this 
presentation

More Related Content

Dev309 from asgard to zuul - netflix oss-final

  • 4. Web UI / Front End API Middle Tier MySQL Data Center
  • 5. Regional Load Balancers Regional Load Balancers
  • 6. API or Web Calls memcached Cassandra Web service S3 bucket
  • 7. We’re here to help you get to global scale… Apache Licensed Cloud Native OSS http://netflix.github.com
  • 12. Web App Front End (REST services) Micro service Implementation Hystrix Call “Auth Service” Ribbon REST client Eureka Server(s) App Service (auth-service) with Eureka Fallback Implementation Karyon
  • 18. Hardware Will Fail Slowly Changing Large Scale Speed Everything Is Broken Rapid Change Large Scale Everything Works Slowly Changing Small Scale Hardware Will Fail Rapid Change Small Scale Scale
  • 22. Regional Load Balancers Regional Load Balancers
  • 26. Web App Front End (REST services) Micro service Implementation Hystrix Call “Auth Service” Ribbon REST client Eureka Server(s) App Service (auth-service) with Eureka Fallback Implementation Karyon
  • 32. Client A p a c h e Server (Karyon) HTTP Admin Console Eureka (Service Registry) Apache Tomcat Ribbon Load Balancing Metrics (Servo) Eureka Integration Bootstrapping (Governator) Metrics (Servo) Eureka Integration Registration Fetch Registry H T T P C L I E N T H y s t r i x EV Cac h e
  • 33. Client (Ribbon 2.0) Server (Karyon) Admin Console Eureka (Service Registry) Ribbon Transport Load Balancing Metrics (Servo) Eureka Integration Bootstrapping (Governator) Metrics (Servo) HTTP Eureka Integration Registration Fetch Registry Ribbon Hystrix EVCache Rx Ne t t y RxNetty UDP TCP WebSockets SSE
  • 34. @ArchaiusBootstrap @KaryonBootstrap(name = "hello-­‐netflix-­‐oss") @Modules(include = {HelloNossApp.KaryonJerseyModuleImpl.class, KaryonWebAdminModule.class, KaryonEurekaModule.class}) public final class HelloNossApp { public static class KaryonJerseyModuleImpl extends KaryonJerseyModule { protected void configure() { super.configure(); bind(AuthenticationService.class).to(AuthenticationServiceImpl.class); } public int serverPort() { return 8888; } public int shutdownPort() { return 8899; } public void configureInterceptors(GovernatorHttpInterceptorSupport<ByteBuf, ByteBuf> interceptorSupport) { interceptorSupport.forUri("/hello").interceptIn(AuthInterceptor.class); } } }
  • 35. interface @Http(method = HttpMethod.GET, uriTemplate="/users/{userId}/recommendations") @Hystrix(fallbackHandler = RecommendationFallbackHandler.class) @EvCache(name = "movie-­‐rec", appName = "movieService", cacheKeyTemplate = "{userId}") recommendationsByUserId @Var "userId" MovieService movieService = Ribbon.from(MovieService.class); Observable<Recommendations> result = movieService.recommendationsByUserId(“user1”) .toObservable();
  • 36. createHttpResourceGroup "movieService" newRequestTemplate "recommendationsByUserId" "GET" "/users/{userId}/recommendations" requestBuilder "userId" “user1”
  • 40. Regional Load Balancers Zuul – Traffic Shaping/Routing AZ1 AZ2 AZ3 Data Data Data Geo-located Chaos Kong Chaos Kong Regional Load Balancers Zuul – Traffic Shaping/Routing AZ1 AZ2 AZ3 Data Data Data Customer Device
  • 43. A/B Test Engine Personalization Engine User Info Movie Metadata Movie Ratings Similar Movies API Reviews
  • 44. A/B Test Engine Personalization API Similar Movies Reviews User Info Engine User Info Movie Metadata Movie Ratings
  • 45. A/B Test Engine Personalization Engine API User Movie Movie Similar Info Metadata Ratings Movies Reviews
  • 46. User Info API A/B Test Engine Personalization Engine Movie Metadata Movie Ratings Similar Movies Reviews
  • 47. A/B Test Engine Personalization Engine API User Movie Movie Similar Info Metadata Ratings Movies Reviews
  • 49. User Info API A/B Test Engine Personalization Engine Movie Metadata Movie Ratings Similar Movies Reviews
  • 50. A/B Test Engine Personalization Engine API User Movie Movie Similar Info Metadata Ratings Movies Reviews
  • 51. Personaliza tion Engine User Info Movie Metadata Movie Ratings Similar Movies API Reviews A/B Test Engine
  • 52. Personaliza tion Engine User Info Movie Metadata Movie Ratings Similar Movies API Reviews A/B Test Engine Fallback
  • 53. Personaliza tion Engine User Info Movie Metadata Movie Ratings Similar Movies API Reviews A/B Test Engine Fallback
  • 60. ‒ ‒ ‒ ‒ ‒ ‒ ‒
  • 66. Mac OS X Virtual Box Ubuntu 14.04 single kernel Container #1 Filesystem + process Eureka Container Zuul Container ... Another Container
  • 73. Please give us your feedback on this presentation