Speaker Deck

Functional Reactive Programming in the Netflix API - LambdaJam 2013

by Ben Christensen

Published July 9, 2013 in Programming

Presented at LambdaJam 2013 in Chicago
http://lambdajam.com/sessions#christensen

The Netflix API receives over two billion requests a day from more than 800 different devices ranging from gaming consoles like the PS3, XBox and Wii to set-top boxes, TVs and mobile devices such as Android and iOS.

As the unique demands of different devices have have diverged it became clear that the API needed to allow optimizing client-server interaction (http://techblog.netflix.com/2013/01/optimizing-netflix-api.html). We achieve this by enabling the creation of customized service endpoints that reduce network chatter, leverage server-side processing power and decentralize the development of each endpoint so as to encourage and empower rapid innovation.

This presentation will describe how the Netflix API achieves these goals using functional reactive programming using RxJava in a polyglot Java stack. Highly concurrent service endpoints are implemented without blocking, synchronization or thread-safety concerns by using declarative functional reactive composition. Parallelism and resiliency are enabled by the underlying Hystrix fault tolerance isolation layer that fronts the dozens of distributed systems within the Netflix SOA.