SlideShare a Scribd company logo
Learning Rust the Hard Way
for a Production
Kafka+ScyllaDB Pipeline
Alexys Jacob
CTO
Alexys Jacob
■ ScyllaDB awarded Open Source & University contributor
■ Open Source author & contributor
• Apache Avro, Apache Airflow, MongoDB, MkDocs…
■ Tech speaker & writer
■ Gentoo Linux developer
■ Python Software Foundation contributing member
CTO, Numberly
@ultrabug
Your next 20 minutes
■ The thought process to move from Python to Rust
• Context, promises, arguments and decision
■ Learning Rust the hard way
• All the stack components I had to work with in Rust
• Tips, Open Source contributions and code samples
■ What is worth it?
• Graphs, production numbers
• Personal notes
Choosing Rust over Python
At Numberly, we move and process (a lot of) data using Kafka streams and
pipelines that are enriched using ScyllaDB.
processor
app
processor
app
Project context at Numberly
Scylla
processor
app
raw data
enriched data
enriched data
enriched data client
app
partner
API
business
app
processor
app
processor
app
Pipeline reliability = latency + resilience
Scylla
processor
app
raw data
enriched data
enriched data
enriched data client
app
partner
API
business
app
If a processor or ScyllaDB is slow or fails, our business, partners & clients are at risk.
A major change in our pipeline processors had to be undertaken, giving us the
opportunity to redesign them.
The (rusted) opportunity
Scylla
processor
app
raw data
enriched data
enriched data
enriched data client
app
partner
API
business
app
“Hey, why not rewrite
those 3 Python processor apps
into 1 Rust app?”
A language empowering everyone to build reliable and efficient software.
■ Secure
• Memory and thread safety as first class citizens
• No runtime or garbage collector
■ Easy to deploy
• Compiled binaries are self-sufficient
■ No compromises
• Strongly and statically typed
• Exhaustivity is mandatory
• Built-in error management syntax and primitives
■ Plays well with Python
• PyO3 can be used to run Rust from Python (or the contrary)
The (never tried before) Rust promises
Efficient software != Faster software
■ “Fast” meanings vary depending on your objectives.
• Fast to develop?
• Fast to maintain?
• Fast to prototype?
• Fast to process data?
• Fast to cover all failure cases?
“
Selecting a programming language can be a form of
premature optimization
Efficient software != Faster software
■ “Fast” meanings vary depending on your objectives.
• Fast to develop? Python is way faster, did that for 15 years
• Fast to maintain? Nobody at Numberly does Rust yet
• Fast to prototype? No, code must be complete to compile and run
• Fast to process data? Sure: to prove it, measure it
• Fast to cover all failure cases? Definitely: mandatory exhaustivity + error handling primitives
“
I did not choose Rust to be “faster”.
Our Python code was fast enough
to deliver their pipeline processing.
Innovation cannot exist
if you don’t accept to lose time.
The question is
to know when and on what project.
The Reliable software paradigms
■ What makes me slow will make me stronger.
• Low level paradigms (ownership, borrowing, lifetimes).
• Strong type safety.
• Compilation (debug, release).
• Dependency management.
• Exhaustive pattern matching.
• Error management primitives (Result).
The Reliable software paradigms
■ What makes me slow will make me stronger.
• Low level paradigms (ownership, borrowing, lifetimes). If it compiles, it’s safe
• Strong type safety. Predictable, readable, maintainable
• Compilation (debug, release). Compiler is very helpful vs a random Python exception
• Dependency management. Finally something looking sane vs Python mess
• Exhaustive pattern matching. Confidence that you’re not forgetting something
• Error management primitives (Result). Handle failure right from the language syntax
“
I chose Rust because it provided me with
the programming paradigms at the right abstraction level
that I needed to finally understand and better explain
the reliability and performance of an application.
Learning Rust the hard way
Production is not a Hello World
■ Learning the syntax and handling errors everywhere
■ Confluent Kafka + Schema Registry + Avro
■ Asynchronous latency-optimized design
■ ScyllaDB multi-datacenter
■ MongoDB
■ Kubernetes deployment
■ Prometheus exporter
■ Grafana dashboarding
■ Sentry
Scylla
processor
app
Confluent
Kafka
Confluent Kafka Schema Registry
■ Confluent Schema Registry breaks vanilla Apache Avro deserialization.
• Gerard Klijs’ schema_registry_converter crate helps
• I discovered performance problems which we worked on and are being addressed!
■ Latency-overhead-free manual approach:
Apache Avro Rust was broken!
■ Avro Rust crate given to Apache Avro without an
appointed committer.
• Deserialization of complex schemas was broken...
• I contributed fixes to Apache Avro
(AVRO-3232+3240)
• Now merged thanks to Martin Grigorov!
■ Rust compiler optimizations give a hell of a boost
(once Avro is fixed)
• Deserializing Avro is faster than JSON!
green thread / msg
Asynchronous patterns to optimize latency
■ Tricks to make your Kafka consumer strategy more efficient.
• Deserialize your consumer messages on the consumer loop, not on green-threads
• Spawning a green-thread has a performance cost
• Control your green-thread parallelism
• Defer to green-threads when I/O starts to be required
Kafka
consumer
+
avro
deserializer
raw data
green thread / msg
green thread / msg
green thread / msg
green thread / msg
Scylla
enriched data
Absorbing tail latency spikes with parallelism
x16
x2
parallelism load
Scylla Rust (shard-aware) driver
■ The scylla-rust-driver crate is mature enough
for production.
• Use a CachingSession to automatically cache your
prepared statements
• Beware: prepared queries are NOT paged, use
paged queries with execute_iter() instead!
Exporting metrics properly for Prometheus
■ Effectively measuring latencies down to microseconds.
• Fine tune your histogram buckets to match your expected latencies!
...
Grafana dashboarding
■ Graph your precious metrics right!
• ScyllaDB prepared statement cache
size
• Query and throughput rates
• Kafka commits occurrence
• Errors by type
• Kubernetes pod memory
• ...
■ Visualizing Prom Histograms
max by (environment)(histogram_quantile(0.50, processing_latency_seconds_bucket{...}))
Was it worth it?
Did I really lose time because of Rust?
■ I spent more time analyzing the latency impacts of code patterns and drivers’
options than struggling with Rust syntax.
■ Key figures for this application:
• Kafka consumer max throughput with processing? 200K msg/s on 20 partitions
• Avro deserialization P50 latency? 75µs
• Scylla SELECT P50 latency on 1.5B+ rows tables? 250µs
• Scylla INSERT P50 latency on 1.5B+ rows tables? 2ms
It went better than expected
■ Rust crates ecosystem is mature, similar to Python Package Index.
■ The scylla-rust-driver is stable and efficient!
■ It took me a while to accept that Apache Avro was broken, not me.
■ 3 Python apps totalling 54 pods replaced by 1 Rust app totalling 20 pods
■ This feels like the most reliable and efficient software I ever wrote!
Thank you!
Stay in touch
Alexys Jacob - Join us:
ultrabug
alexys@numberly.com

