SlideShare a Scribd company logo
NetflixOSS Open House
      Lightning talks
Jordan Zimmerman
                 @randgalt
   jzimmerman@netflix.com

NetflixOSS projects I work on




         Jordan Zimmerman
         Netflix Platform Team
     jzimmerman@netflix.com
                      @randgalt
Correct ZooKeeper use is hard!
●   Curator is a set of Java libraries that make using ZooKeeper much easier
    and enforce best practices.
●   Curator is focused on the recipes: locks, leaders, etc. Most people
    interested in ZooKeeper don't need to be concerned with the details of
    connection management, etc. What they want is a simple way to use the
    recipes.
●   Connection management, retries, recipes, best practices.
●   Recipes!
    Leader Latch, Leader Election, Shared Reentrant Lock, Shared Lock, Shared Reentrant Read
    Write Lock, Shared Semaphore, Multi Shared Lock, Distributed Queue, Distributed Id Queue,
    Distributed Priority Queue, Distributed Delay Queue, Simple Distributed Queue, Barrier, Double
    Barrier, Shared counter, Distributed Atomic Long, Path Cache, Node Cache
ZooKeeper Ops is very hard!
●   Instance Monitoring
●   Log Cleanup
●   Backup/Restore
●   Cluster-wide Configuration
●   Rolling Ensemble Changes
●   Automatic Instance Management
●   Visualizer
●   ZooKeeper Data Mutation
●   Curator Integration
●   Rich REST API
A library of extensions and utilities that enhance Google Guice to provide:

●   Classpath scanning and automatic binding
●   Lifecycle management
●   Configuration to field mapping
●   Field validation
●   Parallelized object warmup
●   Lazy singleton
●   Fine grained, more concurrent singleton
●   Generic binding annotations
BLITZ4j
●   At Netflix
       ●   Billions of log lines per day
       ●   BI reporting, Monitoring, Debugging
       ●   Log4j for several years

●   What we faced?
     ●    Traffic increased – per instance logging increased
     ●    Contentions in logging
     ●    Impact in application response time
     ●    Deadlocks during reconfiguration

●   What is wrong with Log4j?
     ●     Strict locking model
     ●     Synchronization semantics everywhere
     ●     Impacting application response for logging a few lines?

●   What is Blitz4j?
     ●     Seamlessly replace all contention points
     ●     Decouple logging and application
     ●     Asynchronous appender – optimized, configurable
     ●     Dynamic configurability

●   How can your application benefit?
      ●   Does your application use log4j and logs heavily?
      ●   Immediate performance boost
      ●   Include blitz4j in classpath and couple of lines of configuration
EUREKA
●   REST service
       ● Primarily useful in the AWS cloud
       ●  Find other middle-tier services in the cloud
       ● Service -farm of instances providing functionality
       ●  identified by well known name


●   Why discover other services?
       ● Services find other services to interact - midde tier
       ● In AWS cloud, this communication can be tricky
       ● Instances come and go, ASG scales up/down
       ● Interacting services should be aware of this
       ● ELB can track this – but exposes internet traffic
       ● DNS can discover services – but cannot maintain automatically
       ● Eureka tracks this information and relays to all communicating services


●   What does Eureka provide?
       ●  Finding instances for middle-tier communication and loadbalancing
       ●  Other management activities - take instances in/out of live traffic
       ●  Share application-specific metadata between services
       ●  Built-in Resilience to network partitions, zone failures,eureka peer outages


    VMore about Eureka and Blitz4j - Visit us at the booth
Ribbon

Inter-process communication library with software load balancers and
client
 ● Cornerstone of Netflix Internal Web Services (NIWS), a Service Oriented
     Architecture
 ● Multiple built-in load balancing schemes
      ○ round robin, response time weighted, circuit breaker enabled
 ● Cloud ready
      ○ Integration with Eureka to provide dynamic server pools in AWS
      ○ AWS specific features - zone affinity, zone avoidance, connection
         priming
 ● Highly configurable JSR 311 based REST Client
 ● Coming soon
      ○ Annotation based provider for easy serialization/deserialization and
         cache support
      ○ SLA measurement for clients
      ○ Response cache for REST client
      ○ Asynchronous/batch operation for REST client
