(PFC304) Effective Interprocess Communications in the Cloud: The Pros and Cons of Microservices...

Post on 24-Jun-2015

2.281 views 2 download

Tags:

description

You can't (yet) bend the law of Physics, but you can use the power of the cloud to design applications that run as fast as the speed of light! This session will focus on the best practices for optimizing performance to the very last millisecond. We'll dive into topics such as caching at every layer of your application, TCP optimizations, SSL optimizations, latency based routing, and much more. These best practices can help you to streamline your infrastructure utilization, improve performance and allow you to scale economically.

Transcript of (PFC304) Effective Interprocess Communications in the Cloud: The Pros and Cons of Microservices...

• Netflix – background and evolution

• Netflix – background and evolution

• Monolithic Apps

Load Balancer

Monolithic App

Account

ComponentCatalog

Component

Recommendation

Component

Customer Service

Component

Database

Time

User Accounts

Shopping Cart

Product Catalog

Customer Service

Product Catalog Customer Service

Tipping Point

& &

Organizational Growth Disverse Functionality Bottleneck in

Monolithic stack

MicroServices

Perhaps?

• Netflix – background and evolution

• Monolithic Apps

• Microservices

MicroService

MegaService

Attribution: Adrian Cockroft, Martin Fowler …

• Write programs that do one thing and do it well.

• Write programs to work together.

tr 'A-Z' 'a-z' < doc.txt | tr -cs 'a-z' '\n' | sort | uniq | comm -23 -

/usr/share/dict/words

Program to print misspelt words in doc.txt

Comparing Monolithic to MicroServices

Load Balancer

Monolithic App

Account

ComponentCatalog

Component

Recommendation

Component

Customer Service

Component

Database

Load Balancer

Account

ServiceCatalog

Service

Recommendation

ServiceCustomer Service

Service

Catalog

DB

API Gateway

Customer

DB

• Netflix – background and evolution

• Monolithic Apps

• Microservices

– Why?

Your

App/Service

Service X

Service Y

Service Z

Service L

Service M

• Netflix – background and evolution

• Monolithic Apps

• Microservices

– Challenges and Solutions

Vs

Heterogeneity

Can lead to chaos if not designed right …

non-JVM

Service Discovery

What’s your address?

Account

ServiceCatalog

Service

Recommendation

ServiceCustomer Service

Service

X

Service Y

Service

Z

Service

Registry

Service

(e.g. Netflix Eureka)

2 Billion

~20 Billion Fan

1 Request 1 Request

Monolithic

AppMicroServices

Your

App/Service

Service X

Service Y

Service Z

Cache

ClusterCache

Cluster

Tip: Config your TTL based on flexibility with data staleness!

Your

App/Service

Service X

Service Y

Service Z

Cache

Cluster

Fn {A, B, C}

Cache

Cluster

A/B Test

Service

User Account

Service

Service X Service Y Service ZApp

A/B Test

Service

User Account

Service

Service X Service Y Service ZApp

reduces dependency

load

Data Serialization Overhead

Service A Service B Service C Service D

getMovies() getMovie() getMovieMetadata(

)C

l

i

e

n

t

D

C

l

i

e

n

t

C

C

l

i

e

n

t

B

Data

transformation

XAvroX

XmlJSON

Overall Response Time

A single “bad” service can still bring your service down

Your

App/Service

Service X

Service Y

Service Z

Service L

Service M

Your

App/Service

Service X

Service Y

Service Z

Service L

Service M

Your

App/ServiceYour

App/Service

Your

App/Service

Service X

Service Y

Service Z

Service L

Service M

Your

App/ServiceYour

App/Service

Service X

Service Y

Service Z

Service L

Service M

http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/WhatIsAutoScaling.html

http://techblog.netflix.com/2013/11/scryer-

netflixs-predictive-auto-scaling.html

1.

Account

Service 1

Recommendation

Service 1

Customer Service

Service 1

API Gateway

Account

Service N

Recommendation

Service N

Customer Service

Service N

Customer Service

Load Balancer

Reco Service

Load Balancer

Account Service

Load Balancer

ELB

Account

Service 1

Recommendation

Service 1

Customer Service

Service 1

API Gateway

Account

Service N

Recommendation