More Related Content

PDF
Scylla Summit 2022: Overcoming the Performance Cost of Streaming Transactions
PDF
Scylla Summit 2022: ORM and Query Building in Rust
PDF
Scylla Summit 2022: Operating at Monstrous Scales: Benchmarking Petabyte Work...
PDF
Scylla Summit 2022: Building Zeotap's Privacy Compliant Customer Data Platfor...
PDF
Scylla Summit 2022: An Odyssey to ScyllaDB and Apache Kafka
PDF
Eliminating Volatile Latencies Inside Rakuten’s NoSQL Migration
PDF
Case Study: Stream Processing on AWS using Kappa Architecture
PPTX
How Incremental Compaction Reduces Your Storage Footprint
Scylla Summit 2022: Overcoming the Performance Cost of Streaming Transactions
Scylla Summit 2022: ORM and Query Building in Rust
Scylla Summit 2022: Operating at Monstrous Scales: Benchmarking Petabyte Work...
Scylla Summit 2022: Building Zeotap's Privacy Compliant Customer Data Platfor...
Scylla Summit 2022: An Odyssey to ScyllaDB and Apache Kafka
Eliminating Volatile Latencies Inside Rakuten’s NoSQL Migration
Case Study: Stream Processing on AWS using Kappa Architecture
How Incremental Compaction Reduces Your Storage Footprint

