SlideShare a Scribd company logo
Application modernization patterns
with Apache Kafka, Debezium,
and Kubernetes
Bilgin Ibryam
@bibryam
Product Manager
Red Hat
2
We build our computers
the way we build our cities -
over time, without a plan,
on top of ruins.
Ellen Ullman
About me
3
▸ Product Manager at Red Hat
▸ Former Principal Architect
▸ Committer at Apache Camel
▸ Author
・ Camel Design Patterns
・ Kubernetes Patterns
▸ @ bibryam
▸ https://www.ofbizian.com
About this talk
4
Application migration/modernization Rs
▸ Rehosting - lift-and-shift
▸ Replatorming - lift, tinker, and shift
▸ Refactor / Re-architect
・ Debezium
・ Apache Kafka
・ Kubernetes
Starting point
5
Challenges with monolithic applications
▸ Frequent deployment is difficult
▸ Obstacle to scaling development
▸ Scaling the application can be difficult
Expected modernization benefits
▸ Reduce time to market
▸ Greater team autonomy
▸ Improved automation
▸ Increased application performance
Target state
6
Cloud native microservices’ characteristics
▸ Independently deployable
▸ Modeled around a business domain
▸ Own their data
▸ Emit events (based on EDA)
▸ Built on open source technology such as
Kubernetes, Apache Kafka, Debezium
Measuring the results
▸ Lead time for change
▸ Deployment frequency
▸ Mean time to recovery
Migration
Challenges
Strangler Pattern
8
High-level steps
▸ Identify functional boundary
▸ Migrate/reimplement functionality
▸ Synchronize data
▸ Reroute traffic to new service
▸ Decomposition old service
Main benefits
▸ No big bang migration
▸ Minimal changes to the monolith
▸ Low risk with the ability to fall back
Functional boundary
9
Functional boundary considerations
▸ Aggregates, bounded context based on DDD
▸ Event Storming technique by A. Brandolini
▸ Data model coupling
▸ Module dependencies
Where to start from?
▸ Easy win
▸ Noticeable improvement
▸ A representative effort
Interception options
10
Prerequisites
▸ Ability to identify inbound calls
▸ Ability to direct calls to new service (and back)
Routing options
▸ Client redirection
▸ Transparent HTTP proxy
▸ Shared protocol translation proxy
▸ Embedded/sidecar proxy
Interception options
11
Prerequisites
▸ Ability to identify inbound calls
▸ Ability to direct calls to new service (and back)
Routing options
▸ Client redirection
▸ Transparent HTTP proxy
▸ Shared protocol translation proxy
▸ Embedded/sidecar custom proxy
Database strangulation
12
Database first Database and code together
Code first
Data synchronization
13
Cons
▸ Polling delay, might miss updates
▸ Polling overhead
▸ Deletes not captured
▸ Not transparent to writing application
Pros
▸ Simple Installation and configuration
Cons
▸ Varying capabilities
▸ Limited integration capabilities
▸ Not portable
▸ Not easily testable
▸ Not transparent to source database
Pros
▸ No additional application required
Cons
▸ Requires specialized tools
▸ Requires database configuration
Pros
▸ All changes (deletes) are captured
▸ No polling delay or overhead
▸ Transparent to writing application
Triggers Log readers
Queries/Polling
Debezium
14
What is Debezium?
▸ Open source Change Data Capture platform
▸ Snapshotting, filtering, transformations
▸ MySQL, PostgreSQL, MongoDB, SQL Server,
Db2, Oracle, Vitess, Cassandra
▸ Use cases: data replication, cache updates, search index
updates, audit logs, sync data between services
Strangler Pattern with Debezium
15
Strangler Pattern with Debezium
▸ Transparent to the writing application
▸ Initial bulk import through snapshotting
▸ Schema, table, column filtering
▸ Single Message Transformations as anti-corruption layer
▸ Schema Registry for schema validation and
compatibility enforcement of data models
Debezium with Apache Kafka
▸ Guaranteed ordering, message compaction
▸ Pull based - re-read from start, or new changes
▸ Kafka Connect - offset tracking, fail over
Release steps
16
Steps so far
▸ Identified a functional boundary
▸ Migrated it as a new service
▸ Created a new data model in a new database
▸ Automated and deployed everything
▸ Bulk imported data and kept it in-sync
▸ No traffic routed to the new service
Release steps
17
Next step
▸ Route READ traffic to the new service
Release steps
18
Next steps
▸ Route READ and WRITE traffic to the new service
▸ Two-way data synchronization in progress
Release steps
19
Next steps
▸ Stop WRITE traffic to legacy system
▸ Stop data synchronization from legacy system
Release steps
20
Final steps
▸ STOP READ traffic to the legacy application
▸ Stop data synchronization to legacy system
▸ Decommission migrated module
New
Challenges
Modernization challenges
22
Migration challenges
▸ Low-risk changes with demonstrable progress
▸ Deliver enhancements and new “business value”
▸ Simultaneously delivering new services
Distributed systems challenges
▸ Automation and operations at scale
▸ Dual-writes and long-running business transactions
▸ Analytical and reporting data needs
Operating event-driven services at scale
23
Microservices on Kubernetes
▸ Deployment/rollback
▸ Placement/scheduling
▸ Configuration management
▸ Resource/failure isolation
▸ Auto heal/upgrade (through operators)
Event-driven applications on Kubernetes
▸ Strimzi - operating Apache Kafka cluster
▸ KEDA - event-driven workload autoscaling
▸ Debezium - change data capture platform
▸ Knative Eventing - event-driven primitives
Outbox Pattern
24
Offers an approach for services to update their data store and
notify other services in a reliable and eventually consistent
manner.
▸ Addresses the dual-write problem
▸ Offers “read your own writes" semantics
▸ “at-least-once” semantics for consumers
Saga Pattern
25
Splits up long-running business transactions into a series of
multiple local transactions. When implemented using the Outbox
Pattern, it offers the benefits of orchestration and asynchronous
communication.
▸ Orchestration based coordination
▸ Asynchronous communication with Apache Kafka
Summary
26
Modern software systems are like cities - they evolve over time, on top of legacy systems. Using
proven patterns and standardized tools help create long-lasting systems that grow with your needs.
▸ Strangler Pattern - a low-risk application migration technique
▸ Outbox/Saga Patterns - reliable inter-service communication approach
▸ Debezium - a non-intrusive toolking for change data capture
▸ Kubernetes / Strimzi / Apache Kafka - de facto standards in their fields
Resources
27
▸ Monolith To Microservices
▸ Building Event-Driven Microservices
▸ Designing Data-Intensive Applications
▸ Kubernetes Patterns
▸ Debezium.io
▸ Keda.sh
▸ Strimzi.io
▸ github.com/windup
28
Red Hat OpenShift Streams
for Apache Kafka
a fully managed Apache Kafka service by Red Hat
http://red.ht/TryKafka
Try Apache Kafka in seconds
Application modernization patterns with apache kafka, debezium, and kubernetes   summit 2021

