These days, there is so much buzz around technologies like Docker and lightweight Linux containers, and the potential of virtualization in general. Recently, an Illumio customer mentioned they do both application and database virtualization, but they don’t do virtualization at the OS container level. Another customer has designed their multitenant service to run a Java virtual machine (JVM) per customer with dynamic mapping of JVMs to servers.
There is a lot of experimentation happening in the divide between apps and infrastructure, especially for modern scalable web applications. But, what does this mean for infrastructure?
Long, long ago…
A dozen years ago, the average utilization of a server in an enterprise IT data center was less than 10 percent. At the same time, most legacy apps were not designed for high availability or dynamic scale out. This meant that a critical enterprise application would need to use fast, highly available, sophisticated hardware to compensate for these inadequacies. This hardware—including power supply, CPUs, and storage systems—came with all sorts of redundant systems to avoid faults that could affect the applications.
Virtualization changed everything
Then, about 10 years ago, technologies like ESX and vSphere made OS container virtualization possible, which created an explosion in the market for smart infrastructure.
Large, sophisticated servers with multiple processors and enormous amounts of memory were now able to run large numbers of virtual machines using a hypervisor, leading to improved server utilization. Enterprises were able to consolidate underutilized and wasted hardware capacity, leading to a simple, but immensely attractive, story of ROI in six months.
A few years later, technologies like vMotion and DRS drove the market for big, shared storage (SAN and NAS) and prompted the development of many VM-optimized storage startups. By transparently adding services into the virtualization infrastructure, simple legacy apps were made much smarter.
Server and storage vendors, and more recently networking vendors, have built their business—and growth—on virtualization’s ability to exploit and use expensive and smart infrastructure.
App development gets smart
Over the last decade, the act of building sophisticated applications has shifted from an art form to a craft to a component-based opportunity available to the masses. This represents a natural maturation of the app-development process, and it has occurred as the industry has shifted from full custom software development to the assembly of widely available components.
There has been a veritable Cambrian explosion in the number of tools and components needed for application development, and most of it is available as open source.
The democratization of application development tools and components has changed the very nature of applications.
The emergence of PaaS providers such as AWS, Azure, Google Cloud Platform, and Cloud Foundry is the latest step in the evolution of app development. PaaS has essential app components and services already integrated into it, making it even easier to create smart applications.
This democratization of application development tools and components has changed the very nature of applications. They have become much smarter. They’re now resilient to failure, highly available, dynamically scalable in response to load, and have sophisticated and heterogeneous user interfaces. Instead of writing custom apps from the ground up, app developers need to focus two things:
- Assembling the appropriate infrastructure elements as building blocks for the application.
- Writing the specific business intelligence for the product.
What does this mean for infrastructure?
Enterprise applications have a long lifetime, and legacy applications will be around for some time to come. Still, the application trend shows that application software is now smart enough to create application-specific answers to availability and scale using only plenty of fast commodity hardware; not smart infrastructure.
The age of using smart hardware and infrastructure as a crutch to solve the inadequacies of applications is fading into the sunset. Smart applications are being built from multiple distributed components and services running on commodity hardware and public clouds. Services—including security services—built to work with these applications must respond to these trends to be future proof.