Over the last two decades, we have seen three major shifts in the IT and application development industry: infrastructure, application delivery, and application development. I’ll look at these three trains that are colliding now and make a case for why we need cloud managed datacenters today and why it is the only way private clouds should be delivered and consumed.
We transitioned from physical servers and storage in the 1990s to virtualized environments from 2000 onwards. VMware led that revolution with ESX hypervisor and management software vCenter to provide a set of tools like VM snapshots, cloning, live migration, DRS, VM high availability, and fault tolerance among many others. Once virtualization became somewhat mainstream, it led to companies providing infrastructure as a service instead of owning it yourself. The rise of public clouds showed enterprises how one can deliver infrastructure as a service using APIs.
The focus shifted from cool infrastructure tools and IT to end users, their consumption model and eventually to delivering applications as a service instead of just infrastructure. Now you can buy a database, load balancer, DNS service and object storage directly as a service instead of building it yourself.
Another parallel shift in infrastructure has been moving from compute and storage silos to converged to hyper-converged infrastructure. This reduces the overall capital and operational expenses, while providing predictable growth.
These shifts in infrastructure software and hardware, can be summarized as:
Application Delivery Shift
Before the rise of virtualization, most infrastructure services vendors used to ship an appliance that combined pre-validated hardware with software installed on it. This was the main delivery mechanism for load balancers, firewalls, storage, networking switches and routers. Over time, the number of special-purpose ASICs in these devices declined significantly and most vendors began using standard Intel based chipsets or some standard silicon with proprietary software. This made it possible to actually offer these devices as virtual appliances on top a cloud environment.
A cloud became a common platform for delivery of applications as software. A customer can get access to any of these applications with a single-click download and can be running that virtual appliance within minutes. A similar trend happened in the mobile phone industry, where iOS and Android became the delivery mechanism of many special-purpose devices like GPS, cameras, etc.
Now it is hard to argue with software delivery, but that still didn’t solve the problem completely and gave rise to another complexity: Upgrades. I really liked the way Martin Casado from Andreessen Horowitz maps the software update problem into a very complicated, distributed version tracking and control problem during his recent Keynote at Usenix ATC 2016.
One way to solve that problem is not to install the software on each customer site at all and deliver it as a service over the Internet. This beautiful concept gave rise to the concept of software as a service (SaaS), pioneered by Salesforce, led by Marc Benioff.
So the shift can be summarized as:
Application Development Shift
Before the cloud era, most applications were written in a client-server manner with a monolithic server design, where the scalability of the server was achieved by highly parallel hardware and software running on high performance machines. Sun Microsystems provided one of the best architecture and software stack to run web servers in the 1980s and 1990s. Soon people realized that the cost and maintenance of such monolithic server backends was too high and they could achieve the same performance and scale using standard x86 processors and scale-out designs. It was easier to scale the stateless components in the application, but the backend (storing the persistent state) became the bottleneck.
With that, the persistent storage backend became the most expensive component in the system with scalability limitations. This led to the rise of the NoSQL movement, where application writers decided to let go of the power of complex transactions and handle them in the application itself. This led to the shift towards service-oriented architecture (SOA), where every component of an application is built as a service and these services only talk to each other using a well-defined API. This allowed each service to maintain its own persistent state and data format and to evolve much faster without worrying about breaking the application, as long as the API contract was met.
This evolution is now going through another level of splitting with the introduction of containers as the main packaging and deployment vehicle for applications. Services typically running in VMs are being converted to micro-services running inside containers. This new model is still evolving and vendors are building solutions to solve challenges like storage, networking and orchestration for deploying and managing applications as group of containers.
This service-oriented architecture is fueling the trend toward providing core infrastructure components like databases, load-balancers, firewalls, and object storage, also as services. This is impacting the vendors that sell these as wrapped software services or hardware appliances, which brings us to the third major trend in application delivery. So the shift can be summarized as:
Cloud Managed Datacenter
Let us looks at a summary of the key IT and application development trends:
These trends all tie into the cloud-managed datacenter concept that we are pioneering at ZeroStack. It is essentially an on-premises cloud built using hyper-converged infrastructure, delivered as SaaS with public cloud integration for running VMs and container-based applications. Let’s look at some of the parts in more detail.
Why on-premises cloud?
In addition to providing security and data governance, an on-premises cloud is more cost-effective for long running applications. It can provide higher performance for latency-sensitive applications, while providing better visibility and control of infrastructure for optimization and troubleshooting. Also, if a company has other services and data on-site, it is better to have a local cloud to provide closer integration and locality.
Why Hyper-converged infrastructure?
It allows customers to avoid silos and scale the infrastructure based on the need and with predictable costs. In addition, the building blocks for hyper-convergence are flexible across CPU, memory, storage and networking dimensions.
Why SaaS-based management and delivery?
SaaS-based management simplifies operations and reduces installation of on-premises software components. The monitoring and operations are delivered as part of the SaaS portal. In addition, SaaS provides high feature velocity so that one can deliver features to customers every few weeks, instead of making them wait for a year or longer.
Why integrate with public clouds?
Public clouds are a great fit for elastic and geographically diverse applications.
These shifts in IT, application development and delivery lead us to believe that cloud managed datacenter is the way in which IT and infrastructure will be consumed in the near future. For more details, please visit www.zerostack.com