Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
@crichardson
Decompose your monolith:
strategies for migrating to
microservices
Chris Richardson
Founder of Eventuate.io
F...
@crichardson
Presentation goal
How to incrementally refactor a
monolithic application to
microservices
@crichardson
About Chris
http://adopt.microservices.io
@crichardson
About Chris
https://microservices.io/book
40% discount with code 	
ctworaclecodeone19
About Chris: microservices.io
Microservices pattern
language
Articles
Example code
Microservices Assessment
Platform
@crichardson
Agenda
Why microservices?
Overview of refactoring a monolith
Implementing new features as services
Extracting...
@crichardson
+
Marketplace is volatile, uncertain, complex
and ambiguous
+
Businesses must innovate faster
Deliver softwar...
@crichardson
Monolithic architecture: -ilities
decline over time
Time
Maintainability
Testability
Deployability
Modularity...
The microservice architecture is
an architectural style
that structures an application as a
set of services*
Each microser...
@crichardson
Process: Lean + DevOps/Continuous Delivery & Deployment
Organization: Small,
autonomous,
product teams
Archit...
@crichardson
Agenda
Why microservices?
Overview of refactoring a monolith
Implementing new features as services
Extracting...
@crichardson
When to migrate to
microservices: DON”T!
The monolithic architecture is not an anti-pattern
If software deliv...
@crichardson
If and only if that is
insufficient* then consider
migrating to microservices
*Large, complex applications dev...
@crichardson
How do you decompose your
big, scary monolithic application?
Monolith
Service?
Microservice architecture
Serv...
@crichardson
According to Randy Shoup:
“As Martin Fowler likes to say, the only
thing a Big Bang rewrite guarantees is a
B...
@crichardson
Best done incrementally!
@crichardson
Strangler
Application
http://www.martinfowler.com/bliki/StranglerApplication.html
@crichardson
@crichardson
Strangling the monolith
Monolith
Time
Monolith
Service
Monolith
Service
Service
Monolith
Service
Service
Serv...
@crichardson
Module
Strangling the monolith: reroute
requests to services
Monolith Service
API Gateway
Request
Monolith
Mo...
@crichardson
Agenda
Why microservices?
Overview of refactoring a monolith
Implementing new features as services
Extracting...
@crichardson
Let’s imagine you want to implement
a significant new feature….
The Law of Holes:
"if you find yourself in a ho...
@crichardson
Implement new functionality as a
service
Monolith Service
Data integration glue
API Gateway
Request
Monolithi...
@crichardson
Service Monolith data integration glue:
API invocation
Monolith Service
Monolithic
database
Service
database
...
@crichardson
Service Monolith data integration glue:
replicate data for reading
Monolith Service
Monolithic
database
Servi...
@crichardson
Service Monolith data
access options
Option Benefits Drawbacks
API call to
monolith
Simple
Works for writes an...
@crichardson
Data replication options
Option Benefits Drawbacks
Application events
Easy to publish meaningful events
Decoup...
@crichardson
FTGO Delayed delivery service
As a workaround for a mediocre
courier scheduling algorithm
that is taking too ...
FTGO Delayed delivery service
Periodically looks for
orders that won’t be
delivered on time
Not picked up and
restaurant c...
@crichardson
Delayed delivery service: data
integration strategies
Usage How
Orders
“complex” query to
determine whether
d...
@crichardson
Agenda
Why microservices?
Overview of refactoring a monolith
Implementing new features as services
Extracting...
@crichardson
Module service ...
Monolithic database
Module’s tables
Module
Monolith
Ext. API
Including slices
of tables
@crichardson
Define a two way “remotable”
interface
Monolithic database
Module’s tables
Module
Untangle
dependencies
Monoli...
@crichardson
Incrementally modify monolith
to invoke module via new API*
Module
Module
All writes - module/service owns it...
@crichardson
Replicating data to reduce scope of
refactoring
ORDER_ID STATE … DELIVERY_STATE COURIER_ID
… … … … …
ORDER_ID...
@crichardson
... Module service
Monolith
Service
Monolithic database
Module
Database
API Gateway
Request
Existing code or
...
@crichardson
Repeat extracting
services until:
• Eliminated the
monolith
• Solved software
delivery problems
• Higher prio...
@crichardson
What to extract?
Have the ideal microservice architecture in mind
Limited time-boxed architecture definition e...
@crichardson
Example:
Extracting delivery
management from the FTGO
monolith
https://microservices.io/refactoring/
@crichardson
AS-IS architecture: tangled code
FTGO
<<module>>
Order and DeliveryManagement
<<entity>>
Order
ORDER_ID STATE...
@crichardson
AS-IS: tangled code
Order
deliveryTime
Restaurant
address
… Courier
address
availability
…
Plan
Action
type
L...
@crichardson
TO-BE design
Order
deliveryTime
Restaurant
Courier
availability
…
Plan
Action
type
Line
Item Address
delivery...
@crichardson
FTGO monolith Delivery Service integration
Delivery Service
Restaurant
Courier
availability
…
Delivery
delive...
@crichardson
AS-IS TO-BE: Overview of
extracting the Delivery Service
1. Split the code: convert delivery management code ...
@crichardson
FTGO
<<module>>
Order Management
<<module>>
Delivery Management
<<entity>>
Order
ORDER_ID STATE … DELIVERY_ST...
@crichardson
Delivery Mgmt
Module
Restaurant
Courier
availability
location
…
Delivery
deliveryTime
Delivery
Service
schedu...
@crichardson
FTGO
<<module>>
Order
Management
<<module>>
Delivery
Management
<<entity>>
Order
Consumer
Courier
schedule()
...
@crichardson
Defining the DELIVERY table
create table ftgo_delivery.delivery (…)
select …subset of columns…
from ftgo.order...
@crichardson
Delivery ServiceFTGO
But it’s not just the DELIVERY table
Courier
Id
Name
Availability
Courier
Id
Name
Availa...
@crichardson
Replicating the RESTAURANT
table
create table ftgo_delivery.restaurants
select …subset of columns…
from ftgo....
@crichardson
FTGO
<<module>>
Order
Management
<<module>>
Delivery
Management
<<entity>>
Order
Consumer Courier
schedule()
...
@crichardson
FTGO
<<module>>
Order
Management
<<module>>
Delivery
Management
<<entity>>
Order
Consumer Courier
schedule()
...
@crichardson
Integration using asynchronous messaging
Delivery
Service
Delivery
Service
schedule()
reschedule()
cancel()
D...
@crichardson
FTGO
<<module>>
Order
Management
<<entity>>
Order
Consumer Courier
schedule() Delivery Service
<<module>>
Del...
@crichardson
Summary
The microservice architecture enables the rapid, frequent and
reliable delivery of changes to long-li...
@crichardson
@crichardson chris@chrisrichardson.net
http://adopt.microservices.io
Questions?
40% discount with code 	
ctwo...
Upcoming SlideShare
Loading in …5
×

