mainframes to microservices• understand the mainframe logic for solving the problem, understand...
Post on 21-Mar-2020
1 Views
Preview:
TRANSCRIPT
Mainframes to MicroservicesLessons Learned in Modernizing High-Demand ApplicationsLori OlsonDeloitte Consulting LLP
2Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Agenda
Introduction
Getting to Microservices
1
2Lessons Learned During the Requirements ActivitiesA
Where Should We Start with the Design?B
Determining the Priority Quality Attributes & Maintaining the ContractsC
Strangling the Mainframe & Applying the PatternsD
Organizing Around the Architecture & Achieving Functional ParityE
3Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
What if you have to replace an application processing hundreds of millions of documents per day for a government agency or healthcare provider?
Is it possible to choose microservices and still achieve the same stability as software that has been continually optimized over a 25-year lifespan?
What factors should you consider when defining the architecture to meet this challenge?
4Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
What are Microservices?
Microservices are an architectural style that structures an application as a collection of loosely coupled services, to implement business capabilities
Continuous deployment of large, complex capabilities
Allows for scalability and improved maintenance
Enables an organization to evolve its technology stack
Demonstrated Benefits of Microservices Architecture
5Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Lessons Learned During the Requirements Activities
How do you know what you should build?
6Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Defining the Business ProblemUnderstand the current state architecture and business use of the current system to develop microservices that are able to successfully fill the business need
Lessons Learned During the Requirements Activities
How do you know what you should build?
7Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Defining CapabilitiesUnderstand the current system processing capabilities in order to determine the new system requirements
Defining the Business ProblemUnderstand the current state architecture and business use of the current system to develop microservices that are able to successfully fill the business need
Lessons Learned During the Requirements Activities
How do you know what you should build?
8Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Defining CapabilitiesUnderstand the current system processing capabilities in order to determine the new system requirements
Using Documentation and Process DefinitionsReview any available documentation, source code, and system process flows to gain an understanding of the current system. Reverse engineer the source code to diagram a process flow tied to the business need
Defining the Business ProblemUnderstand the current state architecture and business use of the current system to develop microservices that are able to successfully fill the business need
Lessons Learned During the Requirements Activities
How do you know what you should build?
9Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Defining CapabilitiesUnderstand the current system processing capabilities in order to determine the new system requirements
Using Documentation and Process DefinitionsReview any available documentation, source code, and system process flows to gain an understanding of the current system. Reverse engineer the source code to diagram a process flow tied to the business need
Working with the Subject Matter ExpertEngage with the current subject matter expert if available. Develop a strawman process flow based on what you know and confirm with the SME to identify gaps in your understanding
Defining the Business ProblemUnderstand the current state architecture and business use of the current system to develop microservices that are able to successfully fill the business need
Lessons Learned During the Requirements Activities
How do you know what you should build?
10Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Defining CapabilitiesUnderstand the current system processing capabilities in order to determine the new system requirements
Using Documentation and Process DefinitionsReview any available documentation, source code, and system process flows to gain an understanding of the current system. Reverse engineer the source code to diagram a process flow tied to the business need
Working with the Subject Matter ExpertEngage with the current subject matter expert if available. Develop a strawman process flow based on what you know and confirm with the SME to identify gaps in your understanding
A Picture is Worth More Than 1000 WordsThe outcome should be a business process model that reflects the current state processing, the business rules for each step in the process, and the current system architecture. This helps you to identify the most appropriate candidates for modernization
How do you know what you should build?
Defining the Business ProblemUnderstand the current state architecture and business use of the current system to develop microservices that are able to successfully fill the business need
Lessons Learned During the Requirements Activities
11Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Where We Started with the Design…• Determine the seams in the system: Seams in the system are where processes or activities are integrated or have a change of control or responsibility
• Use those seams to translate multi-purpose programs into single purpose components, finding places where changes have the least potential risk to the processing pipeline
• Prioritize changes to the monolithic processes decomposed into individual components. Only those components are changed. It is important to maintain the inbound and outbound contracts so upstream and downstream systems are not impacted
• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed
• To process large volumes, the data was sorted in memory and processed in chunks
• Reference data was stored in memory to reduce time spent with read/write cycles
• Optimized the microservices to utilize memory for processing and avoid disk writes when possible
How we learned from the Mainframe
Annually: ~3.5 Billion records Daily Peak: ~625 Million records
12Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Determining the Priority Quality Attributes
P e r f o r m a n c e S c a l a b i l i t y M a i n t a i n a b i l i t yThe system needed optimal performance in order to process 3.5 billion records annually
It had to be scalable to accommodate increased annual intake
It needed to be developed in a modern language to support ease of maintenance and a larger pool of available resources
1 A microservice component for each single purpose activity, allowing for concurrent throughput
32 Separating the activities also allows for concurrent, asynchronous processing and independent changes
Designing for horizontal scalability for independently sizing services based on process demand
What quality attributes were required?
How would we architect the solution?
13Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Maintaining the Contracts
Discover the legacy APIs
• Break down the business components
• Find the seams in the technology and the handoffs between the different subsystems
Creating new, maintainable APIs
• Version APIs so that any breaking changes will be versioned
• Nest response objects to allow for updates to core response objects without needing special rules
The importance of documentation
• Keep the documentation as part of the code
• Generate documentation artifacts for distribution as part of the releases
Apply these practices when creating APIs for legacy contracts and to new APIs
14Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Strangling the MainframePatterns we used and why
S t r a n g l e rModernize the system by strangling out component by component of the legacy system
R o u t e rOrchestrate the monolith processes across multiple microservices
A d a p t e rMaintain the contracts in the legacy environment with an adapter to the new services
Strangler
Legacy Mainframe
Application
Application
Micr
oser
vice
Micr
oser
vice
Adap
ter
Adap
ter
Downstream System
Downstream System
Downstream System
Application
ApplicationAPI
Gateway
Micr
oser
vice
Micr
oser
vice
Rout
er
15Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Applying the patternsPatterns we used and why
D e c o m p o s i t i o nSeparate services by business capabilities and subdomains
S e r v i c e I n d e p e n d e n c e Deploy each service independently
M e s s a g i n gUse asynchronous messaging for inter-service communication
Monolithic Application
Delivery Management
Inventory Management
Order Management
VM
Order Management
VM
Inventory Management
VM
Delivery Management
16Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Organizing Around the Architecture
Not very organization is ready to organize this way, so it may create redundancy in a project and external teams
“ A n y p i e c e o f s o f t w a r e r e f l e c t s t h e o r g a n i z a t i o n a l s t r u c t u r e t h a t p r o d u c e d i t ”– M e l v i n C o n w a y
Microservices are not only about delivery, they are also about ownership
Production Support and Monitoring
Performance & Load Testing
Builds, Deployments and Transmittals Testing and Test ToolingData Access
Not every organization is ready to change
Foster these ideals to reduce the risk due to missed requirements or misunderstanding when there is handoff to another team
17Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Achieving Functional Parity with the Quality Attributes
• Providing the same outcomes from the same inputs
• Necessary to maintain the contracts with legacy components
Testing StrategySide-by-side functional testing with the legacy system using the same inputs for both systems and then comparing the outcomes
Performance testing with the same request volume for normal and production peaks to validate and tune the modernized system
Highly risk adverse organizations can do a full side-by-side production comparisons to verify parity between legacy and modernized systems before retiring the legacy system
What is functional parity?
18Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Thank You
19Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.
Contact Information
Lori Olson – Specialist LeaderSystems Integration – Application ArchitectureDeloitte Consulting LLPloolson@deloitte.com
LinkedIn: https://www.linkedin.com/in/lorio/
About DeloitteDeloitte refers to one or more of Deloitte Touche Tohmatsu Limited, a UK private company limited by guarantee (“DTTL”), its network of member firms, and their related entities. DTTL and each of its member firms are legally separate and independent entities. DTTL (also referred to as “Deloitte Global”) does not provide services to clients. In the United States, Deloitte refers to one or more of the US member firms of DTTL, their related entities that operate using the “Deloitte” name in the United States and their respective affiliates. Certain services may not be available to attest clients under the rules and regulations of public accounting. Please see www.deloitte.com/about to learn more about our global network of member firms.
Copyright © 2017 Deloitte Development LLC. All rights reserved.
top related