Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side...

61
The Netflix API Platform for Server-Side Scripting

Transcript of Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side...

Page 1: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

The Netflix API Platform for Server-Side Scripting

Page 2: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Problem identified: new servers aren’t coming up healthy!

Ugh! There’s a problem. Errors from API are up.

Page 3: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Stream starts per second more and more off.

Expected value

Actual value

Page 4: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Finally root-caused!Now restarting all unhealthy servers.

Back to normal!

Page 5: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Stream starts per second also back to normal.

Expected value

Actual value

Page 6: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 7: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 8: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 9: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Js(mostly)

java

Client AClient BClient C

Client A

Client YClient Z

...

...Netflix Microservices

Network boundary

API Server JVM

Page 10: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 11: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 12: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 13: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Js(mostly)

java

Client AClient BClient C

Client A

Client YClient Z

...

...Netflix Microservices

scripts

scripts

scripts

scripts

...

scripts

scripts

scripts

scripts

Network boundary

API Server JVM

~700 active

groovy

Page 14: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

[...]

Device1VideoCommon. formatKidsSeason (apiRequest,[...], imageUrl)

[...]

[...]

Device2Common.formatAllSeasons([...])

[...]

[...]

dataPublishingService.getShowFeedbackBuilder(user, video)

[...]

Page 15: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 16: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

n+3i+4

i+1i+2i+3

i

n+2

n+1

n

k+1

k j

j+1

l

Page 17: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 18: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 19: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Js(mostly)

java

Client AClient BClient C

Client A

Client YClient Z

...

...Netflix Microservices

script

script

...

script

script

Network boundary

API Server JVM

Strong resiliency with Hystrix

What about resiliency on this side?

groovy

Page 20: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Periodic cleanup

New upload increases memory usage.

Page 21: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 22: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Js(mostly)

java

Client AClient BClient C

Client A

Client YClient Z

...

...Netflix Microservices

script

script

...

script

script

Network boundary

API Server JVM

few, small scriptsfewer uploads

groovy

Page 23: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Js(mostly)

java

Client AClient BClient C

Client A

Client YClient Z

...

...Netflix Microservices

script/app

script/app

script/app

script/app

...

script/app

script/app

script/app

script/app

Network boundary

API Server JVM

script/app

script/app

~700 more complex scripts/apps,10-50 uploads per day

groovy

Page 24: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 25: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Page 26: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Lack of process isolation is a growing risk.

Page 27: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 28: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 29: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 30: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Js(mostly)

java

Client AClient BClient C

Client A

Client YClient Z

...

...Netflix Microservices

node script

node script

...

node script

node script

Network boundary API Server JVM

node.js

process isolation

Page 31: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 32: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

API

Temporarily unavailable!

Page 33: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

API

Page 34: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 35: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 36: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 37: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Docker Machine

localproject

Local Container

live reload file watcher

docker build / run

File watcher agent

Proxy

NetworkAgent

node-inspector

debugger

Page 38: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Js(mostly)

java

Client AClient BClient C

Client A

Client YClient Z

...

...Netflix Microservices

script

script

script

script

...

script

script

script

script

Network boundary

API Server JVM

script

script

Problems hard to root cause, hard to measure/optimize performance

groovy

Page 39: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

API

device server-side script

device client

Page 40: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

API

device server-side script

Page 41: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 42: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 43: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 44: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 45: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

ATLAS

Page 46: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

VersioningEasy access to instances

Rollback

Page 47: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 48: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Client AClient BClient CClient E

Netflix Microservicesnode script

Network boundary API Server JVM

Page 49: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Client AClient BClient CClient E

Netflix Microservicesnode script

Network boundary API Server JVM

Memory leak makes RSL blow up. Clearer idea of where the problem is.

Page 50: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

node.js

Client AClient BClient CClient E

Netflix Microservicesnode script

Network boundary API Server JVM

Same with node script.

Page 51: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 52: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.

Js(mostly)

Client AClient BClient C

Client A

Client YClient Z

...

...Netflix Microservices

node script

node script

...

node script

node script

Network boundary API Server JVM

node.js

Page 53: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 54: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 55: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 56: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 58: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 59: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 60: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.
Page 61: Server-Side Scripting The Netflix API Platform for · The Netflix API Platform for Server-Side Scripting. Problem identified: new ... There’s a problem. Errors from API are up.