SlideShare a Scribd company logo
ISTA 2019 - Migrating data-intensive microservices from Python to Go
Migrating data-intensive
microservices from Python to Go
Nikolay Stoitsev
Engineering Manager @ Uber
Early years
Dispatch API Storage
Early years
Dispatch API Storage
PythonNode.js
Invoice
Generation
Service
Background
Legal document
Background
Legal document
Vary by country
Background
Legal document
Vary by country
Vary by business line
Background
Legal document
Vary by country
Vary by business line
Triggered after every trip or food
delivery
Sample architecture
Money
System
Cassandra
Kafka Preprocess Render
Kafka
Consumer
Object Store
More than 30 upstream systems
Large Scale
More than 30 upstream systems
More than 100 TBs of data stored
Large Scale
More than 30 upstream systems
More than 100 TBs of data stored
Running on 400 containers
in multiple DCs
Large Scale
More than 30 upstream systems
More than 100 TBs of data stored
Running on 400 containers
in multiple DCs
Running for 5 years
Large Scale
More than 30 upstream systems
More than 100 TBs of data stored
Running on 400 containers
in multiple DCs
Running for 5 years
99.999% availability for last 6 months
Large Scale
More than 30 upstream systems
More than 100 TBs of data stored
Running on 400 containers
in multiple DCs
Running for 5 years
99.999% availability for last 6 months
Implemented in Python
Large Scale
Sample architecture
Money
System
Cassandra
Kafka Preprocess Render
Kafka
Consumer
Object Store
Web API
Hive
Building blocks
http://flask.pocoo.org
Flask Example
Flask Usage
MVCS
MVCS
Controller
Mapper
Service Entities
External
ServicesDatabase
Building blocks
https://uwsgi-docs.readthedocs.io/
uWSGI
uwsgi
python
python
python
Building blocks
http://www.celeryproject.org/
Celery
celery-worker
celery-worker
celery-worker
kafka
consumer Redis
“Use the right tool
for the job”
It hurts velocity at some
point
What we need for each language?
Training / Best practices /
Documentation / Experts
What we need for each language?
Training / Best practices /
Documentation / Experts
Project template /
Bootstrapping
What we need for each language?
Training / Best practices /
Documentation / Experts
Project template /
Bootstrapping
Configuration
What we need for each language?
Training / Best practices /
Documentation / Experts
Project template /
Bootstrapping
Configuration
Debuggers
What we need for each language?
Training / Best practices /
Documentation / Experts
Project template /
Bootstrapping
Configuration
Debuggers
Profilers
What we need for each language?
Training / Best practices /
Documentation / Experts
Project template /
Bootstrapping
Configuration
Debuggers
Profilers
Building, Packaging,
Deploying
We picked Go and Java
Why Go?
Broad applicability
High performance
Static typing
Has momentum
From Python to Go
EAFP versus LBYL
EAFP versus LBYL
Dependency injection
https://github.com/uber-go/fx
Cadence instead of Celery
https://github.com/uber/cadence
Cadence
Cadence
DB queue
Timers
invoice
service
worker
worker
worker
worker
MVCS translates nicely
How to migrate?
Money
System
Invoice
Generation
StoragePython
Option #1 - Big Bang Rewrite
Money
System
Invoice
Generation
StoragePython
Invoice
Generation
Go
Option #1 - Big Bang Rewrite
Money
System
Storage
Invoice
Generation
Go
No visibility on regressions
No visibility on performance
degradation
No visibility on feature
parity
Option #2 - Do it iteratively
Invoice
Generation
Storage
Kafka
Storage
Kafka Preprocess Render
Storage
Kafka Preprocess Render
Preprocess
Go
Storage
Kafka Preprocess Render
Preprocess
Go
Compare
Storage
Kafka Preprocess Render
Preprocess
Go
Compare
Toggle
Volume?
m3 DB
https://www.m3db.io
Tally - stats collection in Go
https://github.com/uber-go/tally
Tally - stats collection in Go
Measure processing time
p95, p99
Storage
Kafka Preprocess Render
Preprocess
Go
Compare
m3 Grafana
Correctness?
Storage
Kafka Preprocess Render
Preprocess
Go
Compare
Kafka ELK
ISTA 2019 - Migrating data-intensive microservices from Python to Go
Structured logging
Structured logging
Structured logging
Structured logging
Zap
https://github.com/uber-go/zap
Zap
ELK
Benefits of iterative approach
Verify regressions
Verify performance problems
Verify feature parity
Lessons learned
Spend time to learn the new
language
Spend time to read code in
the new language
Do a rollout plan and stick
to it
Python can scale and is
reliable
Q&A
Thank you!
Nikolay Stoitsev, stoitsev@uber.com
ISTA 2019 - Migrating data-intensive microservices from Python to Go

More Related Content

What's hot (20)