Archaius
Archaius is a dynamic configuration library

● Enable configuration change at runtime without restarting
● Framework to poll configuration source or listen to external property
  related events
● Supports configuration sources from generic URLs, JDBC, Amazon
  DynamoDB, ZooKeeper and jCloud
● Central place to organize properties into "buckets" by their nature
  and priorities
● Coming soon
   ○ Service that manage properties with multiple dimensions
   ○ Property Management UI
   ○ Property validation and change notification
Astyanax                         /əˈstaɪ.ənæks/
●   Cassandra Java Client Library - Higher level fluent API
●   Connection Pool
     ○   Bag, Round Robin, Token Aware, Rack aware
     ○   Connection Priming
     ○   Failover + Retry
     ○   Latency optimization
●   Optimized for running in the cloud
     ○   Node discovery
     ○   Monitoring
     ○   Metrics
●   Recipes - Common Cassandra Data Models
     ○   Entity Mapping
     ○   Message Queue (w/ Quartz like scheduling)
     ○   All rows reader with checkpoints
     ○   Distributed lock
     ○   Large object store
Priam - Jason Brown (@jasobrown)




 - Coprocess for running cassandra in ec2
    - backup & recovery
    - configuration
    - token management (*)
Cassandra virtual nodes
- new feature in c* 1.2
    - multiple, non-contiguous shards per instance

- simplifies operations for growing / shrinking
     c * cluster
CassJMeter
- plugin for Apache JMeter
- load testing cassandra
- swappable clients
    - astyanax
    - hector
    - fat client
Edda
● REST Webservice
● Crawls Amazon's AWS APIs
  ○ Stores results as versioned JSON docs
● Dynamic Querying

$ curl "http://edda/api/v2/view/instances;publicIpAddress=1.2.3.4"
["i-012345678b"]


● View History (resources that no longer exist)

$ curl "http://edda/api/v2/view/instances;publicIpAddress=1.2.3.4;_since=0"
["i-0123456789","i-012345678a","i-012345678b"]


● View Changes (diff over time of a resource)
Founder of the Netflix Simian Army
The Netflix Simian Army
• Chaos Monkey        • Circus Monkey
• Chaos Gorilla       • Doctor Monkey
• Latency Monkey      • Howler Monkey
• Janitor Monkey      • Security Monkey
• Conformity Monkey   • Chaos Kong
                      • Efficiency Monkey
NetflixOSS Open House Lightning talks
30
99.99%        = 99.7% uptime
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
Turbine
Metrics Stream Aggregator




        Puneet Oberai
         API Platform
NetflixOSS Open House Lightning talks
●   Low latency streaming infrastructure

●   Pluggable Cloud Instance Discovery
    ●   Config based (Use Archaius)
    ●   File system
    ●   Eureka Plugin


●   Data agnostic
Rx Java
Functional Reactive Programming
What do these ops have in common?
● Query for all videos that a Netflix member
  has rated >= 4
● Drag and Drop event
They're both queries.
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
Two Design Patterns

   Iterator             Observer

● next()              ● update(item)
● hasNext()           ● ???
● throw ex            ● ???
Two Design Patterns

   Iterator             Observer

● next()              ● onNext(item)
● hasNext()           ● onCompleted()
● throw ex            ● onError(ex)
Example: Videos with Rating >= 4.0


Iterable<Video> videosWithHighRating =
    netflixMember.getVideoLists().
         map({
             Iterable<Video> videoList ->
                  return videoList.
                      filter({ Video video -> video.getRating() >= 4.0 });
         }).
         merge();
Example: Drag Event
Observable<MouseEvent> mouseDowns = // convert a legacy Observable
Observable<MouseEvent> mouseMoves = // ...
Observable<MouseEvent> mouseUps = // ...

Observable<MouseEvent> mouseDrags =
    mouseDowns.
         map({
             MouseEvent mouseDownEvent ->
                  return mouseMoves.
                      takeUntil(mouseUps);
         }).
         merge();
Spin Locks



               Dead Locks
    Threads
       Observable
              1.   map
Semaphores
              2.   filter
              3.   merge
              4.   reduce
Race Conditions
              5.   zip
@AsgardOSS
Ad

