Cloud infrastructure services have allowed our field to gradually abstract computation tasks from long-standing physical restraints. As cloud infrastructure adoption increased, we realized the power and efficiencies of quick deployments and elastic scaling, giving birth to the DevOps movement. We've been steadily directing more of our attention and resources to what matters most: the applications that differentiate our organizations and create value. We can do this because we spend fewer scarce resources managing and maintaining bare metal infrastructure.
As we've moved toward a "paper-cup," ephemeral computing model, these "virtual" components are becoming skeuomorphs; that is, they are features of computing instances that resemble facets of the physical computers they've replaced, but are not essential to the new model. Because we still use and value these components, we continue to suffer many of the complexities, inefficiencies, and insecurities that have plagued physical servers for years.
For example, a simple web server will carry along with it a complex, feature-rich operating system (all of which must be patched or rot), when a web server will never use many of those features. Network allowances and tools for all kinds of maintenance are included, when many maintenance activities could be accomplished by simply replacing the instance.
Similarly, when one considers a cloud infrastructure deployment of an application in its entirety, many deployments wind up resembling virtual versions of on-premise data centers, complete with a mess of persistent network connections and software agents that require root access management. These are a breeding ground for complexity, inefficiency, and security problems.
Indeed, we think the very terms "virtual machine," "virtual data center," and the like are conceptual skeuomorphs. As pseudonyms for completely new technologies, they provide familiarity to those of us-all of us-who were acquainted with what these technologies replace. This familiarity might aid adoption, but it also perpetuates artificial creative boundaries on how we employ these new technologies. Confined within these boundaries, the "virtual mindset" steers us toward making more stuff to manage than is necessary and, worse yet, more vulnerability surface that we need to defend.
In other words, we're making work for ourselves. The lazy system administrator in all of us should be bristling.
We can see this problem addressed as cloud infrastructure providers break away from the "virtual mindset" and all its attendant assumptions and limitations. When it comes to "virtual machines," Digital Ocean evokes evaporation with "droplets," while AWS Elastic Compute Cloud and Google Compute Engine borrow from object-oriented programming with "instance." Similarly, IaaS providers typically refer to some variant of "block storage" instead of "virtual hard disk."
These changes in terminology, though subtle, are the beginning of a movement to eliminate "server-hugging." It might seem iconoclastic today, but the way that Netflix abuses servers like a cheap commodity with ChaosMonkey appears to us like the right way to build and test for resiliency in the cloud. Kief Morris, writing on Martin Fowler's blog, argues that servers should be destroyed and rebuilt when changes are needed, treating them as if they are immutable-which is perfectly reasonable when they are a cheap commodity. Similarly, Chad Fowler at 6Wunderkinder urges us to trash our servers and burn our code.
With the rising popularity of stateless application tiers, a separation of concerns with SOA architectures, and DevOps practices like Continuous Deployment, expect the "virtual mindset" to subside. In favor of that, we expect to see a new post-virtual era where cloud-native applications, architectures, and operational practices come into the mainstream, and we realize what is possible.