SlideShare a Scribd company logo
Bravo Six, Going Realtime.
Transitioning Activision Data
Pipeline to Streaming
© 2020 Activision Publishing, Inc.
Hello!
I am Yaroslav Tkachenko
Software Architect at Activision Data.
You can find me at @sap1ens (pretty much everywhere).
2
Activision Data Pipeline
3
● Ingesting, processing and storing game telemetry data
● Providing tabular, API and streaming access to data
HTTP API
Schema
Registry
Magic
200k+ msg/s
Ingestion rate
9 years
Age of the oldest game
5+ PB
Data lake size (AWS S3)
5
Challenges
● Complex client-side & server-side game telemetry
● Long-living titles, hard to update or deprecate
● Various data formats, message schemas and envelopes
● Development data == production data
● Scalability, elasticity & cost
6
Established standards
7
● Kafka topic name conventions must be followed
● Payload schema must be uploaded to the Schema Registry
● Message envelope has a schema too (Protobuf), with a set of
required fields
Old pipeline
Quick overview
aggregate transform transform
devdata
proddata
Batch job*
(MR, Hive, Spark)
ETL API
* every X hours
transformed data
ETL’ed data
Prod data
Old pipeline
Architecture Flaws
● Scalability solution as a workaround
● Painful to switch between dev &
prod
● No streaming capabilities
● Adhoc integration
Bottlenecks
● Latency limitations
● MR glob length, memory is not
infinite (ETL API), etc.
● Lots of manual configuration
● Lots of manual ETL
11
New pipeline
It gets better from here
Apache Kafka
● The Streams API allows an application to act as a stream
processor, consuming an input stream from one or more topics
and producing an output stream to one or more output topics,
effectively transforming the input streams to output streams.
● The Connector API allows building and running reusable
producers or consumers that connect Kafka topics to existing
applications or data systems. For example, a connector to a
relational database might capture every change to a table.
13
~10 seconds
End-to-end streaming latency
90% cheaper
Per user/byte
6-24 hours → 5-10 mins
Tabular data available for querying
14
Kafka Streams
● One transformation step = one
service*
○ Not entirely true anymore, we’ve
combined some steps to optimize
cost and reduce unnecessary IO
● Stateless if possible
● Rich routing
● Auto-scaling & self-healing
● LOTS of tooling
Guiding principles
Kafka Connect
● Handle integration - AWS S3,
Cassandra, Elasticsearch, etc.
● Only sink connectors
● Invest in configuration,
deployments, monitoring
15
transform transform Connect
Why
Kafka
Streams?
17
Simple Java
library
Industry
standard
features
Separation
of concerns
that makes
sense
Kafka
first
Our internal protocol
18
Serialized Avro
Null (99%)
Schema guid
Other metadata,
mostly for routing
Kafka Message Value
Kafka Message Key
Kafka Message Headers
Schema management
● Schemas are generated & uploaded automatically if needed.
Schema hash is used as id
● Make schemas immutable and cache them aggressively. You
have to use them for every single record!
19
Schema
Registry API
Distributed
Cache
In-memory
Cache
Typical Kafka Streams
service topology
20
consume process
enrich produce
DLQ
21
1 KStream[] streams = builder
2 .stream(Pattern.compile(applicationConfig.getTopics()))
3 .transform(MetadataEnricher::new)
4 .transform(() -> new InputMetricsHandler(applicationMetrics))
5 .transform(ResultExtractor::new)
6 .transform(() -> new OutputMetricsHandler(applicationMetrics))
7 .branch(
8 (key, value) -> value instanceof RecordSucceeded,
9 (key, value) -> value instanceof RecordFailed,
10 (key, value) -> value instanceof RecordSkipped
11 );
12
13 // RecordSucceeded
14 streams[0].map((key, value) -> KeyValue.pair(key, ((RecordSucceeded)
value).getGenericRecord()))
15 .transform(SchemaGuidEnricher<String, GenericRecord>::new)
16 .to(new SinkTopicNameExtractor());
17
18 // RecordFailed
19 streams[1].process(dlqFailureResultHandlerSupplier);
Routing & configuration
Before:
<env>.<producer>.<title>.<category>-<protocol>
e.g.
prod.service-a.1234.match_summary-v1
“raw” data, no transformations
22
Routing & configuration
Now:
<env>.rdp.<game>.<stage1>
↓
<env>.rdp.<game>.<stage2>
↓
<env>.rdp.<game>.<stageN>
23
microservice
microservice
Routing & configuration
prod.rdp.mw.ingested
↓
prod.rdp.mw.parsed
24
microservice
prodMwServiceA:
stream:
headers:
env: prod
game: mw
source: service-a
exclude: <thingX>
action:
type: parse
protocol: proto2
Routing & configuration
prod.rdp.mw.ingested
↓
prod.rdp.mw.parsed
25
microservice
prodMwServiceA:
stream:
headers:
env: prod
game: mw
source: service-a
exclude: <thingX>
action:
type: parse
protocol: proto2Streams can be skipped, split, merged, sampled, etc.
Dynamic Routing*
26
● Centralized, declarative configuration
● Self-serve APIs and UIs
● Every change is automatically applied to all running services
within seconds
Infra & Tools
27
● One-click Kafka deployment (Jenkins, Ansible)
● Kafka broker EBS auto-scaling
● Versioned & deployable Kafka topic configuration
● Built tooling for:
○ Data reprocessing and DLQ resubmission
○ Offset migration between consumer groups
○ Message inspection
○ ...
Scaling
● Every application submits
<app_name>.lag metric in
milliseconds
● ECS Step Scaling: add/remove
X more instances every Y
minutes
● Add an extra policy for rapid
scaling
Auto-scaling & self-healing
Healing
● Heartbeat endpoint monitors
streams.state() result
● ECS healthcheck replaces
unhealthy instances
● Stateful applications need
more time to bootstrap
28
Why
Kafka
Connect?
29
Powerful
framework
Built-in
connectors
Separation
of concerns
that makes
sense
Kafka
first
Kafka Connect
● Multiple smaller clusters > one big cluster
● Connectors configuration lives in git, uses Jsonnet.
Deployment script leverages REST API
● Custom Converter, thanks to KIP-440
● ❤ lensesio/kafka-connect-ui
● Collecting & using tons of metrics available over JMX
30
C* Connector
● Implemented from scratch, inspired by JDBC connector
● Started with porting over existing C* integration code
● Took us a few days (!) to wrap it up
● Generalizing is hard
● Very performant, usually just a few tasks are running
31
ES Connector
● Using open-source kafka-connect-elasticsearch
● Leveraging SMTs to:
○ Partition single topic into multiple indexes
○ Enrich with a timestamp
● Currently very low-volume
32
S3 Connector
● Started with forking open-source kafka-connect-s3
● Added custom Avro and Parquet formats
● Added a new flexible partitioner
● Optimized connector for at-least-once delivery
○ Generate less files on S3, reduce TPS
○ Avoid file overrides with non-deterministic upload triggers
● Running hundreds of tasks
33
Dev data is prod data
● Scale is different, but the pipeline is the same
● Running as a separate set of services to reduce latency,
low latency is a requirement
● Different approach to alerting
Otherwise, it’s the same!
34
Use Case: RADS
Flatten my data!
36
{
"headers": {
"field1": "value1",
},
"data": {
"match": {
"field2": "value2"
},
"players": [
{"field3": "value3",
"field4": "value4"},
{"field3": "value3",
"field4": "value4"}
]
}
}
message_id context_headers_field1_s data_match_field2_s
... ... ...
... ... ...
fact_data
message_id index context_headers
_field1_s
data_players
_field3_i
...
... ... ... ... ...
... ... ... ... ...
fact_data_players
DDL
ingest transform flatten
table-generator
S3
connector
consolidator
Avro
Parquet
1:1 1:1 1:M
RADS
Schema
Registry API
Project API Metastore DB
S3
connector
Avro
Why is RADS rad?
● Has enough automation and generic configuration to
automatically create Hive databases, tables, add new
columns and partitions for a brand new game with no*
human intervention.
● As a data producer you just need to start sending data in
the right format to the right Kafka topic, that’s it!
● We get realtime (“hot”) and historical (“cold”) data in the
same place!
38
39
Thanks!
Any questions?
@sap1ens