More Related Content

What's hot (19)

Optimizing {Java} Application Performance on Kubernetes
Optimizing {Java} Application Performance on KubernetesOptimizing {Java} Application Performance on Kubernetes
Optimizing {Java} Application Performance on Kubernetes
Dinakar Guniguntala
 
Erlang on OSv
Erlang on OSvErlang on OSv
Erlang on OSv
Zvi Avraham
 
Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...
Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...
Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...
Shirshanka Das
 
OpenStack HA
OpenStack HAOpenStack HA
OpenStack HA
Kenneth Hui
 
Why you’re going to fail running java on docker!
Why you’re going to fail running java on docker!Why you’re going to fail running java on docker!
Why you’re going to fail running java on docker!
Red Hat Developers
 
CPN302 your-linux-ami-optimization-and-performance
CPN302 your-linux-ami-optimization-and-performanceCPN302 your-linux-ami-optimization-and-performance
CPN302 your-linux-ami-optimization-and-performance
Coburn Watson
 
Integrating Puppet with Cloud Infrastructures-Remco Overdijk
Integrating Puppet with Cloud Infrastructures-Remco OverdijkIntegrating Puppet with Cloud Infrastructures-Remco Overdijk
Integrating Puppet with Cloud Infrastructures-Remco Overdijk
MaxServ
 
Openstack study-nova-02
Openstack study-nova-02Openstack study-nova-02
Openstack study-nova-02
Jinho Shin
 
Lessons from managing a Pulsar cluster (Nutanix)
Lessons from managing a Pulsar cluster (Nutanix)Lessons from managing a Pulsar cluster (Nutanix)
Lessons from managing a Pulsar cluster (Nutanix)
StreamNative
 
Tuning kafka pipelines
Tuning kafka pipelinesTuning kafka pipelines
Tuning kafka pipelines
Sumant Tambe
 
Docker.io
Docker.ioDocker.io
Docker.io
Ladislav Prskavec
 
DevEx | there’s no place like k3s
DevEx | there’s no place like k3sDevEx | there’s no place like k3s
DevEx | there’s no place like k3s
Haggai Philip Zagury
 
Introduction to ZooKeeper - TriHUG May 22, 2012
Introduction to ZooKeeper - TriHUG May 22, 2012Introduction to ZooKeeper - TriHUG May 22, 2012
Introduction to ZooKeeper - TriHUG May 22, 2012
mumrah
 
EVCache at Netflix
EVCache at NetflixEVCache at Netflix
EVCache at Netflix
Shashi Shekar Madappa
 
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG TorinoDistributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Codemotion Tel Aviv
 
A fun cup of joe with open liberty
A fun cup of joe with open libertyA fun cup of joe with open liberty
A fun cup of joe with open liberty
Andy Mauer
 
Introduction openstack-meetup-nov-28
Introduction openstack-meetup-nov-28Introduction openstack-meetup-nov-28
Introduction openstack-meetup-nov-28
Sadique Puthen
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
Open Source Consulting
 
Cassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons Learned
DataStax Academy
 
Optimizing {Java} Application Performance on Kubernetes
Optimizing {Java} Application Performance on KubernetesOptimizing {Java} Application Performance on Kubernetes
Optimizing {Java} Application Performance on Kubernetes
Dinakar Guniguntala
 
Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...
Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...
Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...
Shirshanka Das
 
Why you’re going to fail running java on docker!
Why you’re going to fail running java on docker!Why you’re going to fail running java on docker!
Why you’re going to fail running java on docker!
Red Hat Developers
 
CPN302 your-linux-ami-optimization-and-performance
CPN302 your-linux-ami-optimization-and-performanceCPN302 your-linux-ami-optimization-and-performance
CPN302 your-linux-ami-optimization-and-performance
Coburn Watson
 
Integrating Puppet with Cloud Infrastructures-Remco Overdijk
Integrating Puppet with Cloud Infrastructures-Remco OverdijkIntegrating Puppet with Cloud Infrastructures-Remco Overdijk
Integrating Puppet with Cloud Infrastructures-Remco Overdijk
MaxServ
 
Openstack study-nova-02
Openstack study-nova-02Openstack study-nova-02
Openstack study-nova-02
Jinho Shin
 