More Related Content

PPTX
Kafka error handling patterns and best practices | Hemant Desale and Aruna Ka...
PPSX
Microservices Docker Kubernetes Istio Kanban DevOps SRE
PPSX
Agile, User Stories, Domain Driven Design
PPSX
CI-CD Jenkins, GitHub Actions, Tekton
PPSX
Event Sourcing & CQRS, Kafka, Rabbit MQ
PPTX
Monitoring Apache Kafka
PPTX
Apache Kafka Best Practices
PPTX
DevOps a pratical approach
Kafka error handling patterns and best practices | Hemant Desale and Aruna Ka...
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Agile, User Stories, Domain Driven Design
CI-CD Jenkins, GitHub Actions, Tekton
Event Sourcing & CQRS, Kafka, Rabbit MQ
Monitoring Apache Kafka
Apache Kafka Best Practices
DevOps a pratical approach

What's hot (20)

ODP
Stream processing using Kafka
PPTX
PDF
An Introduction to Apache Kafka
PPTX
Azure dev ops
PPTX
The Top 5 Apache Kafka Use Cases and Architectures in 2022
PPTX
Apache kafka
PPTX
Gatekeeper: API gateway
PPTX
Microservices Architecture & Testing Strategies
PPTX
Kafka 101
PDF
Apache Kafka Architecture & Fundamentals Explained
PDF
Can Apache Kafka Replace a Database?
PPTX
Monoliths and Microservices
PPSX
Microservices, DevOps & SRE
PPTX
Azure DevOps CI/CD For Beginners
ODP
Openshift Container Platform
PDF
Microservice Architecture
PPSX
Microservices Architecture - Cloud Native Apps
PPTX
Platform engineering 101
PPTX
Kafka presentation
PDF
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Stream processing using Kafka
An Introduction to Apache Kafka
Azure dev ops
The Top 5 Apache Kafka Use Cases and Architectures in 2022
Apache kafka
Gatekeeper: API gateway
Microservices Architecture & Testing Strategies
Kafka 101
Apache Kafka Architecture & Fundamentals Explained
Can Apache Kafka Replace a Database?
Monoliths and Microservices
Microservices, DevOps & SRE
Azure DevOps CI/CD For Beginners
Openshift Container Platform
Microservice Architecture
Microservices Architecture - Cloud Native Apps
Platform engineering 101
Kafka presentation
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Ad

