SlideShare a Scribd company logo
1 of 79
Monal Daxini
11/ 6 / 2018 @ monaldax
Patterns Of
Streaming Applications
P
O
S
A
• 4+ years building stream processing platform at Netflix
• Drove technical vision, roadmap, led implementation
• 17+ years building distributed systems
Profile
@monaldax
Set The Stage 8 Patterns
5 Functional 3 Non-Functional
Structure Of The Talk
Stream
Processing ?
@monaldax
Disclaimer
Inspired by True Events encountered building and operating a
Stream Processing platform, and use cases that are in
production or in ideation phase in the cloud.
Some code and identifying details have been changed, artistic
liberties have been taken, to protect the privacy of streaming
applications, and for sharing the know-how. Some use cases
may have been simplified.
@monaldax
Stream Processing?
Processing Data-In-Motion
@monaldax
Lower Latency Analytics
User Activity Stream - Batched
Flash
Jessica
Luke
Feb 25 Feb 26
@monaldax
Sessions - Batched User Activity Stream
Feb 25 Feb 26
@monaldax
Flash
Jessica
Luke
Correct Session - Batched User Activity Stream
Feb 25 Feb 26
@monaldax
Flash
Jessica
Luke
Stream Processing Natural For User Activity Stream Sessions
@monaldax
Flash
Jessica
Luke
1. Low latency insights and analytics
2. Process unbounded data sets
3. ETL as data arrives
4. Ad-hoc analytics and Event driven applications
Why Stream Processing?
@monaldax
Set The Stage
Architecture & Flink
Stream Processing App Architecture Blueprint
Stream
Processing Job
Source
@monaldax
Sink
Stream Processing App Architecture Blueprint
Stream
Processing Job
Source
@monaldax
Sinks
Source
Source
Side Input
Why Flink?
Flink Programs Are Streaming Dataflows – Streams And
Transformation Operators
Image adapted, source: Flink Docs@monaldax
Streams And Transformation Operators - Windowing
Image source: Flink Docs
10 Second
@monaldax
Streaming Dataflow DAG
Image adapted, source: Flink Docs@monaldax
Scalable Automatic Scheduling Of Operations
Image adapted, source: Flink Docs
Job Manager
(Process)(Process)
(Process)
@monaldax
Parallelism 2
Sink 1
Flexible Deployment
Bare Metal VM / Cloud Containers
@monaldax
Image adapted from: Stephan Ewen@monaldax
Stateless Stream Processing
No state maintained across events
Streaming Application
Flink TaskManager
Local State
Fault-tolerant Processing – Stateful Processing
Sink
Savepoints
(Explicitly Triggered)
Checkpoints
(Periodic, Asynchronous,
Incremental Checkpoint)
Source /
Producers
@monaldax
In-Memory / On-Disk
Local State Access
Levels Of API Abstraction In Flink
Source: Flink Documentation
Describing Patterns
@monaldax
● Use Case / Motivation
● Pattern
● Code Snippet & Deployment mechanism
● Related Pattern, if any
Describing Design Patterns
@monaldax
Patterns
Functional
1. Configurable Router
@monaldax
• Create ingest pipelines for different event streams declaratively
• Route events to data warehouse, data stores for analytics
• With at-least-once semantics
• Streaming ETL - Allow declarative filtering and projection
1.1 Use Case / Motivation – Ingest Pipelines
@monaldax
1.1 Keystone Pipeline – A Self-serve Product
• SERVERLESS
• Turnkey – ready to use
• 100% in the cloud
• No code, Managed Code & Operations
@monaldax
1.1 UI To Provision 1 Data Stream, A Filter, & 3 Sinks
1.1 Optional Filter & Projection (Out of the box)
1.1 Provision 1 Kafka Topic, 3 Configurable Router Jobs
play_events
Consumer Kafka
Elasticsearch
@monaldax
Events
Configurable Router Job
Filter Projection Connector
Configurable Router Job
Filter Projection Connector
Configurable Router Job
Filter Projection Connector
1 2 3 4 5 6 7
Fan-out: 3
R
@monaldax
1.1 Keystone Pipeline Scale
● Up to 1 trillion new events / day
● Peak: 12M events / sec, 36 GB / sec
● ̴ 4 PB of data transported / day
● ̴ 2000 Router Jobs / 10,000 containers
1.1 Pattern: Configurable Isolated Router
@monaldax
Sink
Configurable Router Job
Declarative ProcessorsDeclarative Processors
Events
Producer
val ka#aSource = getSourceBuilder.fromKa#a("topic1").build()
val selectedSink = getSinkBuilder()
.toSelector(sinkName).declareWith("ka,asink", ka#aSink)
.or("s3sink", s3Sink).or("essink", esSink).or("nullsink", nullSink).build();
ka#aSource
.filter(KeystoneFilterFunc6on).map(KeystoneProjec6onFunc6on)
.addSink(selectedSink)
1.1 Code Snippet: Configurable Isolated Router
NoUserCode
@monaldax
• Popular stream / topic has high fan-out factor
• Requires large Kafka Clusters, expensive
1.2 Use Case / Motivation – Ingest large streams with high fan-out Efficiently
@monaldax
R
R
Filter
Projection
Kafka
R
TopicA Cluster1
TopicB Cluster1
Events
Producer
1.2 Pattern: Configurable Co-Isolated Router
@monaldax
Co-Isolated Router
R
Filter
Projection
Kafka
TopicA Cluster1
TopicB Cluster1
Merge Routing To Same Kafka Cluster
Events
Producer
ui_A_Clicks_KakfaSource
.filter(filter)
.map(projection)
.map(outputConverter)
.addSink(kafkaSinkA_Topic1)
1.2 Code Snippet: Configurable Co-Isolated Router
ui_A_Clicks_Ka;aSource
.map(transformer)
.flatMap(outputFlatMap)
.map(outputConverter)
.addSink(ka.aSinkA_Topic2)
NoUserCode
@monaldax
2. Script UDF* Component
[Static / Dynamic]
*UDF – User Defined Function
@monaldax
2. Use Case / Motivation – Configurable Business Logic Code
for operations like transformations and filtering
Managed Router / Streaming Job
Source Sink
Biz
Logic
Job DAG
@monaldax
2. Pattern: Static or Dynamic Script UDF (stateless) Component
Comes with all the Pros and Cons of scripting engine
Streaming Job
Source Sink
UDF
Script Engine executes
function defined in the UI
@monaldax
val xscript =
new DynamicConfig("x.script")
kakfaSource
.map(new ScriptFunction(xscript))
.filter(new ScriptFunction(xsricpt2))
.addSink(new NoopSink())
2. Code Snippet: Script UDF Component
// Script Function
val sm = new ScriptEngineManager()
ScriptEngine se =
m.getEngineByName ("nashorn");
se .eval(script)
Contents configurable at runtime
@monaldax
3. The Enricher
@monaldax
Next 3 Patterns (3-5) Require Explicit Deployment
@monaldax
3. User Case - Generating Play Events For
Personalization And Show Discovery
@monaldax
@monaldax
3. Use-case: Create play events with current data from services, and lookup
table for analytics. Using lookup table keeps originating events lightweight
Playback
History Service
Video
Metadata
Play Logs
Service call
Periodically updating
lookup data
Streaming Job
Resource
Rate Limiter
3. Pattern: The Enricher
- Rate limit with source or service rate limiter, or with resources
- Pull or push data, Sync / async
Streaming Job
Source Sink
Side Input
• Service call
• Lookup from Data Store
• Static or Periodically updated lookup data
@monaldax
Source / Service
Rate Limiter
3. Code Snippet: The Enricher
val ka#aSource = getSourceBuilder.fromKa#a("topic1").build()
val parsedMessages = ka#aSource.flatMap(parser).name(”parser")
val enrichedSessions = parsedMessages.filter(reflushFilter).name(”filter")
.map(playbackEnrichment).name(”service")
.map(dataLookup)
enrichmentSessions.addSink(sink).name("sink")
@monaldax
4. The Co-process Joiner
@monaldax
4. Use Case – Play-Impressions Conversion Rate
@monaldax
• 130+ M members
• 10+ B Impressions / day
• 2.5+ B Play Events / day
• ~ 2 TB Processing State
4. Impressions And Plays Scale
@monaldax
Streaming Job
• # Impressions per user play
• Impression attributes leading to the play
4. Join Large Streams With Delayed, Out Of Order Events Based on
Event Time
@monaldax
P1P3
I2I1
Sink
Kafka Topics
plays
impressions
Understanding Event Time
Image Adapted from The Apache Beam Presentation Material
Event Time
Processing
Time 11:0010:00 15:0014:0013:0012:00
11:0010:00 15:0014:0013:0012:00
Input
Output
1 hour Window
impressions
Streaming Job
keyBy F1
4. Use Case: Join Impressions And Plays Stream On Event Time
Co-process
@monaldax
Kafka Topics
keyBy F2playsP2 K
Keyed State
I1 K
I2 K
Merge I2 P2
& Emit
Merge I2 P2
& Emit
Source 1
Streaming Job
keyBy F1
Co-process
State 1
State 2
@monaldax
keyBy F2Source 2
Keyed State
Sink
4. Pattern: The Co-process Joiner
• Process and Coalesce events for each stream grouped by same key
• Join if there is a match, evict when joined or timed out
4. Code Snippet – The Co-process Joiner, Setup sources
env.setStreamTimeCharacteristic(EventTime)
val impressionSource = kafkaSrc1
.filter(eventTypeFilter)
.flatMap(impressionParser)
.keyBy(in => (s"${profile_id}_${title_id}"))
val impressionSource = kafkaSrc2
.flatMap(playbackParser)
.keyBy(in => (s"${profile_id}_${title_id}"))
@monaldax
env.setStreamTimeCharacteris0c(EventTime)
val impressionSource = ka9aSrc1.filter(eventTypeFilter)
.flatMap(impressionParser)
.assignTimestampsAndWatermarks(
new BoundedOutOfOrdernessTimestampExtractor(Time.seconds(10) ) {...})
.keyBy(in => (s"${profile_id}_${0tle_id}"))
val impressionSource = ka9aSrc2.flatMap(playbackParser)
.assignTimestampsAndWatermarks(
new BoundedOutOfOrdernessTimestampExtractor(Time.seconds(10) ) {...})
.keyBy(in => (s"${profile_id}_${0tle_id}"))
4. Code Snippet – The Co-process Joiner, Setup sources
4. Code Snippet – The Co-process Joiner, Connect Streams
// Connect
impressionSource.connect(playSessionSource)
.process( new CoprocessImpressionsPlays())
.addSink(ka:aSink)
@monaldax
4. Code Snippet – The Co-process Joiner, Co-process Function
class CoprocessJoin extends CoProcessFunction {
override def processElement1(value, context, collector) {
… // update and reduce state, join with stream 2, set timer
}
override def processElement2(value, context, collector) {
… // update and reduce state, join with stream 2, set timer
}
override def onTimer(timestamp, context, collector) {
… // clear up state based on event time
}
@monaldax
5. Event-Sourced Materialized View
[Event Driven Application]
@monaldax
5. Use-case: Publish movie assets CDN location to Cache, to steer clients
to the closest location for playback
EvCache
asset1 OCA1, CA2
asset2 OCA1, CA3
Playback Assets
Service
Service
asset_1 added asset_8 deleted
OCA
OCA1
OCA
OCAN
Open Connect
Appliances (CDN)
Upload asset_1 Delete asset_8
Streaming Job
Source1
Generates Events to
publish all assets
asset1 OCA1, CA2….
asset2 OCA1, CA3 …
@monaldax
Materialized View
5. Use-case: Publish movie assets CDN location to Cache, to steer
clients to the closest location for playback
Streaming Job
Event Publisher
Optional Trigger
to flush view
Materialized View
@monaldax
Materialized View
Sink
5. Code Snippet – Setting up Sources
val fullPublishSource = env .addSource(new FullPublishSourceFunc7on(),
TypeInfoParser.parse("Tuple3<String, Integer, com.ne7lix.AMUpdate>"))
.setParallelism(1);
val kaCaSource = getSourceBuilder().fromKaCa("am_source")
@monaldax
5. Code Snippet – Union Source & Processing
val ka#aSource
.flatMap(new FlatmapFunc4on())) //split by movie
.assignTimestampsAndWatermarks(new AssignerWithPunctuatedWatermarks[...]())
.union(fullPublishSource) // union with full publish source
.keyBy(0, 1) // (cdn stack, movie)
.process(new UpdateFunc4on())) // update in-memory state, output at intervals.
.keyBy(0, 1) // (cdn stack, movie)
.process(new PublishToEvCacheFunc4on())); // publish to evcache
@monaldax
Patterns
Non-Functional
6. Elastic Dev Interface
@monaldax
6 Elastic Dev Interface
Spectrum Of Ease, Capability, & Flexibility
• Point & Click, with UDFs
• SQL with UDFs
• Annotation based API with code generation
• Code with reusable components
• (e.g., Data Hygiene, Script Transformer)
EaseofUse
Capability
7. Stream Processing Platform
@monaldax
7. Stream Processing Platform (SpaaS - Stream Processing Service as a Service)
Amazon EC2
Container Runtime
Reusable Components
Source & Sink Connectors, Filtering, Projection, etc.
Routers
(Streaming Job)
Streaming Jobs
ManagementService&UI
Metrics&Monitoring
StreamingJobDevelopment
Dashboards
@monaldax
Stream Processing Platform
(Streaming Engine, Config Management)
8. Rewind & Restatement
@monaldax
8. Use Case - Restate Results Due To Outage Or Bug In Business Logic
@monaldax
Time
Checkpoint y Checkpoint x
outage
Checkpoint x+1
Now
Time
8. Pattern: Rewind And Restatement
Rewind the source and state to a know good state
@monaldax
Checkpoint y Checkpoint x
outage
Checkpoint x+1
Now
Summary
@monaldax
1. Configurable Router
2. Script UDF Component
3. The Enricher
4. The Co-process Joiner
5. Event-Sourced Materialized View
Patterns Summary
@monaldax
6. Elastic Dev Interface
7. Stream Processing Platform
8. Rewind & Restatement
FUNCTIONAL NON-FUNCTIONAL
Q & A
Thank you
If you would like to discuss more
• @monaldax
• linkedin.com/in/monaldax
• Flink at Netflix, Paypal speaker series, 2018– http://bit.ly/monal-paypal
• Unbounded Data Processing Systems, Strangeloop, 2016 - http://bit.ly/monal-sloop
• AWS Re-Invent 2017 Netflix Keystone SPaaS, 2017 – http://bit.ly/monal-reInvent
• Keynote - Stream Processing with Flink, 2017 - http://bit.ly/monal-ff2017
• Dataflow Paper - http://bit.ly/dataflow-paper
Additional Stream Processing Material
@monaldax

More Related Content

What's hot

Extending the Yahoo Streaming Benchmark + MapR Benchmarks
Extending the Yahoo Streaming Benchmark + MapR BenchmarksExtending the Yahoo Streaming Benchmark + MapR Benchmarks
Extending the Yahoo Streaming Benchmark + MapR BenchmarksJamie Grier
 
Introducing Kafka Streams, the new stream processing library of Apache Kafka,...
Introducing Kafka Streams, the new stream processing library of Apache Kafka,...Introducing Kafka Streams, the new stream processing library of Apache Kafka,...
Introducing Kafka Streams, the new stream processing library of Apache Kafka,...Michael Noll
 
The Evolution of (Open Source) Data Processing
The Evolution of (Open Source) Data ProcessingThe Evolution of (Open Source) Data Processing
The Evolution of (Open Source) Data ProcessingAljoscha Krettek
 
Apache Pulsar Overview
Apache Pulsar OverviewApache Pulsar Overview
Apache Pulsar OverviewStreamlio
 
Zoo keeper in the wild
Zoo keeper in the wildZoo keeper in the wild
Zoo keeper in the wilddatamantra
 
Being Ready for Apache Kafka - Apache: Big Data Europe 2015
Being Ready for Apache Kafka - Apache: Big Data Europe 2015Being Ready for Apache Kafka - Apache: Big Data Europe 2015
Being Ready for Apache Kafka - Apache: Big Data Europe 2015Michael Noll
 
Introducing Kafka's Streams API
Introducing Kafka's Streams APIIntroducing Kafka's Streams API
Introducing Kafka's Streams APIconfluent
 
Flink Community Update December 2015: Year in Review
Flink Community Update December 2015: Year in ReviewFlink Community Update December 2015: Year in Review
Flink Community Update December 2015: Year in ReviewRobert Metzger
 
Rethinking Stream Processing with Apache Kafka: Applications vs. Clusters, St...
Rethinking Stream Processing with Apache Kafka: Applications vs. Clusters, St...Rethinking Stream Processing with Apache Kafka: Applications vs. Clusters, St...
Rethinking Stream Processing with Apache Kafka: Applications vs. Clusters, St...Michael Noll
 
[Spark Summit EU 2017] Apache spark streaming + kafka 0.10 an integration story
[Spark Summit EU 2017] Apache spark streaming + kafka 0.10  an integration story[Spark Summit EU 2017] Apache spark streaming + kafka 0.10  an integration story
[Spark Summit EU 2017] Apache spark streaming + kafka 0.10 an integration storyJoan Viladrosa Riera
 
Sparklyr: Recap, Updates, and Use Cases with Javier Luraschi
Sparklyr: Recap, Updates, and Use Cases with Javier LuraschiSparklyr: Recap, Updates, and Use Cases with Javier Luraschi
Sparklyr: Recap, Updates, and Use Cases with Javier LuraschiDatabricks
 
Kafka Streams: The Stream Processing Engine of Apache Kafka
Kafka Streams: The Stream Processing Engine of Apache KafkaKafka Streams: The Stream Processing Engine of Apache Kafka
Kafka Streams: The Stream Processing Engine of Apache KafkaEno Thereska
 
Building Continuous Application with Structured Streaming and Real-Time Data ...
Building Continuous Application with Structured Streaming and Real-Time Data ...Building Continuous Application with Structured Streaming and Real-Time Data ...
Building Continuous Application with Structured Streaming and Real-Time Data ...Databricks
 
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015Till Rohrmann
 
Universal metrics with Apache Beam
Universal metrics with Apache BeamUniversal metrics with Apache Beam
Universal metrics with Apache BeamEtienne Chauchot
 
Production Ready Kafka on Kubernetes (Devandra Tagare, Lyft) Kafka Summit SF ...
Production Ready Kafka on Kubernetes (Devandra Tagare, Lyft) Kafka Summit SF ...Production Ready Kafka on Kubernetes (Devandra Tagare, Lyft) Kafka Summit SF ...
Production Ready Kafka on Kubernetes (Devandra Tagare, Lyft) Kafka Summit SF ...confluent
 
Do's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in productionDo's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in productionjglobal
 
Developing Secure Scala Applications With Fortify For Scala
Developing Secure Scala Applications With Fortify For ScalaDeveloping Secure Scala Applications With Fortify For Scala
Developing Secure Scala Applications With Fortify For ScalaLightbend
 
Event sourcing - what could possibly go wrong ? Devoxx PL 2021
Event sourcing  - what could possibly go wrong ? Devoxx PL 2021Event sourcing  - what could possibly go wrong ? Devoxx PL 2021
Event sourcing - what could possibly go wrong ? Devoxx PL 2021Andrzej Ludwikowski
 
Apache Spark vs Apache Flink
Apache Spark vs Apache FlinkApache Spark vs Apache Flink
Apache Spark vs Apache FlinkAKASH SIHAG
 

What's hot (20)

Extending the Yahoo Streaming Benchmark + MapR Benchmarks
Extending the Yahoo Streaming Benchmark + MapR BenchmarksExtending the Yahoo Streaming Benchmark + MapR Benchmarks
Extending the Yahoo Streaming Benchmark + MapR Benchmarks
 
Introducing Kafka Streams, the new stream processing library of Apache Kafka,...
Introducing Kafka Streams, the new stream processing library of Apache Kafka,...Introducing Kafka Streams, the new stream processing library of Apache Kafka,...
Introducing Kafka Streams, the new stream processing library of Apache Kafka,...
 
The Evolution of (Open Source) Data Processing
The Evolution of (Open Source) Data ProcessingThe Evolution of (Open Source) Data Processing
The Evolution of (Open Source) Data Processing
 
Apache Pulsar Overview
Apache Pulsar OverviewApache Pulsar Overview
Apache Pulsar Overview
 
Zoo keeper in the wild
Zoo keeper in the wildZoo keeper in the wild
Zoo keeper in the wild
 
Being Ready for Apache Kafka - Apache: Big Data Europe 2015
Being Ready for Apache Kafka - Apache: Big Data Europe 2015Being Ready for Apache Kafka - Apache: Big Data Europe 2015
Being Ready for Apache Kafka - Apache: Big Data Europe 2015
 
Introducing Kafka's Streams API
Introducing Kafka's Streams APIIntroducing Kafka's Streams API
Introducing Kafka's Streams API
 
Flink Community Update December 2015: Year in Review
Flink Community Update December 2015: Year in ReviewFlink Community Update December 2015: Year in Review
Flink Community Update December 2015: Year in Review
 
Rethinking Stream Processing with Apache Kafka: Applications vs. Clusters, St...
Rethinking Stream Processing with Apache Kafka: Applications vs. Clusters, St...Rethinking Stream Processing with Apache Kafka: Applications vs. Clusters, St...
Rethinking Stream Processing with Apache Kafka: Applications vs. Clusters, St...
 
[Spark Summit EU 2017] Apache spark streaming + kafka 0.10 an integration story
[Spark Summit EU 2017] Apache spark streaming + kafka 0.10  an integration story[Spark Summit EU 2017] Apache spark streaming + kafka 0.10  an integration story
[Spark Summit EU 2017] Apache spark streaming + kafka 0.10 an integration story
 
Sparklyr: Recap, Updates, and Use Cases with Javier Luraschi
Sparklyr: Recap, Updates, and Use Cases with Javier LuraschiSparklyr: Recap, Updates, and Use Cases with Javier Luraschi
Sparklyr: Recap, Updates, and Use Cases with Javier Luraschi
 
Kafka Streams: The Stream Processing Engine of Apache Kafka
Kafka Streams: The Stream Processing Engine of Apache KafkaKafka Streams: The Stream Processing Engine of Apache Kafka
Kafka Streams: The Stream Processing Engine of Apache Kafka
 
Building Continuous Application with Structured Streaming and Real-Time Data ...
Building Continuous Application with Structured Streaming and Real-Time Data ...Building Continuous Application with Structured Streaming and Real-Time Data ...
Building Continuous Application with Structured Streaming and Real-Time Data ...
 
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
 
Universal metrics with Apache Beam
Universal metrics with Apache BeamUniversal metrics with Apache Beam
Universal metrics with Apache Beam
 
Production Ready Kafka on Kubernetes (Devandra Tagare, Lyft) Kafka Summit SF ...
Production Ready Kafka on Kubernetes (Devandra Tagare, Lyft) Kafka Summit SF ...Production Ready Kafka on Kubernetes (Devandra Tagare, Lyft) Kafka Summit SF ...
Production Ready Kafka on Kubernetes (Devandra Tagare, Lyft) Kafka Summit SF ...
 
Do's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in productionDo's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in production
 
Developing Secure Scala Applications With Fortify For Scala
Developing Secure Scala Applications With Fortify For ScalaDeveloping Secure Scala Applications With Fortify For Scala
Developing Secure Scala Applications With Fortify For Scala
 
Event sourcing - what could possibly go wrong ? Devoxx PL 2021
Event sourcing  - what could possibly go wrong ? Devoxx PL 2021Event sourcing  - what could possibly go wrong ? Devoxx PL 2021
Event sourcing - what could possibly go wrong ? Devoxx PL 2021
 
Apache Spark vs Apache Flink
Apache Spark vs Apache FlinkApache Spark vs Apache Flink
Apache Spark vs Apache Flink
 

Similar to Patterns of-streaming-applications-qcon-2018-monal-daxini

Patterns of Streaming Applications
Patterns of Streaming ApplicationsPatterns of Streaming Applications
Patterns of Streaming ApplicationsC4Media
 
Flink at netflix paypal speaker series
Flink at netflix   paypal speaker seriesFlink at netflix   paypal speaker series
Flink at netflix paypal speaker seriesMonal Daxini
 
AWS Re-Invent 2017 Netflix Keystone SPaaS - Monal Daxini - Abd320 2017
AWS Re-Invent 2017 Netflix Keystone SPaaS - Monal Daxini - Abd320 2017AWS Re-Invent 2017 Netflix Keystone SPaaS - Monal Daxini - Abd320 2017
AWS Re-Invent 2017 Netflix Keystone SPaaS - Monal Daxini - Abd320 2017Monal Daxini
 
Building Stream Processing as a Service
Building Stream Processing as a ServiceBuilding Stream Processing as a Service
Building Stream Processing as a ServiceSteven Wu
 
Netflix Keystone SPaaS: Real-time Stream Processing as a Service - ABD320 - r...
Netflix Keystone SPaaS: Real-time Stream Processing as a Service - ABD320 - r...Netflix Keystone SPaaS: Real-time Stream Processing as a Service - ABD320 - r...
Netflix Keystone SPaaS: Real-time Stream Processing as a Service - ABD320 - r...Amazon Web Services
 
Flink forward-2017-netflix keystones-paas
Flink forward-2017-netflix keystones-paasFlink forward-2017-netflix keystones-paas
Flink forward-2017-netflix keystones-paasMonal Daxini
 
Is 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingIs 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingPhil Wilkins
 
Data Transformations on Ops Metrics using Kafka Streams (Srividhya Ramachandr...
Data Transformations on Ops Metrics using Kafka Streams (Srividhya Ramachandr...Data Transformations on Ops Metrics using Kafka Streams (Srividhya Ramachandr...
Data Transformations on Ops Metrics using Kafka Streams (Srividhya Ramachandr...confluent
 
Introducción a Stream Processing utilizando Kafka Streams
Introducción a Stream Processing utilizando Kafka StreamsIntroducción a Stream Processing utilizando Kafka Streams
Introducción a Stream Processing utilizando Kafka Streamsconfluent
 
Devoxx university - Kafka de haut en bas
Devoxx university - Kafka de haut en basDevoxx university - Kafka de haut en bas
Devoxx university - Kafka de haut en basFlorent Ramiere
 
Au delà des brokers, un tour de l’environnement Kafka | Florent Ramière
Au delà des brokers, un tour de l’environnement Kafka | Florent RamièreAu delà des brokers, un tour de l’environnement Kafka | Florent Ramière
Au delà des brokers, un tour de l’environnement Kafka | Florent Ramièreconfluent
 
Mule soft meetup_chandigarh_#7_25_sept_2021
Mule soft meetup_chandigarh_#7_25_sept_2021Mule soft meetup_chandigarh_#7_25_sept_2021
Mule soft meetup_chandigarh_#7_25_sept_2021Lalit Panwar
 
The Never Landing Stream with HTAP and Streaming
The Never Landing Stream with HTAP and StreamingThe Never Landing Stream with HTAP and Streaming
The Never Landing Stream with HTAP and StreamingTimothy Spann
 
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...Guido Schmutz
 
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningApache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningGuido Schmutz
 
Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021
Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021
Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021StreamNative
 
Flink Forward San Francisco 2019: Building production Flink jobs with Airstre...
Flink Forward San Francisco 2019: Building production Flink jobs with Airstre...Flink Forward San Francisco 2019: Building production Flink jobs with Airstre...
Flink Forward San Francisco 2019: Building production Flink jobs with Airstre...Flink Forward
 
Unbounded bounded-data-strangeloop-2016-monal-daxini
Unbounded bounded-data-strangeloop-2016-monal-daxiniUnbounded bounded-data-strangeloop-2016-monal-daxini
Unbounded bounded-data-strangeloop-2016-monal-daxiniMonal Daxini
 
Netflix Keystone—Cloud scale event processing pipeline
Netflix Keystone—Cloud scale event processing pipelineNetflix Keystone—Cloud scale event processing pipeline
Netflix Keystone—Cloud scale event processing pipelineMonal Daxini
 
Apache StreamPipes – Flexible Industrial IoT Management
Apache StreamPipes – Flexible Industrial IoT ManagementApache StreamPipes – Flexible Industrial IoT Management
Apache StreamPipes – Flexible Industrial IoT ManagementApache StreamPipes
 

Similar to Patterns of-streaming-applications-qcon-2018-monal-daxini (20)

Patterns of Streaming Applications
Patterns of Streaming ApplicationsPatterns of Streaming Applications
Patterns of Streaming Applications
 
Flink at netflix paypal speaker series
Flink at netflix   paypal speaker seriesFlink at netflix   paypal speaker series
Flink at netflix paypal speaker series
 
AWS Re-Invent 2017 Netflix Keystone SPaaS - Monal Daxini - Abd320 2017
AWS Re-Invent 2017 Netflix Keystone SPaaS - Monal Daxini - Abd320 2017AWS Re-Invent 2017 Netflix Keystone SPaaS - Monal Daxini - Abd320 2017
AWS Re-Invent 2017 Netflix Keystone SPaaS - Monal Daxini - Abd320 2017
 
Building Stream Processing as a Service
Building Stream Processing as a ServiceBuilding Stream Processing as a Service
Building Stream Processing as a Service
 
Netflix Keystone SPaaS: Real-time Stream Processing as a Service - ABD320 - r...
Netflix Keystone SPaaS: Real-time Stream Processing as a Service - ABD320 - r...Netflix Keystone SPaaS: Real-time Stream Processing as a Service - ABD320 - r...
Netflix Keystone SPaaS: Real-time Stream Processing as a Service - ABD320 - r...
 
Flink forward-2017-netflix keystones-paas
Flink forward-2017-netflix keystones-paasFlink forward-2017-netflix keystones-paas
Flink forward-2017-netflix keystones-paas
 
Is 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingIs 12 Factor App Right About Logging
Is 12 Factor App Right About Logging
 
Data Transformations on Ops Metrics using Kafka Streams (Srividhya Ramachandr...
Data Transformations on Ops Metrics using Kafka Streams (Srividhya Ramachandr...Data Transformations on Ops Metrics using Kafka Streams (Srividhya Ramachandr...
Data Transformations on Ops Metrics using Kafka Streams (Srividhya Ramachandr...
 
Introducción a Stream Processing utilizando Kafka Streams
Introducción a Stream Processing utilizando Kafka StreamsIntroducción a Stream Processing utilizando Kafka Streams
Introducción a Stream Processing utilizando Kafka Streams
 
Devoxx university - Kafka de haut en bas
Devoxx university - Kafka de haut en basDevoxx university - Kafka de haut en bas
Devoxx university - Kafka de haut en bas
 
Au delà des brokers, un tour de l’environnement Kafka | Florent Ramière
Au delà des brokers, un tour de l’environnement Kafka | Florent RamièreAu delà des brokers, un tour de l’environnement Kafka | Florent Ramière
Au delà des brokers, un tour de l’environnement Kafka | Florent Ramière
 
Mule soft meetup_chandigarh_#7_25_sept_2021
Mule soft meetup_chandigarh_#7_25_sept_2021Mule soft meetup_chandigarh_#7_25_sept_2021
Mule soft meetup_chandigarh_#7_25_sept_2021
 
The Never Landing Stream with HTAP and Streaming
The Never Landing Stream with HTAP and StreamingThe Never Landing Stream with HTAP and Streaming
The Never Landing Stream with HTAP and Streaming
 
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
 
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningApache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
 
Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021
Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021
Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021
 
Flink Forward San Francisco 2019: Building production Flink jobs with Airstre...
Flink Forward San Francisco 2019: Building production Flink jobs with Airstre...Flink Forward San Francisco 2019: Building production Flink jobs with Airstre...
Flink Forward San Francisco 2019: Building production Flink jobs with Airstre...
 
Unbounded bounded-data-strangeloop-2016-monal-daxini
Unbounded bounded-data-strangeloop-2016-monal-daxiniUnbounded bounded-data-strangeloop-2016-monal-daxini
Unbounded bounded-data-strangeloop-2016-monal-daxini
 
Netflix Keystone—Cloud scale event processing pipeline
Netflix Keystone—Cloud scale event processing pipelineNetflix Keystone—Cloud scale event processing pipeline
Netflix Keystone—Cloud scale event processing pipeline
 
Apache StreamPipes – Flexible Industrial IoT Management
Apache StreamPipes – Flexible Industrial IoT ManagementApache StreamPipes – Flexible Industrial IoT Management
Apache StreamPipes – Flexible Industrial IoT Management
 

More from Monal Daxini

Real Time Data Infrastructure team overview
Real Time Data Infrastructure team overviewReal Time Data Infrastructure team overview
Real Time Data Infrastructure team overviewMonal Daxini
 
Beaming flink to the cloud @ netflix ff 2016-monal-daxini
Beaming flink to the cloud @ netflix   ff 2016-monal-daxiniBeaming flink to the cloud @ netflix   ff 2016-monal-daxini
Beaming flink to the cloud @ netflix ff 2016-monal-daxiniMonal Daxini
 
The Netflix Way to deal with Big Data Problems
The Netflix Way to deal with Big Data ProblemsThe Netflix Way to deal with Big Data Problems
The Netflix Way to deal with Big Data ProblemsMonal Daxini
 
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016Monal Daxini
 
Netflix Keystone Pipeline at Samza Meetup 10-13-2015
Netflix Keystone Pipeline at Samza Meetup 10-13-2015Netflix Keystone Pipeline at Samza Meetup 10-13-2015
Netflix Keystone Pipeline at Samza Meetup 10-13-2015Monal Daxini
 
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015Monal Daxini
 
Netflix at-disney-09-26-2014
Netflix at-disney-09-26-2014Netflix at-disney-09-26-2014
Netflix at-disney-09-26-2014Monal Daxini
 

More from Monal Daxini (7)

Real Time Data Infrastructure team overview
Real Time Data Infrastructure team overviewReal Time Data Infrastructure team overview
Real Time Data Infrastructure team overview
 
Beaming flink to the cloud @ netflix ff 2016-monal-daxini
Beaming flink to the cloud @ netflix   ff 2016-monal-daxiniBeaming flink to the cloud @ netflix   ff 2016-monal-daxini
Beaming flink to the cloud @ netflix ff 2016-monal-daxini
 
The Netflix Way to deal with Big Data Problems
The Netflix Way to deal with Big Data ProblemsThe Netflix Way to deal with Big Data Problems
The Netflix Way to deal with Big Data Problems
 
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
 
Netflix Keystone Pipeline at Samza Meetup 10-13-2015
Netflix Keystone Pipeline at Samza Meetup 10-13-2015Netflix Keystone Pipeline at Samza Meetup 10-13-2015
Netflix Keystone Pipeline at Samza Meetup 10-13-2015
 
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
 
Netflix at-disney-09-26-2014
Netflix at-disney-09-26-2014Netflix at-disney-09-26-2014
Netflix at-disney-09-26-2014
 

Recently uploaded

Amazon TQM (2) Amazon TQM (2)Amazon TQM (2).pptx
Amazon TQM (2) Amazon TQM (2)Amazon TQM (2).pptxAmazon TQM (2) Amazon TQM (2)Amazon TQM (2).pptx
Amazon TQM (2) Amazon TQM (2)Amazon TQM (2).pptxAbdelrhman abooda
 
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改yuu sss
 
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...Suhani Kapoor
 
9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home Service9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home ServiceSapana Sha
 
How we prevented account sharing with MFA
How we prevented account sharing with MFAHow we prevented account sharing with MFA
How we prevented account sharing with MFAAndrei Kaleshka
 
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝DelhiRS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhijennyeacort
 
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort servicejennyeacort
 
B2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docxB2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docxStephen266013
 
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfKantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfSocial Samosa
 
Call Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceCall Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceSapana Sha
 
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Callshivangimorya083
 
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...dajasot375
 
RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998YohFuh
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfLars Albertsson
 
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一F sss
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)jennyeacort
 
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一fhwihughh
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]📊 Markus Baersch
 
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...soniya singh
 

Recently uploaded (20)

Amazon TQM (2) Amazon TQM (2)Amazon TQM (2).pptx
Amazon TQM (2) Amazon TQM (2)Amazon TQM (2).pptxAmazon TQM (2) Amazon TQM (2)Amazon TQM (2).pptx
Amazon TQM (2) Amazon TQM (2)Amazon TQM (2).pptx
 
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
 
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...
 
9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home Service9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home Service
 
How we prevented account sharing with MFA
How we prevented account sharing with MFAHow we prevented account sharing with MFA
How we prevented account sharing with MFA
 
Deep Generative Learning for All - The Gen AI Hype (Spring 2024)
Deep Generative Learning for All - The Gen AI Hype (Spring 2024)Deep Generative Learning for All - The Gen AI Hype (Spring 2024)
Deep Generative Learning for All - The Gen AI Hype (Spring 2024)
 
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝DelhiRS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
 
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
 
B2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docxB2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docx
 
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfKantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
 
Call Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceCall Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts Service
 
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call
 
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
 
RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdf
 
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
 
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]
 
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...
 

Patterns of-streaming-applications-qcon-2018-monal-daxini

  • 1. Monal Daxini 11/ 6 / 2018 @ monaldax Patterns Of Streaming Applications P O S A
  • 2. • 4+ years building stream processing platform at Netflix • Drove technical vision, roadmap, led implementation • 17+ years building distributed systems Profile @monaldax
  • 3. Set The Stage 8 Patterns 5 Functional 3 Non-Functional Structure Of The Talk Stream Processing ? @monaldax
  • 4. Disclaimer Inspired by True Events encountered building and operating a Stream Processing platform, and use cases that are in production or in ideation phase in the cloud. Some code and identifying details have been changed, artistic liberties have been taken, to protect the privacy of streaming applications, and for sharing the know-how. Some use cases may have been simplified. @monaldax
  • 6.
  • 8. User Activity Stream - Batched Flash Jessica Luke Feb 25 Feb 26 @monaldax
  • 9. Sessions - Batched User Activity Stream Feb 25 Feb 26 @monaldax Flash Jessica Luke
  • 10. Correct Session - Batched User Activity Stream Feb 25 Feb 26 @monaldax Flash Jessica Luke
  • 11. Stream Processing Natural For User Activity Stream Sessions @monaldax Flash Jessica Luke
  • 12. 1. Low latency insights and analytics 2. Process unbounded data sets 3. ETL as data arrives 4. Ad-hoc analytics and Event driven applications Why Stream Processing? @monaldax
  • 14. Stream Processing App Architecture Blueprint Stream Processing Job Source @monaldax Sink
  • 15. Stream Processing App Architecture Blueprint Stream Processing Job Source @monaldax Sinks Source Source Side Input
  • 17. Flink Programs Are Streaming Dataflows – Streams And Transformation Operators Image adapted, source: Flink Docs@monaldax
  • 18. Streams And Transformation Operators - Windowing Image source: Flink Docs 10 Second @monaldax
  • 19. Streaming Dataflow DAG Image adapted, source: Flink Docs@monaldax
  • 20. Scalable Automatic Scheduling Of Operations Image adapted, source: Flink Docs Job Manager (Process)(Process) (Process) @monaldax Parallelism 2 Sink 1
  • 21. Flexible Deployment Bare Metal VM / Cloud Containers @monaldax
  • 22. Image adapted from: Stephan Ewen@monaldax Stateless Stream Processing No state maintained across events
  • 23. Streaming Application Flink TaskManager Local State Fault-tolerant Processing – Stateful Processing Sink Savepoints (Explicitly Triggered) Checkpoints (Periodic, Asynchronous, Incremental Checkpoint) Source / Producers @monaldax In-Memory / On-Disk Local State Access
  • 24. Levels Of API Abstraction In Flink Source: Flink Documentation
  • 26. ● Use Case / Motivation ● Pattern ● Code Snippet & Deployment mechanism ● Related Pattern, if any Describing Design Patterns @monaldax
  • 29.
  • 30.
  • 31. • Create ingest pipelines for different event streams declaratively • Route events to data warehouse, data stores for analytics • With at-least-once semantics • Streaming ETL - Allow declarative filtering and projection 1.1 Use Case / Motivation – Ingest Pipelines @monaldax
  • 32. 1.1 Keystone Pipeline – A Self-serve Product • SERVERLESS • Turnkey – ready to use • 100% in the cloud • No code, Managed Code & Operations @monaldax
  • 33. 1.1 UI To Provision 1 Data Stream, A Filter, & 3 Sinks
  • 34. 1.1 Optional Filter & Projection (Out of the box)
  • 35. 1.1 Provision 1 Kafka Topic, 3 Configurable Router Jobs play_events Consumer Kafka Elasticsearch @monaldax Events Configurable Router Job Filter Projection Connector Configurable Router Job Filter Projection Connector Configurable Router Job Filter Projection Connector 1 2 3 4 5 6 7 Fan-out: 3 R
  • 36. @monaldax 1.1 Keystone Pipeline Scale ● Up to 1 trillion new events / day ● Peak: 12M events / sec, 36 GB / sec ● ̴ 4 PB of data transported / day ● ̴ 2000 Router Jobs / 10,000 containers
  • 37. 1.1 Pattern: Configurable Isolated Router @monaldax Sink Configurable Router Job Declarative ProcessorsDeclarative Processors Events Producer
  • 38. val ka#aSource = getSourceBuilder.fromKa#a("topic1").build() val selectedSink = getSinkBuilder() .toSelector(sinkName).declareWith("ka,asink", ka#aSink) .or("s3sink", s3Sink).or("essink", esSink).or("nullsink", nullSink).build(); ka#aSource .filter(KeystoneFilterFunc6on).map(KeystoneProjec6onFunc6on) .addSink(selectedSink) 1.1 Code Snippet: Configurable Isolated Router NoUserCode @monaldax
  • 39. • Popular stream / topic has high fan-out factor • Requires large Kafka Clusters, expensive 1.2 Use Case / Motivation – Ingest large streams with high fan-out Efficiently @monaldax R R Filter Projection Kafka R TopicA Cluster1 TopicB Cluster1 Events Producer
  • 40. 1.2 Pattern: Configurable Co-Isolated Router @monaldax Co-Isolated Router R Filter Projection Kafka TopicA Cluster1 TopicB Cluster1 Merge Routing To Same Kafka Cluster Events Producer
  • 41. ui_A_Clicks_KakfaSource .filter(filter) .map(projection) .map(outputConverter) .addSink(kafkaSinkA_Topic1) 1.2 Code Snippet: Configurable Co-Isolated Router ui_A_Clicks_Ka;aSource .map(transformer) .flatMap(outputFlatMap) .map(outputConverter) .addSink(ka.aSinkA_Topic2) NoUserCode @monaldax
  • 42. 2. Script UDF* Component [Static / Dynamic] *UDF – User Defined Function @monaldax
  • 43. 2. Use Case / Motivation – Configurable Business Logic Code for operations like transformations and filtering Managed Router / Streaming Job Source Sink Biz Logic Job DAG @monaldax
  • 44. 2. Pattern: Static or Dynamic Script UDF (stateless) Component Comes with all the Pros and Cons of scripting engine Streaming Job Source Sink UDF Script Engine executes function defined in the UI @monaldax
  • 45. val xscript = new DynamicConfig("x.script") kakfaSource .map(new ScriptFunction(xscript)) .filter(new ScriptFunction(xsricpt2)) .addSink(new NoopSink()) 2. Code Snippet: Script UDF Component // Script Function val sm = new ScriptEngineManager() ScriptEngine se = m.getEngineByName ("nashorn"); se .eval(script) Contents configurable at runtime @monaldax
  • 47. Next 3 Patterns (3-5) Require Explicit Deployment @monaldax
  • 48. 3. User Case - Generating Play Events For Personalization And Show Discovery @monaldax
  • 49. @monaldax 3. Use-case: Create play events with current data from services, and lookup table for analytics. Using lookup table keeps originating events lightweight Playback History Service Video Metadata Play Logs Service call Periodically updating lookup data Streaming Job Resource Rate Limiter
  • 50. 3. Pattern: The Enricher - Rate limit with source or service rate limiter, or with resources - Pull or push data, Sync / async Streaming Job Source Sink Side Input • Service call • Lookup from Data Store • Static or Periodically updated lookup data @monaldax Source / Service Rate Limiter
  • 51. 3. Code Snippet: The Enricher val ka#aSource = getSourceBuilder.fromKa#a("topic1").build() val parsedMessages = ka#aSource.flatMap(parser).name(”parser") val enrichedSessions = parsedMessages.filter(reflushFilter).name(”filter") .map(playbackEnrichment).name(”service") .map(dataLookup) enrichmentSessions.addSink(sink).name("sink") @monaldax
  • 52. 4. The Co-process Joiner @monaldax
  • 53. 4. Use Case – Play-Impressions Conversion Rate @monaldax
  • 54. • 130+ M members • 10+ B Impressions / day • 2.5+ B Play Events / day • ~ 2 TB Processing State 4. Impressions And Plays Scale @monaldax
  • 55. Streaming Job • # Impressions per user play • Impression attributes leading to the play 4. Join Large Streams With Delayed, Out Of Order Events Based on Event Time @monaldax P1P3 I2I1 Sink Kafka Topics plays impressions
  • 56. Understanding Event Time Image Adapted from The Apache Beam Presentation Material Event Time Processing Time 11:0010:00 15:0014:0013:0012:00 11:0010:00 15:0014:0013:0012:00 Input Output 1 hour Window
  • 57. impressions Streaming Job keyBy F1 4. Use Case: Join Impressions And Plays Stream On Event Time Co-process @monaldax Kafka Topics keyBy F2playsP2 K Keyed State I1 K I2 K Merge I2 P2 & Emit Merge I2 P2 & Emit
  • 58. Source 1 Streaming Job keyBy F1 Co-process State 1 State 2 @monaldax keyBy F2Source 2 Keyed State Sink 4. Pattern: The Co-process Joiner • Process and Coalesce events for each stream grouped by same key • Join if there is a match, evict when joined or timed out
  • 59. 4. Code Snippet – The Co-process Joiner, Setup sources env.setStreamTimeCharacteristic(EventTime) val impressionSource = kafkaSrc1 .filter(eventTypeFilter) .flatMap(impressionParser) .keyBy(in => (s"${profile_id}_${title_id}")) val impressionSource = kafkaSrc2 .flatMap(playbackParser) .keyBy(in => (s"${profile_id}_${title_id}")) @monaldax
  • 60. env.setStreamTimeCharacteris0c(EventTime) val impressionSource = ka9aSrc1.filter(eventTypeFilter) .flatMap(impressionParser) .assignTimestampsAndWatermarks( new BoundedOutOfOrdernessTimestampExtractor(Time.seconds(10) ) {...}) .keyBy(in => (s"${profile_id}_${0tle_id}")) val impressionSource = ka9aSrc2.flatMap(playbackParser) .assignTimestampsAndWatermarks( new BoundedOutOfOrdernessTimestampExtractor(Time.seconds(10) ) {...}) .keyBy(in => (s"${profile_id}_${0tle_id}")) 4. Code Snippet – The Co-process Joiner, Setup sources
  • 61. 4. Code Snippet – The Co-process Joiner, Connect Streams // Connect impressionSource.connect(playSessionSource) .process( new CoprocessImpressionsPlays()) .addSink(ka:aSink) @monaldax
  • 62. 4. Code Snippet – The Co-process Joiner, Co-process Function class CoprocessJoin extends CoProcessFunction { override def processElement1(value, context, collector) { … // update and reduce state, join with stream 2, set timer } override def processElement2(value, context, collector) { … // update and reduce state, join with stream 2, set timer } override def onTimer(timestamp, context, collector) { … // clear up state based on event time } @monaldax
  • 63. 5. Event-Sourced Materialized View [Event Driven Application] @monaldax
  • 64. 5. Use-case: Publish movie assets CDN location to Cache, to steer clients to the closest location for playback EvCache asset1 OCA1, CA2 asset2 OCA1, CA3 Playback Assets Service Service asset_1 added asset_8 deleted OCA OCA1 OCA OCAN Open Connect Appliances (CDN) Upload asset_1 Delete asset_8 Streaming Job Source1 Generates Events to publish all assets asset1 OCA1, CA2…. asset2 OCA1, CA3 … @monaldax Materialized View
  • 65. 5. Use-case: Publish movie assets CDN location to Cache, to steer clients to the closest location for playback Streaming Job Event Publisher Optional Trigger to flush view Materialized View @monaldax Materialized View Sink
  • 66. 5. Code Snippet – Setting up Sources val fullPublishSource = env .addSource(new FullPublishSourceFunc7on(), TypeInfoParser.parse("Tuple3<String, Integer, com.ne7lix.AMUpdate>")) .setParallelism(1); val kaCaSource = getSourceBuilder().fromKaCa("am_source") @monaldax
  • 67. 5. Code Snippet – Union Source & Processing val ka#aSource .flatMap(new FlatmapFunc4on())) //split by movie .assignTimestampsAndWatermarks(new AssignerWithPunctuatedWatermarks[...]()) .union(fullPublishSource) // union with full publish source .keyBy(0, 1) // (cdn stack, movie) .process(new UpdateFunc4on())) // update in-memory state, output at intervals. .keyBy(0, 1) // (cdn stack, movie) .process(new PublishToEvCacheFunc4on())); // publish to evcache @monaldax
  • 69. 6. Elastic Dev Interface @monaldax
  • 70. 6 Elastic Dev Interface Spectrum Of Ease, Capability, & Flexibility • Point & Click, with UDFs • SQL with UDFs • Annotation based API with code generation • Code with reusable components • (e.g., Data Hygiene, Script Transformer) EaseofUse Capability
  • 71. 7. Stream Processing Platform @monaldax
  • 72. 7. Stream Processing Platform (SpaaS - Stream Processing Service as a Service) Amazon EC2 Container Runtime Reusable Components Source & Sink Connectors, Filtering, Projection, etc. Routers (Streaming Job) Streaming Jobs ManagementService&UI Metrics&Monitoring StreamingJobDevelopment Dashboards @monaldax Stream Processing Platform (Streaming Engine, Config Management)
  • 73. 8. Rewind & Restatement @monaldax
  • 74. 8. Use Case - Restate Results Due To Outage Or Bug In Business Logic @monaldax Time Checkpoint y Checkpoint x outage Checkpoint x+1 Now
  • 75. Time 8. Pattern: Rewind And Restatement Rewind the source and state to a know good state @monaldax Checkpoint y Checkpoint x outage Checkpoint x+1 Now
  • 77. 1. Configurable Router 2. Script UDF Component 3. The Enricher 4. The Co-process Joiner 5. Event-Sourced Materialized View Patterns Summary @monaldax 6. Elastic Dev Interface 7. Stream Processing Platform 8. Rewind & Restatement FUNCTIONAL NON-FUNCTIONAL
  • 78. Q & A Thank you If you would like to discuss more • @monaldax • linkedin.com/in/monaldax
  • 79. • Flink at Netflix, Paypal speaker series, 2018– http://bit.ly/monal-paypal • Unbounded Data Processing Systems, Strangeloop, 2016 - http://bit.ly/monal-sloop • AWS Re-Invent 2017 Netflix Keystone SPaaS, 2017 – http://bit.ly/monal-reInvent • Keynote - Stream Processing with Flink, 2017 - http://bit.ly/monal-ff2017 • Dataflow Paper - http://bit.ly/dataflow-paper Additional Stream Processing Material @monaldax