Lessons from managing a Pulsar cluster (Nutanix)
Lessons from managing a Pulsar cluster (Nutanix)Lessons from managing a Pulsar cluster (Nutanix)
Lessons from managing a Pulsar cluster (Nutanix)
StreamNative
 
Tuning kafka pipelines
Tuning kafka pipelinesTuning kafka pipelines
Tuning kafka pipelines
Sumant Tambe
 
DevEx | there’s no place like k3s
DevEx | there’s no place like k3sDevEx | there’s no place like k3s
DevEx | there’s no place like k3s
Haggai Philip Zagury
 
Introduction to ZooKeeper - TriHUG May 22, 2012
Introduction to ZooKeeper - TriHUG May 22, 2012Introduction to ZooKeeper - TriHUG May 22, 2012
Introduction to ZooKeeper - TriHUG May 22, 2012
mumrah
 
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG TorinoDistributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Codemotion Tel Aviv
 
A fun cup of joe with open liberty
A fun cup of joe with open libertyA fun cup of joe with open liberty
A fun cup of joe with open liberty
Andy Mauer
 
Introduction openstack-meetup-nov-28
Introduction openstack-meetup-nov-28Introduction openstack-meetup-nov-28
Introduction openstack-meetup-nov-28
Sadique Puthen
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
Open Source Consulting
 
Cassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons Learned
DataStax Academy
 

Similar to NetflixOSS Open House Lightning talks (20)

Comparison between zookeeper, etcd 3 and other distributed coordination systems
Comparison between zookeeper, etcd 3 and other distributed coordination systemsComparison between zookeeper, etcd 3 and other distributed coordination systems
Comparison between zookeeper, etcd 3 and other distributed coordination systems
Imesha Sudasingha
 
Microservices and modularity with java
Microservices and modularity with javaMicroservices and modularity with java
Microservices and modularity with java
DPC Consulting Ltd
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
Rishabh Indoria
 
Developing Microservices using Spring - Beginner's Guide
Developing Microservices using Spring - Beginner's GuideDeveloping Microservices using Spring - Beginner's Guide
Developing Microservices using Spring - Beginner's Guide
Mohanraj Thirumoorthy
 
AWS re:Invent presentation: Unmeltable Infrastructure at Scale by Loggly
AWS re:Invent presentation: Unmeltable Infrastructure at Scale by Loggly AWS re:Invent presentation: Unmeltable Infrastructure at Scale by Loggly
AWS re:Invent presentation: Unmeltable Infrastructure at Scale by Loggly
SolarWinds Loggly
 
2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices
Jason Varghese
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @Coursera
C4Media
 
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
javier ramirez
 
Introduction to apache kafka
Introduction to apache kafkaIntroduction to apache kafka
Introduction to apache kafka
Samuel Kerrien
 
QConSF18 - Disenchantment: Netflix Titus, its Feisty Team, and Daemons
QConSF18 - Disenchantment: Netflix Titus, its Feisty Team, and DaemonsQConSF18 - Disenchantment: Netflix Titus, its Feisty Team, and Daemons
QConSF18 - Disenchantment: Netflix Titus, its Feisty Team, and Daemons
aspyker
 
Architectures, Frameworks and Infrastructure
Architectures, Frameworks and InfrastructureArchitectures, Frameworks and Infrastructure
Architectures, Frameworks and Infrastructure
harendra_pathak
 
Ippevent : openshift Introduction
Ippevent : openshift IntroductionIppevent : openshift Introduction
Ippevent : openshift Introduction
kanedafromparis
 
What’s new in WSO2 Enterprise Integrator 6.6
What’s new in WSO2 Enterprise Integrator 6.6What’s new in WSO2 Enterprise Integrator 6.6
What’s new in WSO2 Enterprise Integrator 6.6
WSO2
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015
aspyker
 
Docker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionDocker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline Execution
Brennan Saeta
 
Architecting for Microservices Part 2
Architecting for Microservices Part 2Architecting for Microservices Part 2
Architecting for Microservices Part 2
Elana Krasner
 
Java concurrency
Java concurrencyJava concurrency
Java concurrency
Srinivasan Raghvan
 
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1
Ruslan Meshenberg
 
