Recently, I have had a lot of discussion with customers and colleagues around IaaS, EaaS, PaaS, and DevOps. In these conversations, it has been clear that there is little clarity on what each of these are and how they can be paired or integrated. The items below are not listed in any particular order and are all essential elements to improving speed & agility in your application delivery pipeline and to reducing cost related to management and support activities.
IaaS is the foundation and often first step for many Enterprise customers on their journey towards PaaS. Through IaaS, organizations are able to consistently and reliably create base compute images via automation that provide storage, network, and compute resource on-demand. These resources combined with an operating system (OS) are instantiated in what we commonly refer to as a virtual machine, or VM (virtual machine). In IaaS, the VM is the atomic service unit or product traded with consumers.
IaaS can support nearly all systems that can be virtualized assuming varying levels of customization for a given environment. In the Federation, IaaS functionality is contained within the Vmware vCloud product suite. vSphere is used to manage resource pools and create virtual machines. VCloud Automation Center (vCAC) and AppDirector are used to create machine and environment profiles, and vCOPS is used to monitor and manage the environment. Together this tool suite enables the automation and abstraction needed to deploy a private cloud and also provides a framework that will support extending your footprint into the hybrid cloud. There are other solution suites on the market but all conform to this basic model.
As enterprises mature their IaaS instance, they can add additional functionality and workflows to support more complex workflows and transaction types, like approvals or chargeback. These efforts culminate in Environment-as-a-Services, where both application and their environments are version controlled and managed as a single entity.
Environment-as-a-Service, often referred to as IaaS Plus, extends the traditional IaaS ecosystem into the application development space. Here advanced automation is layered on top of the existing IaaS instance to not only configure servers for a particular application but also to deploy and test all the other components needed to run a given application. For example in EaaS, automation is in place that will simultaneously trigger a software deployment and IaaS provisioning workflow to run in parallel. This means that while build packages are created, tested, and staged for deployment, the infrastructure tool chain is provisioning the multi-server test environment being requested by the build server to support the current version of the application. This level of automation enables organization to deploy entire application environments with the same level of consistency and reliability they have come to expect through IaaS.
For many applications in the portfolio, this is the path to rapid application delivery, or continuous deployment without having to re-architect the application. It is also the recommended path for reducing cost associated with application maintenance and support for application that are not targeted for modernization and/or not well suited for a PaaS solution.
PaaS is the leading/bleed edge of software development and tool chain automation. Unlike IaaS and EaaS, PaaS abstracts to a much higher level in the application stack, namely to the service and container levels. While this level of abstraction is less customizable than a more traditional IaaS/EaaS (since containers and services are standardized forcing developers to write code that is compliant with the container settings), this level of abstraction is optimized for cloud infrastructures, offers superior scalability and often has a number of prebuilt tools and configurations that can accelerate your implementation process.
For new development initiatives and modernization effort that are planned to reside on a cloud architecture, a PaaS solution, like Cloud Foudry, should be considered.
So then how does DevOps fit into all this…
DevOps is the framework for building the integrated tool chain across the enterprise and the approach that defines how this tool chain will be integrated with the SDLC and ALM process and practices. It focuses on the adoption, integration, and indoctrination of collaborative systems that accelerate throughput in the application delivery pipeline.
DevOps is one part transformation and one part prevention. By using agile-based practice, enterprise will start to deconstruct knowledge silos and create integrated solutions that reflect the requirements of all stakeholders through active collaboration. This is the key transformational aspect of DevOps. The prevention comes as a result of the transformation as tools and process stop being built in isolation and are cultivate in a collaborative environment.
For example, I recently met with a large bank who invested millions of dollars in an IaaS private cloud and after a year of building had a major launch only to find that developers weren’t interested in using the platform and instead opted for a 3rd party cloud provider solution. Had the developers been included in the design and development cycles, this infrastructure group could have built a solution that was better aligned with developer needs. More importantly, if developers where active contributors to the design and implementation, those same developers would then become champions of the solution and help drive adoption within the larger development community.
In short, DevOps transform companies by instilling collaborative structures and better leveraging tooling investments in order to creating more value at lower costs.