Wait… I know what you are thinking. Not another blog telling me I need to 12 factor all my apps, microservice everything and move everything to the cloud. At the same time, I should relinquish myself from any practice deemed “monolithic” in order to survive digital transformation, crush technical debt, and remain in business for at least five more years. Sorry to disappoint but this is not that blog.
Instead, what I do want to focus on is looking at the application modernization journey, which very often, falls in lock step with the cloud journey. As part of that discussion, I’d like to offer a very pragmatic view on how enterprise IT can first migrate apps to the cloud and then modernize those apps, when and only when, it creates a positive impact on the business.
Note that I am purposely starting off this discussion with the concrete concept of “migration” and not simply talking about a something more amorphous like “journey to the cloud”. For the customers whom I work with, it is this migration piece that is most challenging.
Developing net new applications on the cloud will require the development of new abilities but the path itself is pretty straight forward. It is a path of least resistance. This element of resistance, or lack thereof, has contributed substantially to the success of the public cloud as a great vehicle to accelerate the building of net new applications.
But it’s the migration piece, taking those traditional applications and re-factoring them to cloud native, which is the challenge many of the customers I talk with face. Just re-platforming applications at scale to a native public cloud with a different cloud stack, is often a multiyear project. A project full of inertia, risk, cost and potential lack of return on investment.
Falling short on business justification
Many of the customers I work with are feeling this pain. Cloud migration efforts, fuelled by a desire to modernize, are often extremely slow to execute. With this slow pace comes the risk of potentially stalling out completely. No one should ever under-estimate the level of work and challenge cloud migration presents to IT and app dev teams alike.
Very often, migrating an application to the cloud, is a deeply technical exercise. You often have to deconstruct existing applications to identify and understand the dependencies that the current application has on the existing infrastructure. You then need to plan and execute modifications to the application that will allow it to perform satisfactorily in the new environment. And that’s before you have executed any feature enhancements that will address new functionality required by the business.
As a direct consequence of this complexity, customers are paying much more attention to the business justification of moving applications to the cloud. If the business spends X amount of time on people and resources just to re-platform the app; and the application will only do the same thing it did before; is this something that is really needed? This is where we need a pragmatic view to architecting a path to application modernization.
Now before I get branded a “VM hugger”, “Kubernetes denier” or other such term to describe someone who is not onboard the train to modernize everything; I want to say that I am fully in favour of application modernization, where it matters.
That is to say, where significant business benefits can be realized and where competitive advantage can be achieved. However, we cannot ignore the fact that there are going to be applications, or indeed, parts of applications, where it just doesn’t make sense to move them to the cloud given the cost and complexity associated with current migration practices.
Cloud migration 2020 – It’s a new world
It was only a few years ago, where if you wanted to move to a hyperscale cloud provider, you had to at a minimum, re-platform your applications to the hyperscale cloud providers virtualization offering. Lift and shift tasks are only a trivial activity for a small number of applications so addressing platform differences can quickly become overwhelming as more and more applications become candidates for migration.
2020 has seen many changes, but in the hyperscale cloud providers we have seen a tectonic shift in strategy in terms of how these cloud providers approach migrating applications into their respective platforms. Four years ago, VMware and AWS announced that they would partner to offer VMware Cloud on AWS, a VMware managed software defined datacenter (SDDC) solution running on bare metal AWS infrastructure.
Inside AWS, a VMware SDDC as a service offering, can be connected into AWS cloud native services. Since that time, we have seen the general availability of the VMware SDDC offering in Microsoft Azure, Google Cloud Platform, Oracle Cloud Infrastructure. Let’s also not forget that IBM has offered a VMware powered cloud solution since 2016 as well. With this model, you get to leverage your existing on-premises operating model while still getting access to the innovation of hyperscale cloud providers.
Pragmatism to the forefront
What I have learned over this period, is that both customers and large cloud providers, see a need to think about the modernization of applications in a more pragmatic way. Customers in particular want a more pragmatic approach, especially when thinking about the need to migrate applications to and from multiple cloud providers.
With VMware Cloud Foundation as the core infrastructure stack running on any cloud, technologies such as VMware HCX offer the capability to migrate workloads en masse without the need to replatform to a new hypervisor and to re-IP the application. Workloads can be migrated with zero change and potentially zero downtime.
From migration to modernization
At this point you might be thinking, “but what does this have to do with app modernization?” Now that we have vastly reduced the complexity of moving applications to any of the major public cloud providers, we now have more options open to us in terms of deciding:
- Which applications can pass a business justification hurdle for cloud migration
- Where we choose to modernize an application
- Which cloud services we choose to consume as part of our modernized application
- How tightly we choose to couple our applications to any specific set of cloud services
As a result, customers now have many more choices around how their application modernization journey will progress.
Options for modernizing your apps once migrated
Now that we have thoroughly explored changes in the application migration landscape that lower the barriers to migrating apps, let’s move on to the topic of application modernization in a multi-cloud world. There are two major approaches to modernizing apps in a multi-cloud landscape that I would like to explore with you next.
Option 1: Tanzu Platform, alongside traditional vSphere workloads.
One of the key pillars of the VMware strategy as it relates to multi-cloud has been a belief in consistency. We have made that possible for virtual machines by offering the same core components of the VMware Cloud Foundation stack availabe to customers:
- In their on-premises datacenter
- On all of the major hyperscalers
- Through our partner network of 4K+ service providers
We have also extended this consistency, to the work we are doing with Kubernetes through our VMware Tanzu portfolio. With VMware Tanzu, you not only get the benefit of running Kubernetes as part of a fully intergrated part of your vSphere experience, you also have the capability to deploy a consistent Kubernetes infrastructure and tooling to whatever cloud you choose to use.
For many technology leaders, the cloud is highly appealing for a variety of reasons. But a consideration for many is deciding how much integration should exist between your apps and cloud native services that are part of the cloud provider’s offerings. Can the business easily back out of a particular cloud provider down the road should they choose to? If you are heavily integrated with bespoke cloud native services, this may be a challenge.
This is where leveraging the VMware Tanzu portfolio of solutions (see figure one) can help to ensure that you have the same Kubernetes runtime platform across all of your compute locations. This will give you the ability to build, manage, connect and protect application components through Tanzu Build Service, Tanzu Service Mesh, Tanzu Mission Control and Tanzu Observability. You can download the reference architecture in figure one here.
Figure 1: VMware Multi-Cloud Reference Architecture for App Modernization
Option 2: Intergrate directly with Native App Dev Services.
Classic examples of what option 2 looks like would be to heavily leverage cloud native services such as AWS Beanstalk, Azure Kubernetes Service, Google BigQuery, to name but a few. It might also mean augmenting a multi-tier application with these native cloud services by modernizing a web front end for greater elasticity in terms of scaling with demand and/or re-writing the code to perform faster from a UI/UX perspective.
Making use of the easy to consume and pre-built services available from cloud providers is extremely appealing. With the VMware vSphere platform running in all the hyperscale cloud providers, customer now have a broader set of choices on how they choose to modernize their application portfolio.
The two options discussed above are not mutually exclusive. For instance, you must weight the benefits of tightly coupling application components to native services against the lack of application mobility this approach creates. Or if you might choose to build a more homogenous platform for traditional and modern applications that can run across a multi-cloud environment without having to make changes to the applications.
These are just some of the decision points you might consider when looking to move applications to the cloud. Whatever you decide, VMware provides the platform and the management capabilities to help you; however you choose to architect your future modern application deployments.
Interested in learning more about how VMware can help you architect a multi-cloud solution for your organization. Check out these two resources:
- Looking to better understand VMware’s unique approach to multi-cloud architecture? Get the definitive guide
- VMware Multi-Cloud Podcast: This Podcast series on SoundCloud interviews VMware technical leaders and explores how VMware Cloud offerings can help you architect a multi-cloud environment that accelerates application modernization across a multi-cloud landscape.
- VMware Cloud on AWS Reference Architectures: This collection of reference architectures details how to deploy various application and hardware stacks in a hybrid cloud model that includes VMware and AWS technologies.