Kafka Summit NYC 2017 - Scalable Real-Time Complex Event Processing @ Uber
Kafka Summit NYC 2017 - Scalable Real-Time Complex Event Processing @ UberKafka Summit NYC 2017 - Scalable Real-Time Complex Event Processing @ Uber
Kafka Summit NYC 2017 - Scalable Real-Time Complex Event Processing @ Uber
confluent
 
BISSA: Empowering Web gadget Communication with Tuple Spaces
BISSA: Empowering Web gadget Communication with Tuple SpacesBISSA: Empowering Web gadget Communication with Tuple Spaces
BISSA: Empowering Web gadget Communication with Tuple Spaces
Srinath Perera
 
Comparison between zookeeper, etcd 3 and other distributed coordination systems
Comparison between zookeeper, etcd 3 and other distributed coordination systemsComparison between zookeeper, etcd 3 and other distributed coordination systems
Comparison between zookeeper, etcd 3 and other distributed coordination systems
Imesha Sudasingha
 
Microservices and modularity with java
Microservices and modularity with javaMicroservices and modularity with java
Microservices and modularity with java
DPC Consulting Ltd
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
Rishabh Indoria
 
Developing Microservices using Spring - Beginner's Guide
Developing Microservices using Spring - Beginner's GuideDeveloping Microservices using Spring - Beginner's Guide
Developing Microservices using Spring - Beginner's Guide
Mohanraj Thirumoorthy
 
AWS re:Invent presentation: Unmeltable Infrastructure at Scale by Loggly
AWS re:Invent presentation: Unmeltable Infrastructure at Scale by Loggly AWS re:Invent presentation: Unmeltable Infrastructure at Scale by Loggly
AWS re:Invent presentation: Unmeltable Infrastructure at Scale by Loggly
SolarWinds Loggly
 
2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices
Jason Varghese
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @Coursera
C4Media
 
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
javier ramirez
 
Introduction to apache kafka
Introduction to apache kafkaIntroduction to apache kafka
Introduction to apache kafka
Samuel Kerrien
 
QConSF18 - Disenchantment: Netflix Titus, its Feisty Team, and Daemons
QConSF18 - Disenchantment: Netflix Titus, its Feisty Team, and DaemonsQConSF18 - Disenchantment: Netflix Titus, its Feisty Team, and Daemons
QConSF18 - Disenchantment: Netflix Titus, its Feisty Team, and Daemons
aspyker
 
Architectures, Frameworks and Infrastructure
Architectures, Frameworks and InfrastructureArchitectures, Frameworks and Infrastructure
Architectures, Frameworks and Infrastructure
harendra_pathak
 
Ippevent : openshift Introduction
Ippevent : openshift IntroductionIppevent : openshift Introduction
Ippevent : openshift Introduction
kanedafromparis
 
What’s new in WSO2 Enterprise Integrator 6.6
What’s new in WSO2 Enterprise Integrator 6.6What’s new in WSO2 Enterprise Integrator 6.6
What’s new in WSO2 Enterprise Integrator 6.6
WSO2
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015
aspyker
 
Docker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionDocker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline Execution
Brennan Saeta
 
Architecting for Microservices Part 2
Architecting for Microservices Part 2Architecting for Microservices Part 2
Architecting for Microservices Part 2
Elana Krasner
 
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1
Ruslan Meshenberg
 
Kafka Summit NYC 2017 - Scalable Real-Time Complex Event Processing @ Uber
Kafka Summit NYC 2017 - Scalable Real-Time Complex Event Processing @ UberKafka Summit NYC 2017 - Scalable Real-Time Complex Event Processing @ Uber
Kafka Summit NYC 2017 - Scalable Real-Time Complex Event Processing @ Uber
confluent
 
BISSA: Empowering Web gadget Communication with Tuple Spaces
BISSA: Empowering Web gadget Communication with Tuple SpacesBISSA: Empowering Web gadget Communication with Tuple Spaces
BISSA: Empowering Web gadget Communication with Tuple Spaces
Srinath Perera
 
Ad

More from Ruslan Meshenberg (12)