What's hot (20)

PPTX
MongoDB vs Scylla: Production Experience from Both Dev & Ops Standpoint at Nu...
PDF
Scylla Summit 2022: How to Migrate a Counter Table for 68 Billion Records
PDF
Latency and Consistency Tradeoffs in Modern Distributed Databases
PPTX
Connecting kafka message systems with scylla
PDF
Scylla Summit 2022: Stream Processing with ScyllaDB
PDF
Scylla Summit 2022: Rakuten’s Catalog Platform Migration from Cassandra to Sc...
PPTX
Scylla Summit 2018: Cassandra and ScyllaDB at Yahoo! Japan
PPTX
Understanding Storage I/O Under Load
PDF
The Netflix Way to deal with Big Data Problems
PDF
Renegotiating the boundary between database latency and consistency
PPTX
RedisConf18 - Implementing a New Data Structure for Redis
PPTX
FireEye & Scylla: Intel Threat Analysis Using a Graph Database
PPTX
Zeotap: Moving to ScyllaDB - A Graph of Billions Scale
PDF
Scylla Summit 2022: IO Scheduling & NVMe Disk Modelling
PDF
Uber Real Time Data Analytics
PPTX
Seastar Summit 2019 Keynote
PPTX
Scylla Summit 2019 Keynote - Avi Kivity
PDF
Target: Performance Tuning Cassandra at Target
PDF
Tsinghua University: Two Exemplary Applications in China
PPTX
Scylla Summit 2018: Consensus in Eventually Consistent Databases
MongoDB vs Scylla: Production Experience from Both Dev & Ops Standpoint at Nu...
Scylla Summit 2022: How to Migrate a Counter Table for 68 Billion Records
Latency and Consistency Tradeoffs in Modern Distributed Databases
Connecting kafka message systems with scylla
Scylla Summit 2022: Stream Processing with ScyllaDB
Scylla Summit 2022: Rakuten’s Catalog Platform Migration from Cassandra to Sc...
Scylla Summit 2018: Cassandra and ScyllaDB at Yahoo! Japan
Understanding Storage I/O Under Load
The Netflix Way to deal with Big Data Problems
Renegotiating the boundary between database latency and consistency
RedisConf18 - Implementing a New Data Structure for Redis
FireEye & Scylla: Intel Threat Analysis Using a Graph Database
Zeotap: Moving to ScyllaDB - A Graph of Billions Scale
Scylla Summit 2022: IO Scheduling & NVMe Disk Modelling
Uber Real Time Data Analytics
Seastar Summit 2019 Keynote
Scylla Summit 2019 Keynote - Avi Kivity
Target: Performance Tuning Cassandra at Target
Tsinghua University: Two Exemplary Applications in China
Scylla Summit 2018: Consensus in Eventually Consistent Databases
Ad

Similar to Scylla Summit 2022: Learning Rust the Hard Way for a Production Kafka+ScyllaDB Pipeline (20)