More Related Content

What's hot (20)

PDF
Incremental View Maintenance with Coral, DBT, and Iceberg
Walaa Eldin Moustafa
 
ODP
Introduction to Kafka connect
Knoldus Inc.
 
PPTX
Apache Flink Deep Dive
DataWorks Summit
 
PPTX
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Flink Forward
 
PDF
Distributed computing with Spark 2.x
Dr Hajji Hicham
 
PPTX
Apache Helix presentation at SOCC 2012
Kishore Gopalakrishna
 
PDF
Performance Analysis of Apache Spark and Presto in Cloud Environments
Databricks
 
PDF
Streaming SQL with Apache Calcite
Julian Hyde
 
PDF
BigData_Chp3: Data Processing
Lilia Sfaxi
 
PDF
L'agilité en quelques slides
Nicolas Deverge
 
PDF
IoT Sensor Analytics with Python, Jupyter, TensorFlow, Keras, Apache Kafka, K...
Kai Wähner
 
PDF
Apache Spark Performance tuning and Best Practise
Knoldus Inc.
 
PDF
PKS Automation Station...All Aboard: Enabling Team Access to PKS with a Conco...
VMware Tanzu
 
PPTX
Tuning Apache Kafka Connectors for Flink.pptx
Flink Forward
 
PPTX
Introduction to Yarn
Apache Apex
 
