SlideShare a Scribd company logo
Modernization Patterns to
Refactor a Legacy Application
Into Event-driven
Microservices
1
Bilgin Ibryam
Product Manager @Red Hat
@bibryam
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 wins
▸ 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
What is Apache Camel?
11
Camel is an integration toolkit that offers:
▸ Hundreds of connectors
▸ Tens of integration patterns
▸ Multiple data formats and languages
▸ Domain specific languages: XML, Java, YAML
Interception options
12 https://k8spatterns.io/
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
Kubernetes Pods
13
Deployment guarantees Lifecycle guarantees
Sidecar Pattern
14 https://k8spatterns.io/
Sidecar Pattern
15 https://k8spatterns.io/
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
16
Database first Database and code together
Code first
Data synchronization
17
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
What is Debezium?
18
Debezium in a nutshell
▸ 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
19
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
20
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
21
Next step
▸ Route READ traffic to the new service
Release steps
22
Next steps
▸ Route READ and WRITE traffic to the new service
▸ Two-way data synchronization in progress
Release steps
23
Next steps
▸ Stop WRITE traffic to legacy system
▸ Stop data synchronization from legacy system
Release steps
24
Final steps
▸ STOP READ traffic to the legacy application
▸ Stop data synchronization to legacy system
▸ Decommission migrated module
New
Challenges
Modernization challenges
26
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
27
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
▸ Apicurio - Schema Registry and operators to run them
Outbox Pattern
28
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
Reliable Data Exchange With the Outbox Pattern
Saga Pattern
29
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
Saga Orchestration for Microservices Using the Outbox Pattern
Summary
30
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
31
▸ Monolith To Microservices
▸ Building Event-Driven Microservices
▸ Designing Data-Intensive Applications
▸ Kubernetes Patterns
▸ Debezium.io
▸ Keda.sh
▸ Strimzi.io
▸ github.com/windup
32
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
Thank you!
33
Bilgin Ibryam
Product Manager @Red Hat
@bibryam

More Related Content

What's hot (20)

PDF
Demystifying DevSecOps
Archana Joshi
 
PDF
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
DevOps.com
 
PPSX
CI-CD Jenkins, GitHub Actions, Tekton
Araf Karsh Hamid
 
PDF
Kubernetes 101
Winton Winton
 
PDF
Azure DevOps Presentation
InCycleSoftware
 
PDF
Microservice Architecture
Nguyen Tung
 
PPSX
Agile, User Stories, Domain Driven Design
Araf Karsh Hamid
 
PPTX
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
Sonatype
 
PPTX
Azure Cloud Adoption Framework + Governance - Sana Khan and Jay Kumar
Timothy McAliley
 
PDF
OpenShift-Technical-Overview.pdf
JuanSalinas593459
 
PDF
Autoscaling Kubernetes
craigbox
 
PPSX
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Araf Karsh Hamid
 
PDF
Event driven autoscaling with keda
Adam Hamsik
 
PDF
Kubernetes Introduction
Peng Xiao
 
PDF
Kubernetes Networking | Kubernetes Services, Pods & Ingress Networks | Kubern...
Edureka!
 
PPTX
Securing and Automating Kubernetes with Kyverno
Saim Safder
 
PDF
Introduction of Kubernetes - Trang Nguyen
Trang Nguyen
 
PPTX
Devops architecture
Ojasvi Jagtap
 
PPTX
Jenkins tutorial
Mamun Rashid, CCDH
 
Demystifying DevSecOps
Archana Joshi
 
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
DevOps.com
 
CI-CD Jenkins, GitHub Actions, Tekton
Araf Karsh Hamid
 
Kubernetes 101
Winton Winton
 
Azure DevOps Presentation
InCycleSoftware
 
Microservice Architecture
Nguyen Tung
 
Agile, User Stories, Domain Driven Design
Araf Karsh Hamid
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
Sonatype
 
Azure Cloud Adoption Framework + Governance - Sana Khan and Jay Kumar
Timothy McAliley
 
OpenShift-Technical-Overview.pdf
JuanSalinas593459
 
Autoscaling Kubernetes
craigbox
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Araf Karsh Hamid
 
Event driven autoscaling with keda
Adam Hamsik
 
Kubernetes Introduction
Peng Xiao
 
Kubernetes Networking | Kubernetes Services, Pods & Ingress Networks | Kubern...
Edureka!
 
Securing and Automating Kubernetes with Kyverno
Saim Safder
 
Introduction of Kubernetes - Trang Nguyen
Trang Nguyen
 
Devops architecture
Ojasvi Jagtap
 
Jenkins tutorial
Mamun Rashid, CCDH
 

Similar to Modernization patterns to refactor a legacy application into event driven microservices (20)

PDF
Application modernization patterns with apache kafka, debezium, and kubernete...
Bilgin Ibryam
 
PDF
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
confluent
 
PPTX
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
confluent
 
PDF
Day in the life event-driven workshop
Christina Lin
 
PPTX
Microservices deck
Raja Chattopadhyay
 
PPTX
Changing the tires on a big data racecar
David McNelis
 
PDF
Integration in the Cloud, by Rob Davies
Judy Breedlove
 
PDF
OSDC 2018 | From Monolith to Microservices by Paul Puschmann_
NETWAYS
 
PDF
Cloud application architecture with Microsoft Azure
Guillermo Zepeda Selman
 
PPTX
Event Driven Microservices architecture
NikhilBarthwal4
 
