SlideShare une entreprise Scribd logo
1  sur  18
November 27, 2017 1DXC Proprietary and ConfidentialDXC Proprietary and Confidential
November 27, 2017
The Decomposition
Dilemma
Microservices Days Austin
@jpmorgenthal
#microservicesdays
November 27, 2017 2DXC Proprietary and Confidential
Why µServices?
Application Server
Bundle 1
Bundle 2
Bundle 3
Database
User Interface
Back-end
DBA
Legacy Apps
November 27, 2017 3DXC Proprietary and Confidential
Conway’s Law
Organizations which design systems ... are
constrained to produce designs which are
copies of the communication structures of
these organizations
Solution
Application
November 27, 2017 4DXC Proprietary and Confidential
To decompose or not to
decompose, that is the
question!
November 27, 2017 5DXC Proprietary and Confidential
Decomposition Strategy
1. Start with bounded contexts
2. Trace dependencies to bottom
3. Address messaging, injection and external configuration impact
4. Extract the data
5. Deploy and test often
November 27, 2017 6DXC Proprietary and Confidential
Think Contextual Boundaries
Entertainment
Enterprise
Customer
Network
Customer
Customer
Customer Management
November 27, 2017 7DXC Proprietary and Confidential
Think Contextual Boundaries
Subscriber
Provider
Payment
Payment Processor
Payment
Payment
Billing
Billing
November 27, 2017 8DXC Proprietary and Confidential
Think Contextual Boundaries
Subscriber
Provider
Payment
Payment Processor
Payment
Payment
Billing
Billing
Prepare
November 27, 2017 9DXC Proprietary and Confidential
Think Contextual Boundaries
Subscriber
Provider
Payment
Payment Processor
Payment
Payment
Billing
Billing
PrepareDeliver
November 27, 2017 10DXC Proprietary and Confidential
Think Contextual Boundaries
Subscriber
Provider
Payment
Payment Processor
Payment
Payment
Billing
Billing
Process
Process
Receive
November 27, 2017 11DXC Proprietary and Confidential
Think Contextual Boundaries
Subscriber
Provider
Payment
Payment Processor
Payment
Payment
Billing
Billing
Process
Process
Receive
November 27, 2017 12DXC Proprietary and Confidential
Think Contextual Boundaries
Subscriber
Provider
Payment
Payment Processor
Payment
Payment
Billing
Billing
Process
Process
Receive
November 27, 2017 13DXC Proprietary and Confidential
Shift from objects to resources
TurnLightOff();
{
“state”: “off”
}
https://…/lightswitch/1921
November 27, 2017 14DXC Proprietary and Confidential
Trace dependencies
• Monoliths form entanglements around persistence of data
• Monoliths expect that various functions data all exist in same repository
• Monoliths have code dependencies
• Monoliths share data structures to ensure consistency of data representation
• Monoliths maintain direct connections with services
• Database, messaging, logging, etc.
• Carving out a business context often requires these entanglements to be identified and
decomposition may require multiple interim states before the microservice can become
completely atomic
November 27, 2017 15DXC Proprietary and Confidential
Untangling the data
Application Server
Bundle 1
Bundle 2
Bundle 3
Database
Legacy Apps
µService
µService
November 27, 2017 16DXC Proprietary and Confidential
Untangling MOM, injection and Aspect-Oriented
Programming
• Aspects change behavior of the application dynamically for cross-cutting concerns in code whereas
microservices introduce cross-cutting concerns through orchestration
• Common shared objects often lead to the creation of dependencies that led to the monolith in
the first place
• Interception of events can help to strangle the original logic and facilitate growth of the new
microservice
• Monoliths often use injection as a means of configuration often furthering the entanglements
• There are no tools to help reverse engineer the necessary injection parameters
• Messaging middleware, such XPDL and Camel embed business logic in XML process and mapping
files
• There are no tools to help reverse engineer the logic trapped in these files and models
• You can’t tell if there’s relative aspects of your bounded contexts captured within the XPDL and
Camel Models
November 27, 2017 17DXC Proprietary and Confidential
Summary
• Decomposition may not always be appropriate for the business
• Drivers for microservices are speed, cost, quality and user experience
• Bounded contexts may not easily be extracted from the monolith without significant
rework
• Develop a plan to move from objects/functions to assets
• Identify and untangle dependencies
• Strangler pattern is just abstraction in action
November 27, 2017 18DXC Proprietary and ConfidentialDXC Proprietary and Confidential
November 27, 2017
Thank you!

