Building high-quality software at start up speed requires a modern cloud platform and a development process that can continuously drive innovation. But if your organization wasn’t “born in the cloud,” you very likely have an app portfolio consisting of hundreds or thousands of applications, that was built over many years, and is hosted on a variety of different platforms. Some may be on-premises, some may be cloud-based.
Modernizing an application portfolio while simultaneously deploying the technologies required to create a secure, resilient cloud ecosystem can be challenging. New capabilities are needed for both IT and developers. Teams will need to build, run, and manage apps on any cloud infrastructure. There are complex technical, organizational, and operational hurdles to overcome.
A Unique Approach – Look Holistically
For years, infrastructure teams have been modernizing cloud infrastructure independently of what application teams are doing. The application teams are busy modernizing applications and the two teams rarely cross paths. This is not the best approach. It’s important to modernize both apps and IT together, not separately.
VMware has created a best practices framework – the App and Cloud Modernization Framework (shown below) – which provides a comprehensive approach for addressing both simultaneously. This outcome-focused framework guides the move from the current state – lots of apps running on a variety of platforms – to the desired future state – modernized applications residing on the optimum cloud infrastructure.
Every organization is different. The first step is to understand which capabilities are most important to strengthen in order to achieve the outcomes the business requires. The eight boxes on the left of the diagram are organized into three pillars that represent the key capabilities that organizations must acquire in order to modernize apps and cloud. In my next blog, I’ll talk more about a Capabilities Assessment Model that can be used to evaluate an organization’s current state. Basically, these three pillars cover:
- Modern Infrastructure – assessing IT capabilities across cloud infrastructure, whether it is public, private, or multi-cloud
- Modern Platforms – assessing the use of platforms which reduce app complexity, accelerate application deployment, and enable apps to operate on diverse data sets
- Digital Enterprise – evaluating how well IT and development teams can support modern software development and modernization methodologies, and app management across any cloud
Prioritizing which apps to modernize first and where each should run is challenging. The oval in the center of the diagram represents a modernization methodology which uses a highly repeatable, efficient “prioritize, realize, optimize” (PRO) approach that iteratively shows results and enables continuous value realization. Instead of evaluating thousands of applications as part of a large assessment project, it’s better to select a subset of the portfolio. Then quickly obtain quantitative and qualitative data and build an initial backlog so that you have a running start with minimal risk.
Use a systematic approach to determine whether to rehost, replatform, refactor, retire, or retain individual apps, what we call the 5 Rs:
- Refactor – the application is rewritten, typically to a microservices architecture. This offers high potential return, growth, and innovation opportunity, and is more time intensive.
- Replatform – containerize an existing application with minimal change, usually from VMs to containers to balance the potential return with risk. This strategy takes advantage of increased automation, speed, and scalability.
- Rehost – migrate the application “as-is” to cloud. This focuses on IT efficiency and cost savings while reducing the risk of change impacting regulatory, compliance, and technical requirements.
- Retain – do nothing if the application shows low potential return from a modernization investment.
- Retire – typically replace with SaaS, but may include retaining the data while discontinuing the app.
With the required supporting capabilities identified and a modernization strategy created for the prioritized apps, use a standardized approach to simultaneously modernize the applications, infrastructure, and teams. Replatform apps into containers, refactor an application to run in a microservices architecture, or rehost/migrate a group of applications. Simultaneously, modernize and implement any required cloud infrastructure – whether that is public, private, or multi-cloud.
As you modernize the apps and infrastructure, it’s essential to create modern teams and processes. Automate everything – for both developers and IT. For developers, implement test-driven development, CI/CD (continuous integration, continuous deployment) to reduce manual process time and software delivery lifecycle cost. You should build new competencies such as DevSecOps so that you can create software faster, more frequently, and with security measures integrated throughout its lifecycle.
For IT, build any required new IT capabilities as part of the modernization activities. Automate IT Service Delivery (e.g., compute, networking, Kubernetes, etc.), provide service access via APIs, build a self-service portal, and implement infrastructure as code (IaaC).
The modernization process should be iterative. As applications, infrastructure, and teams are simultaneously modernized, you continuously realize outcomes, such as faster time to market, reduced IT spending, and application mobility. The process I’ve described enables you to start small, scale fast, and begin executing application modernization in weeks, not months.
More to Come
Check back for additional blog posts on executing a Capabilities Assessment and a Prioritize, Realize, Optimize project. If you would like to learn more about VMware’s unique approach to modernization, download the VMware App and Cloud Modernization Services eBook and visit VMware Professional Services.