mainframes to microservices• understand the mainframe logic for solving the problem, understand...

20
Mainframes to Microservices Lessons Learned in Modernizing High-Demand Applications Lori Olson Deloitte Consulting LLP

Upload: others

Post on 21-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

Mainframes to MicroservicesLessons Learned in Modernizing High-Demand ApplicationsLori OlsonDeloitte Consulting LLP

Page 2: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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

Page 3: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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?

Page 4: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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

Page 5: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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?

Page 6: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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?

Page 7: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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?

Page 8: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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?

Page 9: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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?

Page 10: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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

Page 11: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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

Page 12: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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?

Page 13: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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

Page 14: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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

Page 15: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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

Page 16: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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

Page 17: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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?

Page 18: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

18Mainframes to Microservices: Lessons Learned in Modernizing High-Demand ApplicationsCopyright © 2017 Deloitte Development LLC. All rights reserved.

Thank You

Page 19: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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 [email protected]

LinkedIn: https://www.linkedin.com/in/lorio/

Page 20: Mainframes to Microservices• Understand the mainframe logic for solving the problem, understand the challenges the initial implementation faced and how those were addressed • To

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.