PDF
Kafka on Kubernetes: Does it really have to be "The Hard Way"? (Viktor Gamov ...
confluent
 
PDF
ApacheCon 2021 - Apache NiFi Deep Dive 300
Timothy Spann
 
PDF
Streams and serverless at DAZN
Yan Cui
 
PDF
Orchestrating the execution of workflows for media streaming service and even...
Shuen-Huei Guan
 
PDF
Edge architecture ieee international conference on cloud engineering
Mikey Cohen - Hiring Amazing Engineers
 
PDF
How to build a social network on serverless
Yan Cui
 
PPTX
Confluent Cloud Networking | Rajan Sundaram, Confluent
HostedbyConfluent
 
PDF
Paris Container Day 2016 : Orchestrating Continuous Delivery (CloudBees)
Publicis Sapient Engineering
 
PDF
The Paved PaaS to Microservices at Netflix (IAS2017 Nanjing)
Yunong Xiao
 
PDF
The Netflix API Platform for Server-Side Scripting
Katharina Probst
 
PDF
API Gateway report
Gleicon Moraes
 
PDF
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
HostedbyConfluent
 
PPTX
Lessons Learned Building a Connector Using Kafka Connect (Katherine Stanley &...
confluent
 
PDF
Developer Journey at Zalando - Idea to Production with Containers in the Clou...
Henning Jacobs
 
PPTX
Robust Stream Processing with Apache Flink
Jamie Grier
 
PDF
Cloud native - CI/CD
Elad Hirsch
 
PDF
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Red Hat Developers
 
PPTX
Rethinking Cloud Proxies
Mikey Cohen - Hiring Amazing Engineers
 
PPTX
Cloud Foundry Container Runtime (CFCR) & Production Kubernetes
VMware Tanzu
 
PDF
Flink Forward San Francisco 2018: Dave Torok & Sameer Wadkar - "Embedding Fl...
Flink Forward
 
Kafka on Kubernetes: Does it really have to be "The Hard Way"? (Viktor Gamov ...
confluent
 
ApacheCon 2021 - Apache NiFi Deep Dive 300
Timothy Spann
 
Streams and serverless at DAZN
Yan Cui
 
Orchestrating the execution of workflows for media streaming service and even...
Shuen-Huei Guan
 
Edge architecture ieee international conference on cloud engineering
Mikey Cohen - Hiring Amazing Engineers
 
How to build a social network on serverless
Yan Cui
 
Confluent Cloud Networking | Rajan Sundaram, Confluent
HostedbyConfluent
 
Paris Container Day 2016 : Orchestrating Continuous Delivery (CloudBees)
Publicis Sapient Engineering
 
The Paved PaaS to Microservices at Netflix (IAS2017 Nanjing)
Yunong Xiao
 
The Netflix API Platform for Server-Side Scripting
Katharina Probst
 
API Gateway report
Gleicon Moraes
 
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
HostedbyConfluent
 
Lessons Learned Building a Connector Using Kafka Connect (Katherine Stanley &...
confluent
 
Developer Journey at Zalando - Idea to Production with Containers in the Clou...
Henning Jacobs
 
Robust Stream Processing with Apache Flink
Jamie Grier
 
Cloud native - CI/CD
Elad Hirsch
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Red Hat Developers
 
Rethinking Cloud Proxies
Mikey Cohen - Hiring Amazing Engineers
 
Cloud Foundry Container Runtime (CFCR) & Production Kubernetes
VMware Tanzu
 
Flink Forward San Francisco 2018: Dave Torok & Sameer Wadkar - "Embedding Fl...
Flink Forward
 

Similar to ISTA 2019 - Migrating data-intensive microservices from Python to Go (20)

PPTX
Netflix Edge Engineering Open House Presentations - June 9, 2016
Daniel Jacobson
 
PDF
Immutable Infrastructure: Rise of the Machine Images
C4Media
 
PPTX
Media Applications on AWS
Danilo Poccia
 
PPTX
Data Engineering with Protobuf
Thiago Baldim
 
PPTX
5 Years Of Building SaaS On AWS
Christian Beedgen
 
PDF
Siphon - Near Real Time Databus Using Kafka, Eric Boyd, Nitin Kumar
confluent
 
PDF
Micro services may not be the best idea
Samuel ROZE
 
PDF
MLOps with a Feature Store: Filling the Gap in ML Infrastructure
Data Science Milan
 
PDF
The burden of a successful feature: Scaling our real time logging platform
Fastly
 
PDF
Ibm_interconnect_restapi_workshop
Shubhra Kar
 
PDF
Slides: How to Select a PaaS
Altoros
 
ODP
Intro to Muon - How to build Polyglot Message and Event Microservices
David Dawson
 
PPTX
Liveperson DLD 2015
LivePerson
 
PDF
Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
PivotalOpenSourceHub
 
PPT
No More Hops Towards A Linearly Scalable Application Infrastructure
ConSanFrancisco123
 
PDF
Spark Compute as a Service at Paypal with Prabhu Kasinathan
Databricks
 
PDF
Building and deploying LLM applications with Apache Airflow
Kaxil Naik
 
PDF
Seattle StrongLoop Node.js Workshop
Jimmy Guerrero
 
PDF
The Practice of Presto & Alluxio in E-Commerce Big Data Platform
Alluxio, Inc.
 
PDF
Elasticsearch in Netflix
Danny Yuan
 
Netflix Edge Engineering Open House Presentations - June 9, 2016
Daniel Jacobson
 
Immutable Infrastructure: Rise of the Machine Images
C4Media
 
Media Applications on AWS
Danilo Poccia
 
Data Engineering with Protobuf
Thiago Baldim
 
5 Years Of Building SaaS On AWS
Christian Beedgen
 
Siphon - Near Real Time Databus Using Kafka, Eric Boyd, Nitin Kumar
confluent
 
Micro services may not be the best idea
Samuel ROZE
 
MLOps with a Feature Store: Filling the Gap in ML Infrastructure
Data Science Milan
 
The burden of a successful feature: Scaling our real time logging platform
Fastly
 
Ibm_interconnect_restapi_workshop
Shubhra Kar
 
Slides: How to Select a PaaS
Altoros
 
Intro to Muon - How to build Polyglot Message and Event Microservices
David Dawson
 
Liveperson DLD 2015
LivePerson
 
Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
PivotalOpenSourceHub
 
No More Hops Towards A Linearly Scalable Application Infrastructure
ConSanFrancisco123
 
Spark Compute as a Service at Paypal with Prabhu Kasinathan
Databricks
 
Building and deploying LLM applications with Apache Airflow
Kaxil Naik
 
Seattle StrongLoop Node.js Workshop
Jimmy Guerrero
 
The Practice of Presto & Alluxio in E-Commerce Big Data Platform
Alluxio, Inc.
 
Elasticsearch in Netflix
Danny Yuan
 
Ad

More from Nikolay Stoitsev (20)

PDF
Building vs Buying Software
Nikolay Stoitsev
 
PDF
How and why to manage your manager
Nikolay Stoitsev
 
PDF
From programming to management
Nikolay Stoitsev
 
PDF
A practical introduction to observability
Nikolay Stoitsev
 
PDF
Everything You Need to Know About NewSQL in 2020
Nikolay Stoitsev
 
PDF
3 lessons on effective communication for engineers
Nikolay Stoitsev
 
PDF
The career path of software engineers and how to navigate it
Nikolay Stoitsev
 
PDF
Migrating a data intensive microservice from Python to Go
Nikolay Stoitsev
 
PDF
Large scale stream processing with Apache Flink
Nikolay Stoitsev
 
PDF
NewSQL: what, when and how
Nikolay Stoitsev
 
PDF
How to read the v8 source code?
Nikolay Stoitsev
 
PDF
Running in multiple data centers
Nikolay Stoitsev
 
PDF
Distributed tracing for big systems
Nikolay Stoitsev
 
PDF
Reusable patterns for scalable APIs running on Docker @ Java2Days
Nikolay Stoitsev
 
PDF
Everyday tools and tricks for scaling Node.js
Nikolay Stoitsev
 
PDF
Node.js at Uber
Nikolay Stoitsev
 
PDF
Tracing python applications
Nikolay Stoitsev
 
PDF
Distributed tracing for Node.js
Nikolay Stoitsev
 
PDF
Design Patterns for Docker Applications
Nikolay Stoitsev
 
PDF
From Python to Java
Nikolay Stoitsev
 
Building vs Buying Software
Nikolay Stoitsev
 
How and why to manage your manager
Nikolay Stoitsev
 
From programming to management
Nikolay Stoitsev
 
A practical introduction to observability
Nikolay Stoitsev
 
Everything You Need to Know About NewSQL in 2020
Nikolay Stoitsev
 
3 lessons on effective communication for engineers
Nikolay Stoitsev
 
The career path of software engineers and how to navigate it
Nikolay Stoitsev
 
Migrating a data intensive microservice from Python to Go
Nikolay Stoitsev
 
Large scale stream processing with Apache Flink
Nikolay Stoitsev
 
NewSQL: what, when and how
Nikolay Stoitsev
 
How to read the v8 source code?
Nikolay Stoitsev
 
Running in multiple data centers
Nikolay Stoitsev
 
Distributed tracing for big systems
Nikolay Stoitsev
 
Reusable patterns for scalable APIs running on Docker @ Java2Days
Nikolay Stoitsev
 
Everyday tools and tricks for scaling Node.js
Nikolay Stoitsev
 
Node.js at Uber
Nikolay Stoitsev
 
Tracing python applications
Nikolay Stoitsev
 
Distributed tracing for Node.js
Nikolay Stoitsev
 
Design Patterns for Docker Applications
Nikolay Stoitsev
 
From Python to Java
Nikolay Stoitsev
 
Ad

Recently uploaded (20)

PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Digital Circuits, important subject in CS
contactparinay1
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 

ISTA 2019 - Migrating data-intensive microservices from Python to Go