of

Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 1 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 2 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 3 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 4 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 5 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 6 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 7 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 8 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 9 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 10 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 11 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 12 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 13 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 14 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 15 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 16 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 17 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 18 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 19 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 20 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 21 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 22 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 23 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 24 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 25 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 26 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 27 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 28 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 29 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 30 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 31 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 32 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 33 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 34 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 35 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 36 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 37 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 38 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 39 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 40 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 41 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 42 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 43 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 44 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 45 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 46 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 47 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 48 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 49 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 50 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 51 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 52 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 53 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 54 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 55 Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices Slide 56
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

5 Likes

Share

Download to read offline

Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices

Download to read offline

A typical mission-critical enterprise application is a large, complex monolith developed by a large team. Software delivery is usually slow, and the team struggles to keep up with the demands of the business. Consequently, many enterprise applications are good candidates to be migrated to the microservice architecture. But how do you know whether it makes sense to migrate to microservices and how to get there?

This session describes when you should consider migrating to microservices. You will learn strategies for migrating a monolith application to a microservice architecture. The presentation explains how to implement new functionality as services, and you will also learn how to incrementally break apart a monolith, one service at a time.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Microservices

  1. 1. @crichardson Decompose your monolith: strategies for migrating to microservices Chris Richardson Founder of Eventuate.io Founder of the original CloudFoundry.com Author of POJOs in Action and Microservices Patterns @crichardson chris@chrisrichardson.net https://adopt.microservices.io Copyright © 2019. Chris Richardson Consulting, Inc. All rights reserved
  2. 2. @crichardson Presentation goal How to incrementally refactor a monolithic application to microservices
  3. 3. @crichardson About Chris http://adopt.microservices.io
  4. 4. @crichardson About Chris https://microservices.io/book 40% discount with code ctworaclecodeone19
  5. 5. About Chris: microservices.io Microservices pattern language Articles Example code Microservices Assessment Platform
  6. 6. @crichardson Agenda Why microservices? Overview of refactoring a monolith Implementing new features as services Extracting modules into services
  7. 7. @crichardson + Marketplace is volatile, uncertain, complex and ambiguous + Businesses must innovate faster Deliver software rapidly, frequently and reliably Software
  8. 8. @crichardson Monolithic architecture: -ilities decline over time Time Maintainability Testability Deployability Modularity Evolvability Size/ Complexity -ilities required to be competitive Risk of disruption
  9. 9. The microservice architecture is an architectural style that structures an application as a set of services* Each microservice is: • highly maintainable and testable • loosely coupled • independently deployable • organized around business capabilities • owned by a small team *Start with one service per team until it becomes a problem
  10. 10. @crichardson Process: Lean + DevOps/Continuous Delivery & Deployment Organization: Small, autonomous, product teams Architecture: microservices Testability Deployability Modularity Modularity Evolvability Maintainability Rapidly, frequently and reliably delivery of changes to long-lived applications
  11. 11. @crichardson Agenda Why microservices? Overview of refactoring a monolith Implementing new features as services Extracting modules into services
  12. 12. @crichardson When to migrate to microservices: DON”T! The monolithic architecture is not an anti-pattern If software delivery is slow Optimize development process Improve deployment pipeline = more automation Improve team autonomy Modularize the monolith Eliminate hand-offs and create cross functional teams If technology stack is obsolete modernize to a new monolith …
  13. 13. @crichardson If and only if that is insufficient* then consider migrating to microservices *Large, complex applications developed by a (usually) large team that need to be delivered rapidly, frequently, and reliably
  14. 14. @crichardson How do you decompose your big, scary monolithic application? Monolith Service? Microservice architecture Service Service Service
  15. 15. @crichardson According to Randy Shoup: “As Martin Fowler likes to say, the only thing a Big Bang rewrite guarantees is a Big Bang!” http://www.randyshoup.com/evolutionary-architecture
  16. 16. @crichardson Best done incrementally!
  17. 17. @crichardson Strangler Application http://www.martinfowler.com/bliki/StranglerApplication.html
  18. 18. @crichardson
  19. 19. @crichardson Strangling the monolith Monolith Time Monolith Service Monolith Service Service Monolith Service Service Service Service …. Monolith Service Service Service Service Service Service Service Service Service Service Service Service Service Service Service Service …. Strangler application The strangler application grows larger over time The monolith shrinks over time
  20. 20. @crichardson Module Strangling the monolith: reroute requests to services Monolith Service API Gateway Request Monolith Module Request
  21. 21. @crichardson Agenda Why microservices? Overview of refactoring a monolith Implementing new features as services Extracting modules into services
  22. 22. @crichardson Let’s imagine you want to implement a significant new feature…. The Law of Holes: "if you find yourself in a hole, stop digging" (https://en.m.wikipedia.org/wiki/Law_of_holes) Stop making the monolith larger!
  23. 23. @crichardson Implement new functionality as a service Monolith Service Data integration glue API Gateway Request Monolithic database Service database Code in service/monolith that enables service to access monolith’s data Pristine new service
  24. 24. @crichardson Service Monolith data integration glue: API invocation Monolith Service Monolithic database Service database Invokes Command/ Query
  25. 25. @crichardson Service Monolith data integration glue: replicate data for reading Monolith Service Monolithic database Service database Application events DB replicationTables Replica CDC Events
  26. 26. @crichardson Service Monolith data access options Option Benefits Drawbacks API call to monolith Simple Works for writes and reads Doesn’t efficiently support complex queries Replicate data to service Supports complex queries Only for reads Cost/complexity of replication
  27. 27. @crichardson Data replication options Option Benefits Drawbacks Application events Easy to publish meaningful events Decoupled Requires code changes in monolith Eventual consistency Change data capture CRUD Events No code changes in monolith Decoupled Publishing non-CRUD event is tricky Eventual consistency Triggers that publish CRUD events Simple No code changes in monolith Decoupled Triggers = yuck Publishing non-CRUD event is tricky Eventual consistency Triggers that update target DB Simple No code changes in monolith ACID consistency Triggers = yuck Coupled to target DB Other DB replication mechanism, e.g. OGG Simple No code changes in monolith Coupled to target DB Eventual consistency
  28. 28. @crichardson FTGO Delayed delivery service As a workaround for a mediocre courier scheduling algorithm that is taking too long to fix…… Improve customer satisfaction by proactively notifying customers (and customer experience) that their order won’t be delivered on time
  29. 29. FTGO Delayed delivery service Periodically looks for orders that won’t be delivered on time Not picked up and restaurant closed Courier delayed … Notifies consumer and CRM system getDelayedOrders() Notification Service CRM system Send apology notification create case REST API ??? Delayed Order Service «stereotype» Order «entity» Restaurant «entity» OpeningHours «entity» Notification API gateway «repository» Customer ContactInfo Repository Monolith ??? REST API «Service» DelayedDelivery Service Integration glue Need to design
  30. 30. @crichardson Delayed delivery service: data integration strategies Usage How Orders “complex” query to determine whether delivery will be delayed ReplicateRestaurants Courier Consumers Contact info for notifications Query via API
  31. 31. @crichardson Agenda Why microservices? Overview of refactoring a monolith Implementing new features as services Extracting modules into services
  32. 32. @crichardson Module service ... Monolithic database Module’s tables Module Monolith Ext. API Including slices of tables
  33. 33. @crichardson Define a two way “remotable” interface Monolithic database Module’s tables Module Untangle dependencies Monolith Ext. API Modifying the monolith is tricky
  34. 34. @crichardson Incrementally modify monolith to invoke module via new API* Module Module All writes - module/service owns its data Ideally all reads - but can replicate changes back *Branch by abstraction pattern
  35. 35. @crichardson Replicating data to reduce scope of refactoring ORDER_ID STATE … DELIVERY_STATE COURIER_ID … … … … … ORDER_ID STATE … STATE COURIER_ID … … … … … ID … COURIER_ID … ORDERS table ORDERS table DELIVERY table Replicate back, e.g. trigger Read-only replica Extract delivery service Delivery management
  36. 36. @crichardson ... Module service Monolith Service Monolithic database Module Database API Gateway Request Existing code or rewrite Ext. API Bidirectional integration glue
  37. 37. @crichardson Repeat extracting services until: • Eliminated the monolith • Solved software delivery problems • Higher priority work Monolith Time Monolith Service Monolith Service Service Monolith Service Service Service Service …. Monolith Service Service Service Service Service Service Service Service Service Service Service Service Service Service Service Service …. Strangler application The strangler application grows larger over time The monolith shrinks over time Years
  38. 38. @crichardson What to extract? Have the ideal microservice architecture in mind Limited time-boxed architecture definition effort But be prepared to revise as you learn more Start with the modules that would give you the greatest ROI: Solves a significant problem Velocity frequently updated Scalability Conflicting resource requirements
  39. 39. @crichardson Example: Extracting delivery management from the FTGO monolith https://microservices.io/refactoring/
  40. 40. @crichardson AS-IS architecture: tangled code FTGO <<module>> Order and DeliveryManagement <<entity>> Order ORDER_ID STATE … DELIVERY_STATE COURIER_ID … … … … … Consumer Courier ORDER table noteAvailable() notePickedUp noteDelivered() … Tangled code and data
  41. 41. @crichardson AS-IS: tangled code Order deliveryTime Restaurant address … Courier address availability … Plan Action type Line Item Address delivery Delivery Management
  42. 42. @crichardson TO-BE design Order deliveryTime Restaurant Courier availability … Plan Action type Line Item Address delivery Courier address availability … Delivery deliveryTime FTGO monolith Delivery Service How to sync with Order? Owned by Monolith! Inter-service reference!!!
  43. 43. @crichardson FTGO monolith Delivery Service integration Delivery Service Restaurant Courier availability … Delivery deliveryTime schedule() reschedule() cancel() “Replicas” FTGO monolith Data integration glue Client API
  44. 44. @crichardson AS-IS TO-BE: Overview of extracting the Delivery Service 1. Split the code: convert delivery management code into a module within the monolith 2.Split the database: define separate DB schema for delivery management within the monolith 3.Define and deploy Delivery Service 4.Use the Delivery Service 5.Remove old code from monolith Commit and deploy changes after each step
  45. 45. @crichardson FTGO <<module>> Order Management <<module>> Delivery Management <<entity>> Order ORDER_ID STATE … DELIVERY_STATE COURIER_ID … … … … … Consumer Courier schedule() ORDER table <<entity>> Delivery Step #1 - Separate code cancel() reschedule()
  46. 46. @crichardson Delivery Mgmt Module Restaurant Courier availability location … Delivery deliveryTime Delivery Service schedule() reschedule() cancel() Delivery Controller updateCourierLocation() updateCourierAvailability() Order Service Order Mgmt Module Order Order table Courier Restaurant Mapped to original tables Order Controller updateCourierLocation() updateCourierAvailability() Split ext. API Integration API Shared table
  47. 47. @crichardson FTGO <<module>> Order Management <<module>> Delivery Management <<entity>> Order Consumer Courier schedule() <<entity>> Delivery ORDER_ID STATE … STATE COURIER_ID … … … … … ID … DELIVERY tableORDER table Extract table Step #2 - Separate data COURIER_ID … Replicate back! Creates Delivery
  48. 48. @crichardson Defining the DELIVERY table create table ftgo_delivery.delivery (…) select …subset of columns… from ftgo.orders where assigned_courier_id is not null; CREATE TRIGGER assigned_courier_id_updated AFTER UPDATE ON delivery FOR EACH ROW BEGIN UPDATE ftgo.orders SET assigned_courier_id = NEW.assigned_courier_id where id = NEW.id; END;; Replicate assigned_courier back to ORDERS table
  49. 49. @crichardson Delivery ServiceFTGO But it’s not just the DELIVERY table Courier Id Name Availability Courier Id Name Availability … CourierActions … CourierActions …. Restaurant Id Name Address Restaurant Id Name Address … Sync
  50. 50. @crichardson Replicating the RESTAURANT table create table ftgo_delivery.restaurants select …subset of columns… from ftgo.restaurants CREATE TRIGGER restaurant_created AFTER INSERT ON ftgo.restaurants FOR EACH ROW BEGIN INSERT INTO ftgo_delivery_service.restaurants(…) …
  51. 51. @crichardson FTGO <<module>> Order Management <<module>> Delivery Management <<entity>> Order Consumer Courier schedule() <<entity>> Delivery ORDER_ID STATE … STATE COURIER_ID… … … … … ID … DELIVERY table ORDER table Delivery Service <<module>> Delivery Management <<entity>> Delivery Step #3 - Define and deploy new service
  52. 52. @crichardson FTGO <<module>> Order Management <<module>> Delivery Management <<entity>> Order Consumer Courier schedule() <<entity>> Delivery ORDER_ID STATE … STATE COURIER_ID … … … … … ID … DELIVERY tableORDER table Delivery Service <<module>> Delivery Management <<entity>> Delivery Step #4 - Use service
  53. 53. @crichardson Integration using asynchronous messaging Delivery Service Delivery Service schedule() reschedule() cancel() Delivery Controller Order Service FTGO Order Controller Delivery Service Proxy schedule() … Command Handlers Schedule command message Message channel
  54. 54. @crichardson FTGO <<module>> Order Management <<entity>> Order Consumer Courier schedule() Delivery Service <<module>> Delivery Management <<entity>> Delivery STATE COURIER_ID … … ID … DELIVERY table ORDER_ID STATE … … … … ORDER table Step #5 - delete old code
  55. 55. @crichardson Summary The microservice architecture enables the rapid, frequent and reliable delivery of changes to long-lived applications Incrementally migrate to microservices when you have outgrown your monolith Implement new features as services Extract modules into service Prioritize extracting modules that give the greatest benefit
  56. 56. @crichardson @crichardson chris@chrisrichardson.net http://adopt.microservices.io Questions? 40% discount with code ctworaclecodeone19
  • powerirs

    Dec. 16, 2019
  • covrom

    Nov. 2, 2019
  • kenu

    Oct. 16, 2019
  • JayceeVincentLegaspi

    Oct. 3, 2019
  • natraghu

    Sep. 22, 2019

A typical mission-critical enterprise application is a large, complex monolith developed by a large team. Software delivery is usually slow, and the team struggles to keep up with the demands of the business. Consequently, many enterprise applications are good candidates to be migrated to the microservice architecture. But how do you know whether it makes sense to migrate to microservices and how to get there? This session describes when you should consider migrating to microservices. You will learn strategies for migrating a monolith application to a microservice architecture. The presentation explains how to implement new functionality as services, and you will also learn how to incrementally break apart a monolith, one service at a time.

Views

Total views

8,147

On Slideshare

0

From embeds

0

Number of embeds

6,634

Actions

Downloads

134

Shares

0

Comments

0

Likes

5

×