PDF
Learning Rust the Hard Way for a Production Kafka + ScyllaDB Pipeline
PPTX
Learning Rust the Hard Way for a Production Kafka + ScyllaDB Pipeline
PDF
Rust + python: lessons learnt from building a toy filesystem
PDF
Porting a Streaming Pipeline from Scala to Rust
PPTX
Rusty Python
PPTX
Pyconke2018
PDF
Why_safe_programming_matters_and_why_Rust_.pdf
PDF
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
PDF
Build Low-Latency Applications in Rust on ScyllaDB
PDF
Rust For Data Science A Rustacean Odyssey A Sophisiticated Guide For Rustacea...
PPTX
Python vs rust
PDF
Katello on TorqueBox
PDF
Build Low-Latency Applications in Rust on ScyllaDB
PDF
Practical Rust 1x Cookbook Rustacean Team
PDF
butane Rust ORM
PDF
Python vs Rust_ Which is Programming Language Need to Choose for Your Project...
PDF
Embedded Rust
PDF
Scylla Summit 2022: ScyllaDB Rust Driver: One Driver to Rule Them All
PDF
Is it time to rewrite the operating system in Rust?
PDF
Let’s write open IoText protocol for time-series data in Rust
Learning Rust the Hard Way for a Production Kafka + ScyllaDB Pipeline
Learning Rust the Hard Way for a Production Kafka + ScyllaDB Pipeline
Rust + python: lessons learnt from building a toy filesystem
Porting a Streaming Pipeline from Scala to Rust
Rusty Python
Pyconke2018
Why_safe_programming_matters_and_why_Rust_.pdf
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Build Low-Latency Applications in Rust on ScyllaDB
Rust For Data Science A Rustacean Odyssey A Sophisiticated Guide For Rustacea...
Python vs rust
Katello on TorqueBox
Build Low-Latency Applications in Rust on ScyllaDB
Practical Rust 1x Cookbook Rustacean Team
butane Rust ORM
Python vs Rust_ Which is Programming Language Need to Choose for Your Project...
Embedded Rust
Scylla Summit 2022: ScyllaDB Rust Driver: One Driver to Rule Them All
Is it time to rewrite the operating system in Rust?
Let’s write open IoText protocol for time-series data in Rust
Ad

More from ScyllaDB (20)

PDF
Understanding The True Cost of DynamoDB Webinar
PDF
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
PDF
Database Benchmarking for Performance Masterclass: Session 1 - Benchmarking F...
PDF
New Ways to Reduce Database Costs with ScyllaDB
PDF
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
PDF
Powering a Billion Dreams: Scaling Meesho’s E-commerce Revolution with Scylla...
PDF
Leading a High-Stakes Database Migration
PDF
Achieving Extreme Scale with ScyllaDB: Tips & Tradeoffs
PDF
Securely Serving Millions of Boot Artifacts a Day by João Pedro Lima & Matt ...
PDF
How Agoda Scaled 50x Throughput with ScyllaDB by Worakarn Isaratham
PDF
How Yieldmo Cut Database Costs and Cloud Dependencies Fast by Todd Coleman
PDF
ScyllaDB: 10 Years and Beyond by Dor Laor
PDF
Reduce Your Cloud Spend with ScyllaDB by Tzach Livyatan
PDF
Migrating 50TB Data From a Home-Grown Database to ScyllaDB, Fast by Terence Liu
PDF
Vector Search with ScyllaDB by Szymon Wasik
PDF
Workload Prioritization: How to Balance Multiple Workloads in a Cluster by Fe...
PDF
Two Leading Approaches to Data Virtualization, and Which Scales Better? by Da...
PDF
Scaling a Beast: Lessons from 400x Growth in a High-Stakes Financial System b...
PDF
Object Storage in ScyllaDB by Ran Regev, ScyllaDB
PDF
Lessons Learned from Building a Serverless Notifications System by Srushith R...
Understanding The True Cost of DynamoDB Webinar
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
Database Benchmarking for Performance Masterclass: Session 1 - Benchmarking F...
New Ways to Reduce Database Costs with ScyllaDB
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Powering a Billion Dreams: Scaling Meesho’s E-commerce Revolution with Scylla...
Leading a High-Stakes Database Migration
Achieving Extreme Scale with ScyllaDB: Tips & Tradeoffs
Securely Serving Millions of Boot Artifacts a Day by João Pedro Lima & Matt ...
How Agoda Scaled 50x Throughput with ScyllaDB by Worakarn Isaratham
How Yieldmo Cut Database Costs and Cloud Dependencies Fast by Todd Coleman
ScyllaDB: 10 Years and Beyond by Dor Laor
Reduce Your Cloud Spend with ScyllaDB by Tzach Livyatan
Migrating 50TB Data From a Home-Grown Database to ScyllaDB, Fast by Terence Liu
Vector Search with ScyllaDB by Szymon Wasik
Workload Prioritization: How to Balance Multiple Workloads in a Cluster by Fe...
Two Leading Approaches to Data Virtualization, and Which Scales Better? by Da...
Scaling a Beast: Lessons from 400x Growth in a High-Stakes Financial System b...
Object Storage in ScyllaDB by Ran Regev, ScyllaDB
Lessons Learned from Building a Serverless Notifications System by Srushith R...

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PPTX
A Presentation on Artificial Intelligence
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Approach and Philosophy of On baking technology
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Big Data Technologies - Introduction.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Empathic Computing: Creating Shared Understanding
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
KodekX | Application Modernization Development
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Electronic commerce courselecture one. Pdf
A Presentation on Artificial Intelligence
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Dropbox Q2 2025 Financial Results & Investor Presentation
Reach Out and Touch Someone: Haptics and Empathic Computing
MYSQL Presentation for SQL database connectivity
Approach and Philosophy of On baking technology
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Big Data Technologies - Introduction.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Empathic Computing: Creating Shared Understanding
“AI and Expert System Decision Support & Business Intelligence Systems”
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation_ Review paper, used for researhc scholars
CIFDAQ's Market Insight: SEC Turns Pro Crypto
NewMind AI Monthly Chronicles - July 2025
KodekX | Application Modernization Development
Chapter 3 Spatial Domain Image Processing.pdf
Spectral efficient network and resource selection model in 5G networks
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy

Scylla Summit 2022: Learning Rust the Hard Way for a Production Kafka+ScyllaDB Pipeline

  • 1. Learning Rust the Hard Way for a Production Kafka+ScyllaDB Pipeline Alexys Jacob CTO
  • 2. Alexys Jacob ■ ScyllaDB awarded Open Source & University contributor ■ Open Source author & contributor • Apache Avro, Apache Airflow, MongoDB, MkDocs… ■ Tech speaker & writer ■ Gentoo Linux developer ■ Python Software Foundation contributing member CTO, Numberly @ultrabug
  • 3. Your next 20 minutes ■ The thought process to move from Python to Rust • Context, promises, arguments and decision ■ Learning Rust the hard way • All the stack components I had to work with in Rust • Tips, Open Source contributions and code samples ■ What is worth it? • Graphs, production numbers • Personal notes
  • 5. At Numberly, we move and process (a lot of) data using Kafka streams and pipelines that are enriched using ScyllaDB. processor app processor app Project context at Numberly Scylla processor app raw data enriched data enriched data enriched data client app partner API business app
  • 6. processor app processor app Pipeline reliability = latency + resilience Scylla processor app raw data enriched data enriched data enriched data client app partner API business app If a processor or ScyllaDB is slow or fails, our business, partners & clients are at risk.
  • 7. A major change in our pipeline processors had to be undertaken, giving us the opportunity to redesign them. The (rusted) opportunity Scylla processor app raw data enriched data enriched data enriched data client app partner API business app
  • 8. “Hey, why not rewrite those 3 Python processor apps into 1 Rust app?”
  • 9. A language empowering everyone to build reliable and efficient software. ■ Secure • Memory and thread safety as first class citizens • No runtime or garbage collector ■ Easy to deploy • Compiled binaries are self-sufficient ■ No compromises • Strongly and statically typed • Exhaustivity is mandatory • Built-in error management syntax and primitives ■ Plays well with Python • PyO3 can be used to run Rust from Python (or the contrary) The (never tried before) Rust promises
  • 10. Efficient software != Faster software ■ “Fast” meanings vary depending on your objectives. • Fast to develop? • Fast to maintain? • Fast to prototype? • Fast to process data? • Fast to cover all failure cases? “ Selecting a programming language can be a form of premature optimization
  • 11. Efficient software != Faster software ■ “Fast” meanings vary depending on your objectives. • Fast to develop? Python is way faster, did that for 15 years • Fast to maintain? Nobody at Numberly does Rust yet • Fast to prototype? No, code must be complete to compile and run • Fast to process data? Sure: to prove it, measure it • Fast to cover all failure cases? Definitely: mandatory exhaustivity + error handling primitives “ I did not choose Rust to be “faster”. Our Python code was fast enough to deliver their pipeline processing.
  • 12. Innovation cannot exist if you don’t accept to lose time. The question is to know when and on what project.
  • 13. The Reliable software paradigms ■ What makes me slow will make me stronger. • Low level paradigms (ownership, borrowing, lifetimes). • Strong type safety. • Compilation (debug, release). • Dependency management. • Exhaustive pattern matching. • Error management primitives (Result).
  • 14. The Reliable software paradigms ■ What makes me slow will make me stronger. • Low level paradigms (ownership, borrowing, lifetimes). If it compiles, it’s safe • Strong type safety. Predictable, readable, maintainable • Compilation (debug, release). Compiler is very helpful vs a random Python exception • Dependency management. Finally something looking sane vs Python mess • Exhaustive pattern matching. Confidence that you’re not forgetting something • Error management primitives (Result). Handle failure right from the language syntax “ I chose Rust because it provided me with the programming paradigms at the right abstraction level that I needed to finally understand and better explain the reliability and performance of an application.
  • 15. Learning Rust the hard way
  • 16. Production is not a Hello World ■ Learning the syntax and handling errors everywhere ■ Confluent Kafka + Schema Registry + Avro ■ Asynchronous latency-optimized design ■ ScyllaDB multi-datacenter ■ MongoDB ■ Kubernetes deployment ■ Prometheus exporter ■ Grafana dashboarding ■ Sentry Scylla processor app Confluent Kafka
  • 17. Confluent Kafka Schema Registry ■ Confluent Schema Registry breaks vanilla Apache Avro deserialization. • Gerard Klijs’ schema_registry_converter crate helps • I discovered performance problems which we worked on and are being addressed! ■ Latency-overhead-free manual approach:
  • 18. Apache Avro Rust was broken! ■ Avro Rust crate given to Apache Avro without an appointed committer. • Deserialization of complex schemas was broken... • I contributed fixes to Apache Avro (AVRO-3232+3240) • Now merged thanks to Martin Grigorov! ■ Rust compiler optimizations give a hell of a boost (once Avro is fixed) • Deserializing Avro is faster than JSON!
  • 19. green thread / msg Asynchronous patterns to optimize latency ■ Tricks to make your Kafka consumer strategy more efficient. • Deserialize your consumer messages on the consumer loop, not on green-threads • Spawning a green-thread has a performance cost • Control your green-thread parallelism • Defer to green-threads when I/O starts to be required Kafka consumer + avro deserializer raw data green thread / msg green thread / msg green thread / msg green thread / msg Scylla enriched data
  • 20. Absorbing tail latency spikes with parallelism x16 x2 parallelism load
  • 21. Scylla Rust (shard-aware) driver ■ The scylla-rust-driver crate is mature enough for production. • Use a CachingSession to automatically cache your prepared statements • Beware: prepared queries are NOT paged, use paged queries with execute_iter() instead!
  • 22. Exporting metrics properly for Prometheus ■ Effectively measuring latencies down to microseconds. • Fine tune your histogram buckets to match your expected latencies! ...
  • 23. Grafana dashboarding ■ Graph your precious metrics right! • ScyllaDB prepared statement cache size • Query and throughput rates • Kafka commits occurrence • Errors by type • Kubernetes pod memory • ... ■ Visualizing Prom Histograms max by (environment)(histogram_quantile(0.50, processing_latency_seconds_bucket{...}))
  • 25. Did I really lose time because of Rust? ■ I spent more time analyzing the latency impacts of code patterns and drivers’ options than struggling with Rust syntax. ■ Key figures for this application: • Kafka consumer max throughput with processing? 200K msg/s on 20 partitions • Avro deserialization P50 latency? 75µs • Scylla SELECT P50 latency on 1.5B+ rows tables? 250µs • Scylla INSERT P50 latency on 1.5B+ rows tables? 2ms
  • 26. It went better than expected ■ Rust crates ecosystem is mature, similar to Python Package Index. ■ The scylla-rust-driver is stable and efficient! ■ It took me a while to accept that Apache Avro was broken, not me. ■ 3 Python apps totalling 54 pods replaced by 1 Rust app totalling 20 pods ■ This feels like the most reliable and efficient software I ever wrote!
  • 27. Thank you! Stay in touch Alexys Jacob - Join us: ultrabug alexys@numberly.com