Similar to Application modernization patterns with apache kafka, debezium, and kubernetes summit 2021 (20)

PDF
Modernization patterns to refactor a legacy application into event driven mic...
PPTX
Changing the tires on a big data racecar
PPTX
Converged Infrastructures on Kubernetes with Kubevirt
PDF
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
PDF
OSDC 2018 | From Monolith to Microservices by Paul Puschmann_
PDF
Transformacion e innovacion digital Meetup - Application Modernization and Mi...
PDF
Day in the life event-driven workshop
PDF
Application Modernisation through Event-Driven Microservices
PDF
Introducing Change Data Capture with Debezium
PDF
Containers and Big Data
PDF
How to Migrate Applications Off a Mainframe
PPTX
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
PDF
20220311-EB-Designing_Event_Driven_Systems.pdf
PDF
Modernising Change - Lime Point - Confluent - Kong
PDF
Building event-driven (Micro)Services with Apache Kafka
PPTX
The Future of Data Engineering - 2019 InfoQ QConSF
PDF
Cloud application architecture with Microsoft Azure
PPTX
Capture the Streams of Database Changes
PPTX
Event Driven Microservices architecture
PDF
An eventful tour from enterprise integration to serverless and functions
Modernization patterns to refactor a legacy application into event driven mic...
Changing the tires on a big data racecar
Converged Infrastructures on Kubernetes with Kubevirt
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
OSDC 2018 | From Monolith to Microservices by Paul Puschmann_
Transformacion e innovacion digital Meetup - Application Modernization and Mi...
Day in the life event-driven workshop
Application Modernisation through Event-Driven Microservices
Introducing Change Data Capture with Debezium
Containers and Big Data
How to Migrate Applications Off a Mainframe
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
20220311-EB-Designing_Event_Driven_Systems.pdf
Modernising Change - Lime Point - Confluent - Kong
Building event-driven (Micro)Services with Apache Kafka
The Future of Data Engineering - 2019 InfoQ QConSF
Cloud application architecture with Microsoft Azure
Capture the Streams of Database Changes
Event Driven Microservices architecture
An eventful tour from enterprise integration to serverless and functions
Ad

More from Bilgin Ibryam (12)

PDF
Dapr - A 10x Developer Framework for Any Language
PDF
Dual write strategies for microservices
PDF
How to financially survive while growing a small open source project
PDF
What next after microservices
PDF
The Evolution of Distributed Systems on Kubernetes
PDF
Enterprise Integration for Ethereum
PDF
The Kubernetes Effect
PDF
Designing Cloud Native Applications with Kubernetes
PDF
Cloud Native Patterns
ODP
Cloud Native Java Development Patterns
PDF
Cloud Native Camel Design Patterns
PDF
Camel Desing Patterns Learned Through Blood, Sweat, and Tears
Dapr - A 10x Developer Framework for Any Language
Dual write strategies for microservices
How to financially survive while growing a small open source project
What next after microservices
The Evolution of Distributed Systems on Kubernetes
Enterprise Integration for Ethereum
The Kubernetes Effect
Designing Cloud Native Applications with Kubernetes
Cloud Native Patterns
Cloud Native Java Development Patterns
Cloud Native Camel Design Patterns
Camel Desing Patterns Learned Through Blood, Sweat, and Tears