Service N

Customer Service

Service N

Account Service

LB

Recommendation

Service LB

Customer Service

Service LB

ELB

http://github.com/netflix/ribbon

Service Dependency Visualization

Your Service

XY Farm

How many dependencies does my service have?

What is the Call Volume on my Service?

Are any Dependency Services running Hot?

What are the Top N Slowest “Business Transactions”?

What are the sample HTTP Requests/Responses that had a

500 Error Code in the last 30 minutes?

You

Your Service Dependency

Graph

• Netflix – background and evolution

• Monolithic Apps

• Microservices

– Challenges and Solutions

– Best Practices

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

three

Fault Injection Testing (FIT)

Device ELB Service B

Service C

Internet Edge

Device or Account Override

Zuul

Service A

Request-level simulations

Refer Re:Invent Talk “Embracing Failure: Fault Injection and

Service Reliability” – PFC305

https://github.com/Netflix/SimianArmy

• Netflix – background and evolution

• Monolithic Apps

• Microservices

– Challenges and Solutions

– Best Practices

• InterProcess Communication

Netflix IPC Stack (1.0)

A

p

a

c

h

e

H

T

T

P

C

l

i

e

n

t

Eureka (Service

Registry)

Server (Karyon)

Apache

Tomcat

Client

H

y

s

t

r

i

x

E

V

C

a

c

h

e

Ribbon

Load

Balancing

Eureka

Integration

Metrics

(Servo)

Bootstrapping (Governator)

Metrics (Servo)

Admin ConsoleHTTP

Eureka Integration

Registration

Fetch Registry

A Blocking Architecture

Netflix IPC Stack (2.0)Client (Ribbon 2.0)

Eureka (Service

Registry)

Server (Karyon)

Ribbon Transport

Load

Balancing

Eureka

Integration

Metrics

(Servo)

Bootstrapping (Governator)

Metrics (Servo)

Admin Console

HTTP

Eureka Integration

Registration

Fetch Registry

Ribbon

Hystrix

EVCache

R

x

N

e

t

t

y

RxNetty

UDP

TCP

WebSockets

SSE

A Completely Reactive Architecture

Details: http://www.meetup.com/Netflix-Open-Source-

Platform/events/184153592/

interface

recommendationsByUserId @Var "userId"

@Http(method = HttpMethod.GET, uriTemplate="/users/{userId}/recommendations")

@Hystrix(fallbackHandler = RecommendationFallbackHandler.class)

@EvCache(name = "movie-rec", appName = "movieService", cacheKeyTemplate = "{userId}")

MovieService movieService = Ribbon.from(MovieService.class);

Observable<Recommendations> result =

movieService.recommendationsByUserId(“user1”)

.toObservable();

NetflixOSS

NetflixOSS

http://netflix.github.co

NetflixOSS

• Eureka

• Karyon

• Ribbon

• Hystrix

• Archaius

• Servo

• EVCache

• Curator/Exhibitor

Talk Time Title

PFC-305 Wednesday, 1:15pm Embracing Failure: Fault Injection and Service Reliability

BDT-403 Wednesday, 2:15pm Next Generation Big Data Platform at Netflix

PFC-306 Wednesday, 3:30pm Performance Tuning EC2

DEV-309 Wednesday, 3:30pm From Asgard to Zuul, How Netflix’s proven Open Source

Tools can accelerate and scale your services

ARC-317 Wednesday, 4:30pm Maintaining a Resilient Front-Door at Massive Scale

PFC-304 Wednesday, 4:30pm Effective Inter-process Communications in the Cloud: The

Pros and Cons of Micro Services Architectures

ENT-209 Wednesday, 4:30pm Cloud Migration, Dev-Ops and Distributed Systems

APP-310 Friday, 9:00am Scheduling using Apache Mesos in the Cloud

• Netflix – background and evolution

• Monolithic Apps

• Microservices

– Challenges and Solutions

– Best Practices

• InterProcess Communication

• Takeaways

http://techblog.netflix.com

http://netflix.github.io

http://martinfowler.com/articles/microservices.html

http://microservices.io/

Please give us your feedback on this session.

Complete session evaluations and earn re:Invent swag.

http://bit.ly/awsevals

Netflix Booth