NetflixOSS Meetup season 3 episode 2
NetflixOSS Meetup season 3 episode 2NetflixOSS Meetup season 3 episode 2
NetflixOSS Meetup season 3 episode 2
Ruslan Meshenberg
 
Netflix oss past-present-future
Netflix oss   past-present-futureNetflix oss   past-present-future
Netflix oss past-present-future
Ruslan Meshenberg
 
Dev309 from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-finalDev309  from asgard to zuul - netflix oss-final
Dev309 from asgard to zuul - netflix oss-final
Ruslan Meshenberg
 
NetflixOSS season 2 episode 2 - Reactive / Async
NetflixOSS   season 2 episode 2 - Reactive / AsyncNetflixOSS   season 2 episode 2 - Reactive / Async
NetflixOSS season 2 episode 2 - Reactive / Async
Ruslan Meshenberg
 
OSS Think Tank - NetflixOSS - OSS as a Competitive Differentiator
OSS Think Tank - NetflixOSS - OSS as a Competitive DifferentiatorOSS Think Tank - NetflixOSS - OSS as a Competitive Differentiator
OSS Think Tank - NetflixOSS - OSS as a Competitive Differentiator
Ruslan Meshenberg
 
Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talks
Ruslan Meshenberg
 
Arc305 how netflix leverages multiple regions to increase availability an i...
Arc305 how netflix leverages multiple regions to increase availability   an i...Arc305 how netflix leverages multiple regions to increase availability   an i...
Arc305 how netflix leverages multiple regions to increase availability an i...
Ruslan Meshenberg
 
Svc 202-netflix-open-source
Svc 202-netflix-open-sourceSvc 202-netflix-open-source
Svc 202-netflix-open-source
Ruslan Meshenberg
 
Netflix oss season 1 episode 3
Netflix oss season 1 episode 3 Netflix oss season 1 episode 3
Netflix oss season 1 episode 3
Ruslan Meshenberg
 
NetflixOSS meetup lightning talks and roadmap
NetflixOSS meetup lightning talks and roadmapNetflixOSS meetup lightning talks and roadmap
NetflixOSS meetup lightning talks and roadmap
Ruslan Meshenberg
 
re:Invent 2012 Optimizing Cassandra
re:Invent 2012 Optimizing Cassandrare:Invent 2012 Optimizing Cassandra
re:Invent 2012 Optimizing Cassandra
Ruslan Meshenberg
 
The Netflix Open Source Platform
The Netflix Open Source PlatformThe Netflix Open Source Platform
The Netflix Open Source Platform
Ruslan Meshenberg
 
NetflixOSS Meetup season 3 episode 2
NetflixOSS Meetup season 3 episode 2NetflixOSS Meetup season 3 episode 2
NetflixOSS Meetup season 3 episode 2
Ruslan Meshenberg
 
Netflix oss past-present-future
Netflix oss   past-present-futureNetflix oss   past-present-future
Netflix oss past-present-future
Ruslan Meshenberg
 
Dev309 from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-finalDev309  from asgard to zuul - netflix oss-final
Dev309 from asgard to zuul - netflix oss-final
Ruslan Meshenberg
 
NetflixOSS season 2 episode 2 - Reactive / Async
NetflixOSS   season 2 episode 2 - Reactive / AsyncNetflixOSS   season 2 episode 2 - Reactive / Async
NetflixOSS season 2 episode 2 - Reactive / Async
Ruslan Meshenberg
 
OSS Think Tank - NetflixOSS - OSS as a Competitive Differentiator
OSS Think Tank - NetflixOSS - OSS as a Competitive DifferentiatorOSS Think Tank - NetflixOSS - OSS as a Competitive Differentiator
OSS Think Tank - NetflixOSS - OSS as a Competitive Differentiator
Ruslan Meshenberg
 
Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talks
Ruslan Meshenberg
 
Arc305 how netflix leverages multiple regions to increase availability an i...
Arc305 how netflix leverages multiple regions to increase availability   an i...Arc305 how netflix leverages multiple regions to increase availability   an i...
Arc305 how netflix leverages multiple regions to increase availability an i...
Ruslan Meshenberg
 
Netflix oss season 1 episode 3
Netflix oss season 1 episode 3 Netflix oss season 1 episode 3
Netflix oss season 1 episode 3
Ruslan Meshenberg
 
