This is a continuation of a series of articles on
Application Modernization. In this section, we take a slightly different
perspective on the Build-Deploy-Run aspect of the new software.
When we modernize an existing application, we can ease our
move to the cloud with the full promise of cloud technology. With a cloud
native microservice approach, scalability, and flexibility inherent to the
cloud can be taken advantage of.
Modernizing the cloud native applications enables applications to run
concurrently and seamlessly connect with existing investments. Barriers that
prohibit productivity and integration are removed.
One of the tenets of modernizing involves
"Build-once-and-deploy-on-any-cloud". This process begins with
assessing the existing application, building the applications quickly,
automating the deployments for productivity and running and consistently
managing the modernized application.
Identifying applications that can be readily moved into the
cloud platform and those that require refactoring is the first step because the
treatments of lift-and-shift and refactoring are quite different. Leveraging
containers as the foundation for applications and services is another aspect.
Automating deployments for productivity with a DevOps
pipeline makes it quick and reliable. A
common management approach to consolidate operations for all applications
ensures faster problem resolution.
When the application readiness is assessed, there are four
tracks of investigation: cloud migration, cost reduction, agile delivery and
innovation resulting in virtual machines in the cloud for migration purposes or
containers for repackaging, re-platforming and refactoring respectively - all
of these in the build phase of the build-deploy and run. While VMs are handled
by migration accelerators in the deploy phases, the containers are handled by
the modern DevOps pipelines in the deploy phase. The modern application
runtimes for containers are also different from the common operations on
virtual machines between the migration and modernization paths in the run
phase. Finally, the migration results in a complex relocated traditional
application while the modernization results in traditional application via
repackaging, cloud ready application via re-platforming and cloud native
application via refactoring.
Application Modernization goes together with cutting costs.
Containers and Microservices lower costs not as an afterthought but with the
design decision itself. The modernization journey has many approaches between
assessment phase and deployment. These can be graded as follows:
1.
Containerizing the whole application simplifies
the transition to the cloud. This is a migration-based approach that takes the
least toll.
2.
Exposing on-premises assets with API helps to
replace a monolith with SaaS. This strategy works well for legacy assets that
are difficult to move to the cloud.
3.
When costs must be driven even lower,
refactoring the monolith into the services helps a lot.
4.
It might even make sense to add new
microservices, to innovate incrementally, reduce complexity, and establish
success early. This is a transform and innovate approach.
5.
Finally, with agile delivery, we can sunset the
monolith we started out with.
It helps to increase the delivery velocity throughout the
modernization journey with one or more of these approaches.
A trusted foundation often helps with re-platforming. Container platforms like Kubernetes and
OpenShift help both the developers and the operations Staff. Native cloud
services are also popular for certain resources and for hosting. Often with a
continuous integration and continuous deployment involving
infrastructure-as-a-code, the destination can be one or another cloud requiring
the investment only once. Modernization platforms, tools and services are not
mature yet to the point where they onboard customer legacy applications
directly so must be done by hand today and possibly with container platforms
and other cloud resources.
Application, data, integration, automation, multi-cloud
management, and security are all considered to enable a faster and more
reliable way to move to the cloud.
It’s best to invest in a strategy that involves the
intersection of innovation, modernization, and DevOps. Developing innovative
cloud native applications, modernizing, and leveraging investments, and
creating an agile DevOps culture are part of this strategy.
Reference:
1. Reverse engineering: https://1drv.ms/w/s!Ashlm-Nw-wnWhMNPrSvPK-uwYpT3Lw?e=sILWQZ
2. Dependency
Complexity: https://1drv.ms/w/s!Ashlm-Nw-wnWhLlVVpSxd7gT9ddmhw?e=2CAili
3. Application
Modernization: https://1drv.ms/w/s!Ashlm-Nw-wnWhMMQ1jDEwSF-4ALIOw?e=YsdVQM
4. Modernization tool
for calculating metrics – Javier Luis et al.