Contenu connexe

Tendances

DN18 | Ocean Protocol – Empowering a Decentralized Marketplace for The New AI...
DN18 | Ocean Protocol – Empowering a Decentralized Marketplace for The New AI...DN18 | Ocean Protocol – Empowering a Decentralized Marketplace for The New AI...
DN18 | Ocean Protocol – Empowering a Decentralized Marketplace for The New AI...
Dataconomy Media
 

Tendances (19)

Machine learning for encrypted traffic using restnet
Machine learning for encrypted traffic using restnetMachine learning for encrypted traffic using restnet
Machine learning for encrypted traffic using restnet
 
Blockchain & the future of data management
Blockchain & the future of data managementBlockchain & the future of data management
Blockchain & the future of data management
 
An efficient certificateless encryption for data sharing on public cloud
An efficient certificateless encryption for data sharing on public cloudAn efficient certificateless encryption for data sharing on public cloud
An efficient certificateless encryption for data sharing on public cloud
 
An introduction for blockcahin
An introduction for blockcahinAn introduction for blockcahin
An introduction for blockcahin
 
key-aggregate cryptosystem for scalable data sharing in cloud storage
key-aggregate cryptosystem for scalable data sharing in cloud storagekey-aggregate cryptosystem for scalable data sharing in cloud storage
key-aggregate cryptosystem for scalable data sharing in cloud storage
 
Flowchain blockchain classroom at Taiwan Tech University
Flowchain blockchain classroom at Taiwan Tech UniversityFlowchain blockchain classroom at Taiwan Tech University
Flowchain blockchain classroom at Taiwan Tech University
 
IT 101 presentation
IT 101 presentationIT 101 presentation
IT 101 presentation
 
Blockchain and Angular
Blockchain and AngularBlockchain and Angular
Blockchain and Angular
 
Call for Papers - 9th International Conference of Security, Privacy and Trust...
Call for Papers - 9th International Conference of Security, Privacy and Trust...Call for Papers - 9th International Conference of Security, Privacy and Trust...
Call for Papers - 9th International Conference of Security, Privacy and Trust...
 
Is Azure Blockchain Cloud the Future of Cloud Computing | Sysfore
Is Azure Blockchain Cloud the Future of Cloud Computing | SysforeIs Azure Blockchain Cloud the Future of Cloud Computing | Sysfore
Is Azure Blockchain Cloud the Future of Cloud Computing | Sysfore
 
Enhance Your Mobile Application with The Use of Blockchain Technology
Enhance Your Mobile Application with The Use of Blockchain TechnologyEnhance Your Mobile Application with The Use of Blockchain Technology
Enhance Your Mobile Application with The Use of Blockchain Technology
 
KEY AGGREGATE CRYPTOSYSTEM FOR SCALABLE DATA SHARING IN CLOUD
KEY AGGREGATE CRYPTOSYSTEM FOR SCALABLE DATA SHARING IN CLOUDKEY AGGREGATE CRYPTOSYSTEM FOR SCALABLE DATA SHARING IN CLOUD
KEY AGGREGATE CRYPTOSYSTEM FOR SCALABLE DATA SHARING IN CLOUD
 
Blockchain Essentials for Business Leaders - Value Propositions and Advantage...
Blockchain Essentials for Business Leaders - Value Propositions and Advantage...Blockchain Essentials for Business Leaders - Value Propositions and Advantage...
Blockchain Essentials for Business Leaders - Value Propositions and Advantage...
 
Towards a Post-Modern Hash Chain Future
Towards a Post-Modern Hash Chain FutureTowards a Post-Modern Hash Chain Future
Towards a Post-Modern Hash Chain Future
 
An efficient certificate less encryption for
An efficient certificate less encryption forAn efficient certificate less encryption for
An efficient certificate less encryption for
 
Blockchain - New Buzz Word for Banks, Technology and Other Industries
Blockchain - New Buzz Word for Banks, Technology and Other IndustriesBlockchain - New Buzz Word for Banks, Technology and Other Industries
Blockchain - New Buzz Word for Banks, Technology and Other Industries
 
