How to run Containers as a Service – Part 1
In this post I will talk about containers, why developers love them and which platform is suitable to manage and run Containers in production.
For those not in the know, application containers are a way for developers to package code into executable ‘containers’. Instead of writing code that makes up an app and running it directly on a server, it would be packaged in a container and then run on the server. The advantage is that developers can deploy them anywhere their runtime is supported. An application packaged in a container could run as easily on a developer’s laptop as it runs in a public cloud.
Containers are the solution
More and more development teams are looking into container technology for several reasons;
- They’re portable and lightweight thus easy to package,
- Faster time to market, because containers are lightweight they’re easy to deploy,
- plus businesses have the ability to move from traditional monolithic/layered applications to Microservices.
These new modern applications based on Microservices are also referred to as Cloud Native Applications.
The problem of containers
Creating and using container applications in development is easy. But moving container applications into production can be hard because additional requirements for operations apply such as security, governance, availability and management.
So businesses need a platform that addresses the needs of the application developers and fulfil the requirements of the IT operations team.
How to run Containers
Of course, VMware has a solution for that.
From a container runtime perspective VMware has two solutions; Photon OS and vSphere Integrated Containers (VIC).
Photon OS is a minimal Linux container host, like CoreOS, but optimized to run on VMware platforms.
It is thoroughly validated on vSphere; and, because VMware is focused on the vSphere platform, they’re able to highly tune the Photon OS kernel for VMware product and provider platforms.
Photon OS is compatible with container runtimes, like Docker, and container scheduling frameworks, like Kubernetes.
It contains a new, open-source, yum-compatible package manager – tdnf – that makes the system as small as possible, but preserves robust yum package management capabilities.
vSphere Integrated Containers (VIC)
vSphere Integrated Containers provides critical enterprise container infrastructure to help IT Ops run both traditional and containerized applications side-by-side on a common platform.
By leveraging their existing SDDC, customers can run container-based applications alongside existing virtual machine based workloads in production without having to build out a separate, specialized container infrastructure stack and avoid costly and time-consuming re-architecture of your infrastructure that results in silos. Scale application deployments instantly.
Developers already familiar with Docker can develop applications in containers, by using a Docker compatible interface and provision them directly using Docker API or through a self-service management portal like vRealize Automation.
To run containers as virtual machines, IT teams can leverage vSphere’s core capabilities such as enterprise-class security, networking, storage, resource management, and compliance that are essential to running containerized apps in a production environment.
From a management perspective VMware vRealize Automation delivers the ability to create, request, deploy and manage containerized applications combined with traditional applications through self-service with full governance and control.
With VMware vRealize Operations and VMware vRealize Log Insight, container hosts and applications can be monitored on health, resource usage and efficiency.
Combining Photon OS/VIC and the vRealize Cloud Management Platform delivers an easy-to-use but robust platform for developing, consuming and managing ‘legacy’ (hybrid) container applications on existing infrastructure.
One step ahead
Scheduling a container directly on vSphere using Integrated Containers is a great start, but it will not be the typical use case for new applications in production environments. Problems such as scaling, scheduling, dynamic routing and load balancing still remain. Therefore, it’s much more convenient to use a Cloud Native Application platform to deploy these modern applications. Frameworks such as Kubernetes, Mesos, Docker Swarm and Pivotal Cloud Foundry take care of the scheduling, scaling and dynamic routing automatically.
VMware has Photon platform, a multi-tenant control plane for provisioning next generation (Cloud Native) application platforms and supports the container frameworks mentioned above.
So, what to choose to run Containers
Cloud native architecture is the future, but applications need to be designed to be cloud native (12 factors), and most existing applications are just not ready.
So basically, it comes down to this:
If you have ‘legacy’ (hybrid) applications. Use vSphere, with packaging as container if possible, using Photon OS and/or Integrated Containers and managed by vRealize Cloud Management Platform.
If you have Cloud Native Applications. Use a Cloud native platform, using Photon platform with a container framework like Kubernetes or Pivotal Cloud Foundry on top.
In ‘How to run Containers as a Service – Part 2‘, I will explain how to build a Docker container host based on VMware’s Photon OS and how to deploy and manage container applications with VMware vRealize Automation 7.2