The Doppler Quarterly Spring 2019 | Page 42

Applications that ISVs move to the cloud often require modernization to fully leverage what the cloud has to offer and achieve their business goals. Modern application archi- tectures employ microservices, serverless computing, con- tainerization, multitenancy, cloud-native services and other cloud features. Applications require refactoring, often with significant architectural changes, to make use of these capabilities. Modernizing an application to take advantage of the appro- priate cloud-native architectures and services is complex, and requires expertise in cloud technologies, processes and tools. Each application requires a detailed assessment and a determination of the appropriate refactoring to meet business needs. Decisions have to be made on critical refac- toring vs. enhancements that can be included later. Unless an ISV has already performed multiple cloud application modernizations, there may be a steep learning curve and possible missteps before achieving a successful result. Often, ISVs do not know where to begin. The blueprint for a successful application modernization effort includes the following key steps: 40 | THE DOPPLER | SPRING 2019 Assess application cloud readiness, and design cloud architecture to support modernization You can use both manual and automated code analysis to assess an application’s cloud readiness. Key determining factors include, for example, hard-coded connections, remote method invocations and thread management. In addition, you should review the application architecture to assess the applicability of decomposing business logic into cloud frameworks, such as microservices and serverless, and the suitability of incorporating cloud-native services to meet business, performance and scalability requirements. You will also need a thorough evaluation of nonfunctional requirements to drive the design of an appropriate cloud infrastructure to support the modernized application. When designing the infrastructure, consider best practices, such as common shared services for logging, monitoring and security. The infrastructure design should also include the frameworks and tools needed by the development team to accelerate innovation and facilitate agile processes.