The software enabled data center starts with a virtualized environment. Currently there are three major hypervisors at play: VMware ESXi, Xen, and KVM. A hypervisor allows the operations team to take a large physical infrastructure and chunk it into smaller consumable bits. This allows the hardware to be better utilized. There is a set of products on the market that allows us to create resource pools for teams which you can think of as resource quotas. Teams then use virtual machine templates that they can start, stop, and restart on their own. We refer to this as IaaS or infrastructure as a service. There are two types of templates, platform and base. A base template will give you just the VM and the operating system. A platform template will include the VM, the operating system, and a set of software required to run an application. Examples of a platform template are Sharepoint, Exchange, tcServer, or Oracle. The images managed only through a web UI by end users and consumable by an enterprise or team are usually called SaaS images, or software as a service. Those vms that still require configuration at a filesystem level or require additional deployment packages or code, would be called PaaS images, or platform as a service. The issues with PaaS based infrastructures comes from repeatability and consistency back through the development and dev-ops teams.
A true platform as a service is made up of two parts, a reference application architecture that is stateless and service oriented as well as a set of deployment processes that are meta data driven so the application can be deployed as individual components with managed dependencies between vms. So, operations is responsible for IaaS and dev-ops is responsible for PaaS. The enterprise architecture team is responsible for the application architecture that will be deployed from the development teams. The automation of building and deploying these components in my opinion is a true cloud platform. My company, Cloud Nine Partners, specializes in training, mentoring, and consulting with companies in how to do this. This blog will look at different tooling we have used in production environments to achieve this platform for our clients.