PPTX
Building Event Driven Architectures with Kafka and Cloud Events (Dan Rosanova...
confluent
 
PDF
Bridging the Gap: Connecting AWS and Kafka
Pengfei (Jason) Li
 
PDF
Spark on yarn
datamantra
 
PDF
Linux Kernel Memory Model
SeongJae Park
 
PDF
Common Patterns of Multi Data-Center Architectures with Apache Kafka
confluent
 
Incremental View Maintenance with Coral, DBT, and Iceberg
Walaa Eldin Moustafa
 
Introduction to Kafka connect
Knoldus Inc.
 
Apache Flink Deep Dive
DataWorks Summit
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Flink Forward
 
Distributed computing with Spark 2.x
Dr Hajji Hicham
 
Apache Helix presentation at SOCC 2012
Kishore Gopalakrishna
 
Performance Analysis of Apache Spark and Presto in Cloud Environments
Databricks
 
Streaming SQL with Apache Calcite
Julian Hyde
 
BigData_Chp3: Data Processing
Lilia Sfaxi
 
L'agilité en quelques slides
Nicolas Deverge
 
IoT Sensor Analytics with Python, Jupyter, TensorFlow, Keras, Apache Kafka, K...
Kai Wähner
 
Apache Spark Performance tuning and Best Practise
Knoldus Inc.
 
PKS Automation Station...All Aboard: Enabling Team Access to PKS with a Conco...
VMware Tanzu
 
Tuning Apache Kafka Connectors for Flink.pptx
Flink Forward
 
Introduction to Yarn
Apache Apex
 
Building Event Driven Architectures with Kafka and Cloud Events (Dan Rosanova...
confluent
 
Bridging the Gap: Connecting AWS and Kafka
Pengfei (Jason) Li
 
Spark on yarn
datamantra
 
Linux Kernel Memory Model
SeongJae Park
 
Common Patterns of Multi Data-Center Architectures with Apache Kafka
confluent
 

Similar to Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming (20)

PPTX
Streaming Data and Stream Processing with Apache Kafka
confluent
 
PDF
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
confluent
 
PDF
Building a Streaming Platform with Kafka
confluent
 
PDF
MongoDB World 2019: Streaming ETL on the Shoulders of Giants
MongoDB
 
PDF
Stream All Things—Patterns of Modern Data Integration with Gwen Shapira
Databricks
 
PDF
Building Scalable and Extendable Data Pipeline for Call of Duty Games: Lesson...
Yaroslav Tkachenko
 
PDF
Kafka Connect and Streams (Concepts, Architecture, Features)
Kai Wähner
 
PDF
AI&BigData Lab 2016. Сарапин Виктор: Размер имеет значение: анализ по требова...
GeeksLab Odessa
 
PDF
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
Spark Summit
 
PPTX
Data Architectures for Robust Decision Making
Gwen (Chen) Shapira
 
PPTX
Apache Kafka Streams
Apache Kafka TLV
 
PDF
Building Streaming Data Applications Using Apache Kafka
Slim Baltagi
 
PPTX
Leveraging the power of the unbundled database
Alex Silva
 
PDF
Devoxx university - Kafka de haut en bas
Florent Ramiere
 
PDF
Hadoop made fast - Why Virtual Reality Needed Stream Processing to Survive
confluent
 
PPTX
Building streaming data applications using Kafka*[Connect + Core + Streams] b...
Data Con LA
 
PDF
Streaming architecture patterns
hadooparchbook
 
PDF
Kafka Vienna Meetup 020719
Patrik Kleindl
 
PDF
How to Write Great Kafka Connectors
confluent
 
PDF
Event Driven Microservices
Fabrizio Fortino
 
Streaming Data and Stream Processing with Apache Kafka
confluent
 
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
confluent
 
Building a Streaming Platform with Kafka
confluent
 
MongoDB World 2019: Streaming ETL on the Shoulders of Giants
MongoDB
 
Stream All Things—Patterns of Modern Data Integration with Gwen Shapira
Databricks
 
Building Scalable and Extendable Data Pipeline for Call of Duty Games: Lesson...
Yaroslav Tkachenko
 
Kafka Connect and Streams (Concepts, Architecture, Features)
Kai Wähner
 
AI&BigData Lab 2016. Сарапин Виктор: Размер имеет значение: анализ по требова...
GeeksLab Odessa
 
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
Spark Summit
 
Data Architectures for Robust Decision Making
Gwen (Chen) Shapira
 
Apache Kafka Streams
Apache Kafka TLV
 
Building Streaming Data Applications Using Apache Kafka
Slim Baltagi
 
Leveraging the power of the unbundled database
Alex Silva
 
Devoxx university - Kafka de haut en bas
Florent Ramiere
 
Hadoop made fast - Why Virtual Reality Needed Stream Processing to Survive
confluent
 
Building streaming data applications using Kafka*[Connect + Core + Streams] b...
Data Con LA
 
Streaming architecture patterns
hadooparchbook
 
Kafka Vienna Meetup 020719
Patrik Kleindl
 
How to Write Great Kafka Connectors
confluent
 
Event Driven Microservices
Fabrizio Fortino
 
Ad

More from Yaroslav Tkachenko (16)

PDF
Dynamic Change Data Capture with Flink CDC and Consistent Hashing
Yaroslav Tkachenko
 
PDF
Streaming SQL for Data Engineers: The Next Big Thing?
Yaroslav Tkachenko
 
PDF
Apache Flink Adoption at Shopify
Yaroslav Tkachenko
 
PDF
Storing State Forever: Why It Can Be Good For Your Analytics
Yaroslav Tkachenko
 
PDF
Apache Kafka: New Features That You Might Not Know About
Yaroslav Tkachenko
 
PDF
Designing Scalable and Extendable Data Pipeline for Call Of Duty Games
Yaroslav Tkachenko
 
PPTX
10 tips for making Bash a sane programming language
Yaroslav Tkachenko
 
PDF
Actors or Not: Async Event Architectures
Yaroslav Tkachenko
 
PDF
Kafka Streams: the easiest way to start with stream processing
Yaroslav Tkachenko
 
PDF
Building Stateful Microservices With Akka
Yaroslav Tkachenko
 
PDF
Querying Data Pipeline with AWS Athena
Yaroslav Tkachenko
 
PPTX
Akka Microservices Architecture And Design
Yaroslav Tkachenko
 
PDF
Why Actor-Based Systems Are The Best For Microservices
Yaroslav Tkachenko
 
PPTX
Why actor-based systems are the best for microservices
Yaroslav Tkachenko
 
PPTX
Building Eventing Systems for Microservice Architecture
Yaroslav Tkachenko
 
PPTX
Быстрая и безболезненная разработка клиентской части веб-приложений
Yaroslav Tkachenko
 
Dynamic Change Data Capture with Flink CDC and Consistent Hashing
Yaroslav Tkachenko
 
Streaming SQL for Data Engineers: The Next Big Thing?
Yaroslav Tkachenko
 
Apache Flink Adoption at Shopify
Yaroslav Tkachenko
 
Storing State Forever: Why It Can Be Good For Your Analytics
Yaroslav Tkachenko
 
Apache Kafka: New Features That You Might Not Know About
Yaroslav Tkachenko
 
Designing Scalable and Extendable Data Pipeline for Call Of Duty Games
Yaroslav Tkachenko
 
10 tips for making Bash a sane programming language
Yaroslav Tkachenko
 
Actors or Not: Async Event Architectures
Yaroslav Tkachenko
 
Kafka Streams: the easiest way to start with stream processing
Yaroslav Tkachenko
 
Building Stateful Microservices With Akka
Yaroslav Tkachenko
 
Querying Data Pipeline with AWS Athena
Yaroslav Tkachenko
 
Akka Microservices Architecture And Design
Yaroslav Tkachenko
 
Why Actor-Based Systems Are The Best For Microservices
Yaroslav Tkachenko
 
Why actor-based systems are the best for microservices
Yaroslav Tkachenko
 
Building Eventing Systems for Microservice Architecture
Yaroslav Tkachenko
 
Быстрая и безболезненная разработка клиентской части веб-приложений
Yaroslav Tkachenko
 
Ad

Recently uploaded (20)

PDF
How to Avoid 7 Costly Mainframe Migration Mistakes
JP Infra Pvt Ltd
 
PPTX
The _Operations_on_Functions_Addition subtruction Multiplication and Division...
mdregaspi24
 
PDF
What does good look like - CRAP Brighton 8 July 2025
Jan Kierzyk
 
PPTX
Human-Action-Recognition-Understanding-Behavior.pptx
nreddyjanga
 
PDF
How to Connect Your On-Premises Site to AWS Using Site-to-Site VPN.pdf
Tamanna
 
PDF
Data Chunking Strategies for RAG in 2025.pdf
Tamanna
 
PDF
Building Production-Ready AI Agents with LangGraph.pdf
Tamanna
 
PDF
Context Engineering for AI Agents, approaches, memories.pdf
Tamanna
 
PDF
apidays Helsinki & North 2025 - How (not) to run a Graphql Stewardship Group,...
apidays
 
PPTX
Advanced_NLP_with_Transformers_PPT_final 50.pptx
Shiwani Gupta
 
PDF
Product Management in HealthTech (Case Studies from SnappDoctor)
Hamed Shams
 
PPT
Lecture 2-1.ppt at a higher learning institution such as the university of Za...
rachealhantukumane52
 
PDF
2_Management_of_patients_with_Reproductive_System_Disorders.pdf
motbayhonewunetu
 
PPTX
Hadoop_EcoSystem slide by CIDAC India.pptx
migbaruget
 
PDF
Early_Diabetes_Detection_using_Machine_L.pdf
maria879693
 
PDF
OPPOTUS - Malaysias on Malaysia 1Q2025.pdf
Oppotus
 
PPTX
apidays Munich 2025 - Building Telco-Aware Apps with Open Gateway APIs, Subhr...
apidays
 
PDF
WEF_Future_of_Global_Fintech_Second_Edition_2025.pdf
AproximacionAlFuturo
 
PDF
apidays Helsinki & North 2025 - API-Powered Journeys: Mobility in an API-Driv...
apidays
 
PDF
MusicVideoProjectRubric Animation production music video.pdf
ALBERTIANCASUGA
 
How to Avoid 7 Costly Mainframe Migration Mistakes
JP Infra Pvt Ltd
 
The _Operations_on_Functions_Addition subtruction Multiplication and Division...
mdregaspi24
 
What does good look like - CRAP Brighton 8 July 2025
Jan Kierzyk
 
Human-Action-Recognition-Understanding-Behavior.pptx
nreddyjanga
 
How to Connect Your On-Premises Site to AWS Using Site-to-Site VPN.pdf
Tamanna
 
Data Chunking Strategies for RAG in 2025.pdf
Tamanna
 
Building Production-Ready AI Agents with LangGraph.pdf
Tamanna
 
Context Engineering for AI Agents, approaches, memories.pdf
Tamanna
 
apidays Helsinki & North 2025 - How (not) to run a Graphql Stewardship Group,...
apidays
 
Advanced_NLP_with_Transformers_PPT_final 50.pptx
Shiwani Gupta
 
Product Management in HealthTech (Case Studies from SnappDoctor)
Hamed Shams
 
Lecture 2-1.ppt at a higher learning institution such as the university of Za...
rachealhantukumane52
 
2_Management_of_patients_with_Reproductive_System_Disorders.pdf
motbayhonewunetu
 
Hadoop_EcoSystem slide by CIDAC India.pptx
migbaruget
 
Early_Diabetes_Detection_using_Machine_L.pdf
maria879693
 
OPPOTUS - Malaysias on Malaysia 1Q2025.pdf
Oppotus
 
apidays Munich 2025 - Building Telco-Aware Apps with Open Gateway APIs, Subhr...
apidays
 
WEF_Future_of_Global_Fintech_Second_Edition_2025.pdf
AproximacionAlFuturo
 
apidays Helsinki & North 2025 - API-Powered Journeys: Mobility in an API-Driv...
apidays
 
MusicVideoProjectRubric Animation production music video.pdf
ALBERTIANCASUGA
 

Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming