Docker, Kubernetes, and Mesos are generating a lot of discussion as the future of application development. We are seeing significant progress towards having these methodologies adopted by enterprises for application development. We have even been hearing that VMware is the new legacy, since containerised applications don’t always need a hypervisor. These “modern application” methods are replacing older client server and early web architectures as the preferred way to develop applications. Some people are saying that this means the end of the road for the old applications and the infrastructures that run these applications.
The reality is that for enterprises, it will be a few years before many of these applications are in use. It is not a simple job to take an existing application and fit it into a modern architecture. Redeveloping large applications takes years. The reason virtualization took off is that it didn’t require any changes to applications or operating systems. Even with this low barrier to entry, it was nearly ten years from the first x86 hypervisor until the majority of enterprise x86 workloads were inside VMs. Five years later, there are still a lot of businesses that have not had the cost savings and agility benefits of virtualization. They still haven’t moved from physical servers. The adoption of new methods and technologies is slow, even if the change isn’t disruptive to the business.
Look around most businesses, and you will find plenty of older n-tier applications in use. If you look carefully, you will still find AS/400s and RISC-based Unix systems running a lot of businesses. The reality is that enterprise IT has a very long tail. Older systems hang around and deliver business value long after they cease to be interesting and new. The last time there was a mass extinction of old IT was Y2K, and we aren’t due for another mass extinction until the date bug of 2038 rolls around. Between these mass extinction events, we see computer systems deployed and living for a long time. Virtualization has been a huge enabler for long-lived systems. Hardware replacement no longer drives software updates. The same VM that ran on ESXi 3.5 can keep running its operating system and applications from 2007 on the latest hardware and newest vSphere release.
New applications do eventually replace older applications. The more important the application is to the business, the less frequently that application is replaced. Often, the cost of replacing a dinosaur application is immense. Sometimes these replacement projects fail, leaving an even older dinosaur in place. The result is that large enterprise applications tend to remain in place. Virtualization has removed hardware retirement as a driver to software replacement.
We do see these modern applications when totally new applications are required. Building something new today is a very different proposition than updating something that has already been built. As a result, the poster children for new applications are companies or opportunities that did not exist five years ago. This is particularly true for Internet and mobile applications. The ability to scale from a few hundred users to a few million will be important. We have all heard the nonsense about some celebrity “breaking the Internet.” They publicized some new application, which then failed to cope with the explosive increase in load. These are the kinds of applications that need to be built with modern methods: new, innovative, and interesting applications that could not exist a few years ago. One of the paradoxes is that modern applications will run perfectly well on enterprise infrastructure, but enterprise applications will not run well on infrastructure designed for modern applications. As a result, it is easy to add modern applications to enterprise infrastructure alongside the older applications. The migration path to modern applications can start with a lot of legacy infrastructure.
Modern applications are coming and will increase in enterprise applications over the next ten years. They will mostly supplement or extend the legacy applications that are running these organizations now. It will take years for the applications that are currently at the core of many businesses to be replaced with modern applications. Change in enterprise customers is slow, and application development is a particularly slow process. While it is important to learn what is new and what is in the future, it is also important to remain competent with the things we deployed yesterday. Yesterday’s applications and infrastructure are here to stay.