NetflixOSS meetup lightning talks and roadmap
NetflixOSS meetup lightning talks and roadmapNetflixOSS meetup lightning talks and roadmap
NetflixOSS meetup lightning talks and roadmap
Ruslan Meshenberg
 
re:Invent 2012 Optimizing Cassandra
re:Invent 2012 Optimizing Cassandrare:Invent 2012 Optimizing Cassandra
re:Invent 2012 Optimizing Cassandra
Ruslan Meshenberg
 
The Netflix Open Source Platform
The Netflix Open Source PlatformThe Netflix Open Source Platform
The Netflix Open Source Platform
Ruslan Meshenberg
 
Ad

Recently uploaded (20)

#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 

NetflixOSS Open House Lightning talks

  • 1. NetflixOSS Open House Lightning talks
  • 2. Jordan Zimmerman @randgalt [email protected] NetflixOSS projects I work on Jordan Zimmerman Netflix Platform Team [email protected] @randgalt
  • 3. Correct ZooKeeper use is hard! ● Curator is a set of Java libraries that make using ZooKeeper much easier and enforce best practices. ● Curator is focused on the recipes: locks, leaders, etc. Most people interested in ZooKeeper don't need to be concerned with the details of connection management, etc. What they want is a simple way to use the recipes. ● Connection management, retries, recipes, best practices. ● Recipes! Leader Latch, Leader Election, Shared Reentrant Lock, Shared Lock, Shared Reentrant Read Write Lock, Shared Semaphore, Multi Shared Lock, Distributed Queue, Distributed Id Queue, Distributed Priority Queue, Distributed Delay Queue, Simple Distributed Queue, Barrier, Double Barrier, Shared counter, Distributed Atomic Long, Path Cache, Node Cache
  • 4. ZooKeeper Ops is very hard! ● Instance Monitoring ● Log Cleanup ● Backup/Restore ● Cluster-wide Configuration ● Rolling Ensemble Changes ● Automatic Instance Management ● Visualizer ● ZooKeeper Data Mutation ● Curator Integration ● Rich REST API
  • 5. A library of extensions and utilities that enhance Google Guice to provide: ● Classpath scanning and automatic binding ● Lifecycle management ● Configuration to field mapping ● Field validation ● Parallelized object warmup ● Lazy singleton ● Fine grained, more concurrent singleton ● Generic binding annotations
  • 6. BLITZ4j ● At Netflix ● Billions of log lines per day ● BI reporting, Monitoring, Debugging ● Log4j for several years ● What we faced? ● Traffic increased – per instance logging increased ● Contentions in logging ● Impact in application response time ● Deadlocks during reconfiguration ● What is wrong with Log4j? ● Strict locking model ● Synchronization semantics everywhere ● Impacting application response for logging a few lines? ● What is Blitz4j? ● Seamlessly replace all contention points ● Decouple logging and application ● Asynchronous appender – optimized, configurable ● Dynamic configurability ● How can your application benefit? ● Does your application use log4j and logs heavily? ● Immediate performance boost ● Include blitz4j in classpath and couple of lines of configuration
  • 7. EUREKA ● REST service ● Primarily useful in the AWS cloud ● Find other middle-tier services in the cloud ● Service -farm of instances providing functionality ● identified by well known name ● Why discover other services? ● Services find other services to interact - midde tier ● In AWS cloud, this communication can be tricky ● Instances come and go, ASG scales up/down ● Interacting services should be aware of this ● ELB can track this – but exposes internet traffic ● DNS can discover services – but cannot maintain automatically ● Eureka tracks this information and relays to all communicating services ● What does Eureka provide? ● Finding instances for middle-tier communication and loadbalancing ● Other management activities - take instances in/out of live traffic ● Share application-specific metadata between services ● Built-in Resilience to network partitions, zone failures,eureka peer outages VMore about Eureka and Blitz4j - Visit us at the booth
  • 8. Ribbon Inter-process communication library with software load balancers and client ● Cornerstone of Netflix Internal Web Services (NIWS), a Service Oriented Architecture ● Multiple built-in load balancing schemes ○ round robin, response time weighted, circuit breaker enabled ● Cloud ready ○ Integration with Eureka to provide dynamic server pools in AWS ○ AWS specific features - zone affinity, zone avoidance, connection priming ● Highly configurable JSR 311 based REST Client ● Coming soon ○ Annotation based provider for easy serialization/deserialization and cache support ○ SLA measurement for clients ○ Response cache for REST client ○ Asynchronous/batch operation for REST client
  • 9. Archaius Archaius is a dynamic configuration library ● Enable configuration change at runtime without restarting ● Framework to poll configuration source or listen to external property related events ● Supports configuration sources from generic URLs, JDBC, Amazon DynamoDB, ZooKeeper and jCloud ● Central place to organize properties into "buckets" by their nature and priorities ● Coming soon ○ Service that manage properties with multiple dimensions ○ Property Management UI ○ Property validation and change notification
  • 10. Astyanax /əˈstaɪ.ənæks/ ● Cassandra Java Client Library - Higher level fluent API ● Connection Pool ○ Bag, Round Robin, Token Aware, Rack aware ○ Connection Priming ○ Failover + Retry ○ Latency optimization ● Optimized for running in the cloud ○ Node discovery ○ Monitoring ○ Metrics ● Recipes - Common Cassandra Data Models ○ Entity Mapping ○ Message Queue (w/ Quartz like scheduling) ○ All rows reader with checkpoints ○ Distributed lock ○ Large object store
  • 11. Priam - Jason Brown (@jasobrown) - Coprocess for running cassandra in ec2 - backup & recovery - configuration - token management (*)
  • 12. Cassandra virtual nodes - new feature in c* 1.2 - multiple, non-contiguous shards per instance - simplifies operations for growing / shrinking c * cluster
  • 13. CassJMeter - plugin for Apache JMeter - load testing cassandra - swappable clients - astyanax - hector - fat client
  • 14. Edda ● REST Webservice ● Crawls Amazon's AWS APIs ○ Stores results as versioned JSON docs ● Dynamic Querying $ curl "http://edda/api/v2/view/instances;publicIpAddress=1.2.3.4" ["i-012345678b"] ● View History (resources that no longer exist) $ curl "http://edda/api/v2/view/instances;publicIpAddress=1.2.3.4;_since=0" ["i-0123456789","i-012345678a","i-012345678b"] ● View Changes (diff over time of a resource)
  • 15. Founder of the Netflix Simian Army
  • 16. The Netflix Simian Army • Chaos Monkey • Circus Monkey • Chaos Gorilla • Doctor Monkey • Latency Monkey • Howler Monkey • Janitor Monkey • Security Monkey • Conformity Monkey • Chaos Kong • Efficiency Monkey
  • 18. 30 99.99% = 99.7% uptime
  • 26. Turbine Metrics Stream Aggregator Puneet Oberai API Platform
  • 28. Low latency streaming infrastructure ● Pluggable Cloud Instance Discovery ● Config based (Use Archaius) ● File system ● Eureka Plugin ● Data agnostic
  • 30. What do these ops have in common? ● Query for all videos that a Netflix member has rated >= 4 ● Drag and Drop event
  • 34. Two Design Patterns Iterator Observer ● next() ● update(item) ● hasNext() ● ??? ● throw ex ● ???
  • 35. Two Design Patterns Iterator Observer ● next() ● onNext(item) ● hasNext() ● onCompleted() ● throw ex ● onError(ex)
  • 36. Example: Videos with Rating >= 4.0 Iterable<Video> videosWithHighRating = netflixMember.getVideoLists(). map({ Iterable<Video> videoList -> return videoList. filter({ Video video -> video.getRating() >= 4.0 }); }). merge();
  • 37. Example: Drag Event Observable<MouseEvent> mouseDowns = // convert a legacy Observable Observable<MouseEvent> mouseMoves = // ... Observable<MouseEvent> mouseUps = // ... Observable<MouseEvent> mouseDrags = mouseDowns. map({ MouseEvent mouseDownEvent -> return mouseMoves. takeUntil(mouseUps); }). merge();
  • 38. Spin Locks Dead Locks Threads Observable 1. map Semaphores 2. filter 3. merge 4. reduce Race Conditions 5. zip