Decentralised AI through Distributed Ledger Technologies
Decentralised AI through Distributed Ledger Technologies Decentralised AI through Distributed Ledger Technologies
Decentralised AI through Distributed Ledger Technologies
 
DN18 | Ocean Protocol – Empowering a Decentralized Marketplace for The New AI...
DN18 | Ocean Protocol – Empowering a Decentralized Marketplace for The New AI...DN18 | Ocean Protocol – Empowering a Decentralized Marketplace for The New AI...
DN18 | Ocean Protocol – Empowering a Decentralized Marketplace for The New AI...
 
Learn from the Masters: Deep Dive into Domains (Jaspersoft's Metadata Layer)
Learn from the Masters: Deep Dive into Domains (Jaspersoft's Metadata Layer)Learn from the Masters: Deep Dive into Domains (Jaspersoft's Metadata Layer)
Learn from the Masters: Deep Dive into Domains (Jaspersoft's Metadata Layer)
 

Similaire à The Decomposition Dilemma

3170722_BDA_GTU_Study_Material_Presentations_Unit-3_29092021094744AM.pdf
3170722_BDA_GTU_Study_Material_Presentations_Unit-3_29092021094744AM.pdf3170722_BDA_GTU_Study_Material_Presentations_Unit-3_29092021094744AM.pdf
3170722_BDA_GTU_Study_Material_Presentations_Unit-3_29092021094744AM.pdf
KrishnaShah908060
 
Cloud Customer Architecture for Big Data and Analytics V2.0
Cloud Customer Architecture for Big Data and Analytics V2.0Cloud Customer Architecture for Big Data and Analytics V2.0
Cloud Customer Architecture for Big Data and Analytics V2.0
Cloud Standards Customer Council
 

Similaire à The Decomposition Dilemma (20)

Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
 
Paolo Kreth - Persistence layers for microservices – the converged database a...
Paolo Kreth - Persistence layers for microservices – the converged database a...Paolo Kreth - Persistence layers for microservices – the converged database a...
Paolo Kreth - Persistence layers for microservices – the converged database a...
 
AUTOMATIC TRANSFER OF DATA USING SERVICE-ORIENTED ARCHITECTURE TO NoSQL DATAB...
AUTOMATIC TRANSFER OF DATA USING SERVICE-ORIENTED ARCHITECTURE TO NoSQL DATAB...AUTOMATIC TRANSFER OF DATA USING SERVICE-ORIENTED ARCHITECTURE TO NoSQL DATAB...
AUTOMATIC TRANSFER OF DATA USING SERVICE-ORIENTED ARCHITECTURE TO NoSQL DATAB...
 
[DataCon.TW 2017] Data Lake: centralize in on-prem vs. decentralize on cloud
[DataCon.TW 2017] Data Lake: centralize in on-prem vs. decentralize on cloud[DataCon.TW 2017] Data Lake: centralize in on-prem vs. decentralize on cloud
[DataCon.TW 2017] Data Lake: centralize in on-prem vs. decentralize on cloud
 
GOTO Amsterdam 2017 - Enterprise Fast Lane
GOTO Amsterdam 2017 - Enterprise Fast LaneGOTO Amsterdam 2017 - Enterprise Fast Lane
GOTO Amsterdam 2017 - Enterprise Fast Lane
 
Going MicroServices with Net
Going MicroServices with NetGoing MicroServices with Net
Going MicroServices with Net
 
2017 think - session 4085 - increase your agile velocity - integrate your d...
2017   think - session 4085 - increase your agile velocity - integrate your d...2017   think - session 4085 - increase your agile velocity - integrate your d...
2017 think - session 4085 - increase your agile velocity - integrate your d...
 
Converged and Containerized Distributed Deep Learning With TensorFlow and Kub...
Converged and Containerized Distributed Deep Learning With TensorFlow and Kub...Converged and Containerized Distributed Deep Learning With TensorFlow and Kub...
Converged and Containerized Distributed Deep Learning With TensorFlow and Kub...
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
 
Intro to Microservices - SimtTLiX Tech Talk
Intro to Microservices - SimtTLiX Tech TalkIntro to Microservices - SimtTLiX Tech Talk
Intro to Microservices - SimtTLiX Tech Talk
 
3170722_BDA_GTU_Study_Material_Presentations_Unit-3_29092021094744AM.pdf
3170722_BDA_GTU_Study_Material_Presentations_Unit-3_29092021094744AM.pdf3170722_BDA_GTU_Study_Material_Presentations_Unit-3_29092021094744AM.pdf
3170722_BDA_GTU_Study_Material_Presentations_Unit-3_29092021094744AM.pdf
 
From Microservices to Service Mesh - devcafe event - July 2018
From Microservices to Service Mesh - devcafe event - July 2018From Microservices to Service Mesh - devcafe event - July 2018
From Microservices to Service Mesh - devcafe event - July 2018
 
CWIN17 Utrecht / cg u services - frank van der wal
CWIN17 Utrecht / cg u services - frank van der walCWIN17 Utrecht / cg u services - frank van der wal
CWIN17 Utrecht / cg u services - frank van der wal
 
Cloud Customer Architecture for Big Data and Analytics V2.0
Cloud Customer Architecture for Big Data and Analytics V2.0Cloud Customer Architecture for Big Data and Analytics V2.0
Cloud Customer Architecture for Big Data and Analytics V2.0
 
Vancouver Microservices Meetup - Kickoff Session
Vancouver Microservices Meetup - Kickoff SessionVancouver Microservices Meetup - Kickoff Session
Vancouver Microservices Meetup - Kickoff Session
 
Domain Driven Design - Building Blocks
Domain Driven Design - Building BlocksDomain Driven Design - Building Blocks
Domain Driven Design - Building Blocks
 
The Value of Metadata
The Value of MetadataThe Value of Metadata
The Value of Metadata
 
Microservices Patterns with GoldenGate
Microservices Patterns with GoldenGateMicroservices Patterns with GoldenGate
Microservices Patterns with GoldenGate
 
MuCon 2015 - Microservices in Integration Architecture
MuCon 2015 - Microservices in Integration ArchitectureMuCon 2015 - Microservices in Integration Architecture
MuCon 2015 - Microservices in Integration Architecture
 

Plus de JoAnna Cheshire

Plus de JoAnna Cheshire (20)

The Future of Work
The Future of WorkThe Future of Work
The Future of Work
 
Catching the Next Train
Catching the Next TrainCatching the Next Train
Catching the Next Train
 
The SharePoint Migration Playbook
The SharePoint Migration PlaybookThe SharePoint Migration Playbook
The SharePoint Migration Playbook
 
Introduction to SharePoint Framework
Introduction to SharePoint FrameworkIntroduction to SharePoint Framework
Introduction to SharePoint Framework
 
PowerShell + SharePoint Online - An Admin's Guide
PowerShell + SharePoint Online - An Admin's GuidePowerShell + SharePoint Online - An Admin's Guide
PowerShell + SharePoint Online - An Admin's Guide
 
Artificial Intelligence & Machine Learning - A CIOs Perspective
Artificial Intelligence & Machine Learning - A CIOs PerspectiveArtificial Intelligence & Machine Learning - A CIOs Perspective
Artificial Intelligence & Machine Learning - A CIOs Perspective
 
Modernizing Data Management
Modernizing Data Management Modernizing Data Management
Modernizing Data Management
 
Microsoft and Enterprise Search
Microsoft and Enterprise Search Microsoft and Enterprise Search
Microsoft and Enterprise Search
 
Introduction to Microsoft Teams and Office 365 groups
Introduction to Microsoft Teams and Office 365 groupsIntroduction to Microsoft Teams and Office 365 groups
Introduction to Microsoft Teams and Office 365 groups
 
Cybersecurity crisis management a prep guide
Cybersecurity crisis management   a prep guideCybersecurity crisis management   a prep guide
Cybersecurity crisis management a prep guide
 
Accelerate your business with flow
Accelerate your business with flowAccelerate your business with flow
Accelerate your business with flow
 
Building applications for your business using power apps and flow
Building applications for your business using power apps and flowBuilding applications for your business using power apps and flow
Building applications for your business using power apps and flow
 
Not "If" but "When"
Not "If" but "When"Not "If" but "When"
Not "If" but "When"
 
Defending against Ransomware and what you can do about it
Defending against Ransomware and what you can do about itDefending against Ransomware and what you can do about it
Defending against Ransomware and what you can do about it
 
The New Convergence of Data; the Next Strategic Business Advantage
The New Convergence of Data; the Next Strategic Business AdvantageThe New Convergence of Data; the Next Strategic Business Advantage
The New Convergence of Data; the Next Strategic Business Advantage
 
Healthcare - An Identity Thief's SuperStore
Healthcare - An Identity Thief's SuperStoreHealthcare - An Identity Thief's SuperStore
Healthcare - An Identity Thief's SuperStore
 
Microservices Architectural Maturity Matrix, Token Based Authority, API Gatew...
Microservices Architectural Maturity Matrix, Token Based Authority, API Gatew...Microservices Architectural Maturity Matrix, Token Based Authority, API Gatew...
Microservices Architectural Maturity Matrix, Token Based Authority, API Gatew...
 
Define Yourself! Crafting a Wonder Woman's Brand
Define Yourself! Crafting a Wonder Woman's BrandDefine Yourself! Crafting a Wonder Woman's Brand
Define Yourself! Crafting a Wonder Woman's Brand
 
Today's Cyber Challenges: Methodology to Secure Your Business
Today's Cyber Challenges: Methodology to Secure Your BusinessToday's Cyber Challenges: Methodology to Secure Your Business
Today's Cyber Challenges: Methodology to Secure Your Business
 
A UX first approach to Office 365 migrations
A UX first approach to Office 365 migrationsA UX first approach to Office 365 migrations
A UX first approach to Office 365 migrations
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

The Decomposition Dilemma

  • 1. November 27, 2017 1DXC Proprietary and ConfidentialDXC Proprietary and Confidential November 27, 2017 The Decomposition Dilemma Microservices Days Austin @jpmorgenthal #microservicesdays
  • 2. November 27, 2017 2DXC Proprietary and Confidential Why µServices? Application Server Bundle 1 Bundle 2 Bundle 3 Database User Interface Back-end DBA Legacy Apps
  • 3. November 27, 2017 3DXC Proprietary and Confidential Conway’s Law Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations Solution Application
  • 4. November 27, 2017 4DXC Proprietary and Confidential To decompose or not to decompose, that is the question!
  • 5. November 27, 2017 5DXC Proprietary and Confidential Decomposition Strategy 1. Start with bounded contexts 2. Trace dependencies to bottom 3. Address messaging, injection and external configuration impact 4. Extract the data 5. Deploy and test often
  • 6. November 27, 2017 6DXC Proprietary and Confidential Think Contextual Boundaries Entertainment Enterprise Customer Network Customer Customer Customer Management
  • 7. November 27, 2017 7DXC Proprietary and Confidential Think Contextual Boundaries Subscriber Provider Payment Payment Processor Payment Payment Billing Billing
  • 8. November 27, 2017 8DXC Proprietary and Confidential Think Contextual Boundaries Subscriber Provider Payment Payment Processor Payment Payment Billing Billing Prepare
  • 9. November 27, 2017 9DXC Proprietary and Confidential Think Contextual Boundaries Subscriber Provider Payment Payment Processor Payment Payment Billing Billing PrepareDeliver
  • 10. November 27, 2017 10DXC Proprietary and Confidential Think Contextual Boundaries Subscriber Provider Payment Payment Processor Payment Payment Billing Billing Process Process Receive
  • 11. November 27, 2017 11DXC Proprietary and Confidential Think Contextual Boundaries Subscriber Provider Payment Payment Processor Payment Payment Billing Billing Process Process Receive
  • 12. November 27, 2017 12DXC Proprietary and Confidential Think Contextual Boundaries Subscriber Provider Payment Payment Processor Payment Payment Billing Billing Process Process Receive
  • 13. November 27, 2017 13DXC Proprietary and Confidential Shift from objects to resources TurnLightOff(); { “state”: “off” } https://…/lightswitch/1921
  • 14. November 27, 2017 14DXC Proprietary and Confidential Trace dependencies • Monoliths form entanglements around persistence of data • Monoliths expect that various functions data all exist in same repository • Monoliths have code dependencies • Monoliths share data structures to ensure consistency of data representation • Monoliths maintain direct connections with services • Database, messaging, logging, etc. • Carving out a business context often requires these entanglements to be identified and decomposition may require multiple interim states before the microservice can become completely atomic
  • 15. November 27, 2017 15DXC Proprietary and Confidential Untangling the data Application Server Bundle 1 Bundle 2 Bundle 3 Database Legacy Apps µService µService
  • 16. November 27, 2017 16DXC Proprietary and Confidential Untangling MOM, injection and Aspect-Oriented Programming • Aspects change behavior of the application dynamically for cross-cutting concerns in code whereas microservices introduce cross-cutting concerns through orchestration • Common shared objects often lead to the creation of dependencies that led to the monolith in the first place • Interception of events can help to strangle the original logic and facilitate growth of the new microservice • Monoliths often use injection as a means of configuration often furthering the entanglements • There are no tools to help reverse engineer the necessary injection parameters • Messaging middleware, such XPDL and Camel embed business logic in XML process and mapping files • There are no tools to help reverse engineer the logic trapped in these files and models • You can’t tell if there’s relative aspects of your bounded contexts captured within the XPDL and Camel Models
  • 17. November 27, 2017 17DXC Proprietary and Confidential Summary • Decomposition may not always be appropriate for the business • Drivers for microservices are speed, cost, quality and user experience • Bounded contexts may not easily be extracted from the monolith without significant rework • Develop a plan to move from objects/functions to assets • Identify and untangle dependencies • Strangler pattern is just abstraction in action
  • 18. November 27, 2017 18DXC Proprietary and ConfidentialDXC Proprietary and Confidential November 27, 2017 Thank you!

Notes de l'éditeur

  1. This solution has a number of benefits: Simple to develop - the goal of current development tools and IDEs is to support the development of monolithic applications Simple to deploy - you simply need to deploy the WAR file (or directory hierarchy) on the appropriate runtime Simple to scale - you can scale the application by running multiple copies of the application behind a load balancer However, once the application becomes large and the team grows in size, this approach has a number of drawbacks that become increasingly significant: Continuous deployment is difficult - a large monolithic application is also an obstacle to frequent deployments. In order to update one component you have to redeploy the entire application. This will interrupt background tasks (e.g. Quartz jobs in a Java application), regardless of whether they are impacted by the change, and possibly cause problems. There is also the chance that components that haven’t been updated will fail to start correctly. As a result, the risk associated with redeployment increases, which discourages frequent updates. This is especially a problem for user interface developers, since they usually need to iterative rapidly and redeploy frequently. Scaling the application can be difficult - a monolithic architecture is that it can only scale in one dimension. On the one hand, it can scale with an increasing transaction volume by running more copies of the application. Some clouds can even adjust the number of instances dynamically based on load. But on the other hand, this architecture can’t scale with an increasing data volume. Each copy of application instance will access all of the data, which makes caching less effective and increases memory consumption and I/O traffic. Also, different application components have different resource requirements - one might be CPU intensive while another might memory intensive. With a monolithic architecture we cannot scale each component independently Obstacle to scaling development - A monolithic application is also an obstacle to scaling development. Once the application gets to a certain size its useful to divide up the engineering organization into teams that focus on specific functional areas. For example, we might want to have the UI team, accounting team, inventory team, etc. The trouble with a monolithic application is that it prevents the teams from working independently. The teams must coordinate their development efforts and redeployments. It is much more difficult for a team to make a change and update production. Requires a long-term commitment to a technology stack - a monolithic architecture forces you to be married to the technology stack (and in some cases, to a particular version of that technology) you chose at the start of development . With a monolithic application, can be difficult to incrementally adopt a newer technology. For example, let’s imagine that you chose the JVM. You have some language choices since as well as Java you can use other JVM languages that inter-operate nicely with Java such as Groovy and Scala. But components written in non-JVM languages do not have a place within your monolithic architecture. Also, if your application uses a platform framework that subsequently becomes obsolete then it can be challenging to incrementally migrate the application to a newer and better framework. It’s possible that in order to adopt a newer platform framework you have to rewrite the entire application, which is a risky undertaking.