PPTX
Event Bus as Backbone for Decoupled Microservice Choreography - Lecture and W...
Lucas Jellema
 
PDF
Application Modernisation through Event-Driven Microservices
confluent
 
PDF
Transformacion e innovacion digital Meetup - Application Modernization and Mi...
José Román Martín Gil
 
PPT
Integration in the Cloud
Rob Davies
 
PDF
Building event-driven (Micro)Services with Apache Kafka
Guido Schmutz
 
PDF
20220311-EB-Designing_Event_Driven_Systems.pdf
peerbashap
 
PPTX
Containers and Big Data
DataWorks Summit
 
PPTX
WORKSHOP: Microservices as Containers on AWS
Casey Lee
 
PDF
An eventful tour from enterprise integration to serverless and functions
Christian Posta
 
PPT
The Next Generation Application Server – How Event Based Processing yields s...
Guy Korland
 
Application modernization patterns with apache kafka, debezium, and kubernete...
Bilgin Ibryam
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
confluent
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
confluent
 
Day in the life event-driven workshop
Christina Lin
 
Microservices deck
Raja Chattopadhyay
 
Changing the tires on a big data racecar
David McNelis
 
Integration in the Cloud, by Rob Davies
Judy Breedlove
 
OSDC 2018 | From Monolith to Microservices by Paul Puschmann_
NETWAYS
 
Cloud application architecture with Microsoft Azure
Guillermo Zepeda Selman
 
Event Driven Microservices architecture
NikhilBarthwal4
 
Event Bus as Backbone for Decoupled Microservice Choreography - Lecture and W...
Lucas Jellema
 
Application Modernisation through Event-Driven Microservices
confluent
 
Transformacion e innovacion digital Meetup - Application Modernization and Mi...
José Román Martín Gil
 
Integration in the Cloud
Rob Davies
 
Building event-driven (Micro)Services with Apache Kafka
Guido Schmutz
 
20220311-EB-Designing_Event_Driven_Systems.pdf
peerbashap
 
Containers and Big Data
DataWorks Summit
 
WORKSHOP: Microservices as Containers on AWS
Casey Lee
 
An eventful tour from enterprise integration to serverless and functions
Christian Posta
 
The Next Generation Application Server – How Event Based Processing yields s...
Guy Korland
 
Ad

More from Bilgin Ibryam (12)

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

Recently uploaded (20)

PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
PPTX
Feb 2021 Cohesity first pitch presentation.pptx
enginsayin1
 
PPTX
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
PPTX
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
PPTX
How Odoo Became a Game-Changer for an IT Company in Manufacturing ERP
SatishKumar2651
 
PDF
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PDF
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PPTX
Human Resources Information System (HRIS)
Amity University, Patna
 
PPTX
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
PDF
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
PPTX
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
PDF
GridView,Recycler view, API, SQLITE& NetworkRequest.pdf
Nabin Dhakal
 
PDF
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
PDF
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
Feb 2021 Cohesity first pitch presentation.pptx
enginsayin1
 
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
How Odoo Became a Game-Changer for an IT Company in Manufacturing ERP
SatishKumar2651
 
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Human Resources Information System (HRIS)
Amity University, Patna
 
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
GridView,Recycler view, API, SQLITE& NetworkRequest.pdf
Nabin Dhakal
 
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 

Modernization patterns to refactor a legacy application into event driven microservices

  • 1. Modernization Patterns to Refactor a Legacy Application Into Event-driven Microservices 1 Bilgin Ibryam Product Manager @Red Hat @bibryam
  • 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 wins ▸ 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. What is Apache Camel? 11 Camel is an integration toolkit that offers: ▸ Hundreds of connectors ▸ Tens of integration patterns ▸ Multiple data formats and languages ▸ Domain specific languages: XML, Java, YAML
  • 12. Interception options 12 https://k8spatterns.io/ 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
  • 15. Sidecar Pattern 15 https://k8spatterns.io/ 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
  • 16. Database strangulation 16 Database first Database and code together Code first
  • 17. Data synchronization 17 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
  • 18. What is Debezium? 18 Debezium in a nutshell ▸ 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
  • 19. Strangler Pattern with Debezium 19 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
  • 20. Release steps 20 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
  • 21. Release steps 21 Next step ▸ Route READ traffic to the new service
  • 22. Release steps 22 Next steps ▸ Route READ and WRITE traffic to the new service ▸ Two-way data synchronization in progress
  • 23. Release steps 23 Next steps ▸ Stop WRITE traffic to legacy system ▸ Stop data synchronization from legacy system
  • 24. Release steps 24 Final steps ▸ STOP READ traffic to the legacy application ▸ Stop data synchronization to legacy system ▸ Decommission migrated module
  • 26. Modernization challenges 26 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
  • 27. Operating event-driven services at scale 27 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 ▸ Apicurio - Schema Registry and operators to run them
  • 28. Outbox Pattern 28 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 Reliable Data Exchange With the Outbox Pattern
  • 29. Saga Pattern 29 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 Saga Orchestration for Microservices Using the Outbox Pattern
  • 30. Summary 30 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
  • 31. Resources 31 ▸ Monolith To Microservices ▸ Building Event-Driven Microservices ▸ Designing Data-Intensive Applications ▸ Kubernetes Patterns ▸ Debezium.io ▸ Keda.sh ▸ Strimzi.io ▸ github.com/windup
  • 32. 32 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
  • 33. Thank you! 33 Bilgin Ibryam Product Manager @Red Hat @bibryam