Recently uploaded (20)

PPTX
Introduction to Artificial Intelligence
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
assetexplorer- product-overview - presentation
PPTX
L1 - Introduction to python Backend.pptx
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PPTX
Computer Software and OS of computer science of grade 11.pptx
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPT
Introduction Database Management System for Course Database
PPTX
Transform Your Business with a Software ERP System
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Nekopoi APK 2025 free lastest update
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
history of c programming in notes for students .pptx
PDF
medical staffing services at VALiNTRY
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Introduction to Artificial Intelligence
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Reimagine Home Health with the Power of Agentic AI​
Understanding Forklifts - TECH EHS Solution
assetexplorer- product-overview - presentation
L1 - Introduction to python Backend.pptx
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Computer Software and OS of computer science of grade 11.pptx
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Introduction Database Management System for Course Database
Transform Your Business with a Software ERP System
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
How to Choose the Right IT Partner for Your Business in Malaysia
Nekopoi APK 2025 free lastest update
Upgrade and Innovation Strategies for SAP ERP Customers
history of c programming in notes for students .pptx
medical staffing services at VALiNTRY
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...

Application modernization patterns with apache kafka, debezium, and kubernetes summit 2021

  • 1. Application modernization patterns with Apache Kafka, Debezium, and Kubernetes Bilgin Ibryam @bibryam Product Manager Red Hat
  • 2. 2 We build our computers the way we build our cities - over time, without a plan, on top of ruins. Ellen Ullman
  • 3. About me 3 ▸ Product Manager at Red Hat ▸ Former Principal Architect ▸ Committer at Apache Camel ▸ Author ・ Camel Design Patterns ・ Kubernetes Patterns ▸ @ bibryam ▸ https://www.ofbizian.com
  • 4. About this talk 4 Application migration/modernization Rs ▸ Rehosting - lift-and-shift ▸ Replatorming - lift, tinker, and shift ▸ Refactor / Re-architect ・ Debezium ・ Apache Kafka ・ Kubernetes
  • 5. Starting point 5 Challenges with monolithic applications ▸ Frequent deployment is difficult ▸ Obstacle to scaling development ▸ Scaling the application can be difficult Expected modernization benefits ▸ Reduce time to market ▸ Greater team autonomy ▸ Improved automation ▸ Increased application performance
  • 6. Target state 6 Cloud native microservices’ characteristics ▸ Independently deployable ▸ Modeled around a business domain ▸ Own their data ▸ Emit events (based on EDA) ▸ Built on open source technology such as Kubernetes, Apache Kafka, Debezium Measuring the results ▸ Lead time for change ▸ Deployment frequency ▸ Mean time to recovery
  • 8. Strangler Pattern 8 High-level steps ▸ Identify functional boundary ▸ Migrate/reimplement functionality ▸ Synchronize data ▸ Reroute traffic to new service ▸ Decomposition old service Main benefits ▸ No big bang migration ▸ Minimal changes to the monolith ▸ Low risk with the ability to fall back
  • 9. Functional boundary 9 Functional boundary considerations ▸ Aggregates, bounded context based on DDD ▸ Event Storming technique by A. Brandolini ▸ Data model coupling ▸ Module dependencies Where to start from? ▸ Easy win ▸ Noticeable improvement ▸ A representative effort
  • 10. Interception options 10 Prerequisites ▸ Ability to identify inbound calls ▸ Ability to direct calls to new service (and back) Routing options ▸ Client redirection ▸ Transparent HTTP proxy ▸ Shared protocol translation proxy ▸ Embedded/sidecar proxy
  • 11. Interception options 11 Prerequisites ▸ Ability to identify inbound calls ▸ Ability to direct calls to new service (and back) Routing options ▸ Client redirection ▸ Transparent HTTP proxy ▸ Shared protocol translation proxy ▸ Embedded/sidecar custom proxy
  • 12. Database strangulation 12 Database first Database and code together Code first
  • 13. Data synchronization 13 Cons ▸ Polling delay, might miss updates ▸ Polling overhead ▸ Deletes not captured ▸ Not transparent to writing application Pros ▸ Simple Installation and configuration Cons ▸ Varying capabilities ▸ Limited integration capabilities ▸ Not portable ▸ Not easily testable ▸ Not transparent to source database Pros ▸ No additional application required Cons ▸ Requires specialized tools ▸ Requires database configuration Pros ▸ All changes (deletes) are captured ▸ No polling delay or overhead ▸ Transparent to writing application Triggers Log readers Queries/Polling
  • 14. Debezium 14 What is Debezium? ▸ Open source Change Data Capture platform ▸ Snapshotting, filtering, transformations ▸ MySQL, PostgreSQL, MongoDB, SQL Server, Db2, Oracle, Vitess, Cassandra ▸ Use cases: data replication, cache updates, search index updates, audit logs, sync data between services
  • 15. Strangler Pattern with Debezium 15 Strangler Pattern with Debezium ▸ Transparent to the writing application ▸ Initial bulk import through snapshotting ▸ Schema, table, column filtering ▸ Single Message Transformations as anti-corruption layer ▸ Schema Registry for schema validation and compatibility enforcement of data models Debezium with Apache Kafka ▸ Guaranteed ordering, message compaction ▸ Pull based - re-read from start, or new changes ▸ Kafka Connect - offset tracking, fail over
  • 16. Release steps 16 Steps so far ▸ Identified a functional boundary ▸ Migrated it as a new service ▸ Created a new data model in a new database ▸ Automated and deployed everything ▸ Bulk imported data and kept it in-sync ▸ No traffic routed to the new service
  • 17. Release steps 17 Next step ▸ Route READ traffic to the new service
  • 18. Release steps 18 Next steps ▸ Route READ and WRITE traffic to the new service ▸ Two-way data synchronization in progress
  • 19. Release steps 19 Next steps ▸ Stop WRITE traffic to legacy system ▸ Stop data synchronization from legacy system
  • 20. Release steps 20 Final steps ▸ STOP READ traffic to the legacy application ▸ Stop data synchronization to legacy system ▸ Decommission migrated module
  • 22. Modernization challenges 22 Migration challenges ▸ Low-risk changes with demonstrable progress ▸ Deliver enhancements and new “business value” ▸ Simultaneously delivering new services Distributed systems challenges ▸ Automation and operations at scale ▸ Dual-writes and long-running business transactions ▸ Analytical and reporting data needs
  • 23. Operating event-driven services at scale 23 Microservices on Kubernetes ▸ Deployment/rollback ▸ Placement/scheduling ▸ Configuration management ▸ Resource/failure isolation ▸ Auto heal/upgrade (through operators) Event-driven applications on Kubernetes ▸ Strimzi - operating Apache Kafka cluster ▸ KEDA - event-driven workload autoscaling ▸ Debezium - change data capture platform ▸ Knative Eventing - event-driven primitives
  • 24. Outbox Pattern 24 Offers an approach for services to update their data store and notify other services in a reliable and eventually consistent manner. ▸ Addresses the dual-write problem ▸ Offers “read your own writes" semantics ▸ “at-least-once” semantics for consumers
  • 25. Saga Pattern 25 Splits up long-running business transactions into a series of multiple local transactions. When implemented using the Outbox Pattern, it offers the benefits of orchestration and asynchronous communication. ▸ Orchestration based coordination ▸ Asynchronous communication with Apache Kafka
  • 26. Summary 26 Modern software systems are like cities - they evolve over time, on top of legacy systems. Using proven patterns and standardized tools help create long-lasting systems that grow with your needs. ▸ Strangler Pattern - a low-risk application migration technique ▸ Outbox/Saga Patterns - reliable inter-service communication approach ▸ Debezium - a non-intrusive toolking for change data capture ▸ Kubernetes / Strimzi / Apache Kafka - de facto standards in their fields
  • 27. Resources 27 ▸ Monolith To Microservices ▸ Building Event-Driven Microservices ▸ Designing Data-Intensive Applications ▸ Kubernetes Patterns ▸ Debezium.io ▸ Keda.sh ▸ Strimzi.io ▸ github.com/windup
  • 28. 28 Red Hat OpenShift Streams for Apache Kafka a fully managed Apache Kafka service by Red Hat http://red.ht/TryKafka Try Apache Kafka in seconds