At the Defrag conference yesterday, Google’s Brendan Burns used Containers as a Service (CaaS) as a term for container platforms. In his view, CaaS environments such as Google Kubernetes and Google Container Engine sit between the IaaS and PaaS environments. It’s a new term but he provides a pretty clear argument for why it is applicable.
Here’s the full recording and slides from his talk and how he justifies the use of CaaS as a term to describe a new layer for cloud platforms. In particular, note how he puts an emphasis on object oriented design as a way to understand the concepts of the container. In his view, the cloud economy has a parallel to programming languages. IaaS has a parallel to the Assembly programming language. He notes that IaaS is oriented to the machine. It is very literal. In contrast, most everyone sits in the middle using object oriented languages. The object oriented languages have concepts that do not exist on the machine. They have patterns and interfaces but do not restict what you are going to build. Object oriented languages encapsulate and make it easy to build. We have moved away from the machine but not too far away. CaaS falls into this middle ground as a way to connect to the machine but also offers the ability to make use of concepts that will impact how we think about application development on distributed architectures.
- Google Kubernetes is an open source implementation developed by Google that is inspired by the technology that drives the Google infrastructure and in turn the way all Google applications run.
- Kubernetes has the notion of a pod. Each pod has many containers that work well together as an atomic unit that has to be paired under the same machine and may share volumes. This ensures reusability of components.
- Containers virtualizes the processor and the kernel and lets applications use the same underlying kernel on a virtual machine with a level of abstraction and introspection in a sealed deployed unit.
- Docker popularized containers with elegant tools that enable people to build and transfer existing skills into it.
- Clusters are the transitions of logical idealized compute of homogeneous machines that can be considered as logical substrate with a pool of resources that can be used to enable upward drive in utilisation.
- For developers who are always looking to develop applications that are highly maintainable and scalable they score in utilization of development and application design.
- Containers enable you to move into modular application design where database is independent and lets you scale applications without scaling your machines.
- Three patterns of containers that are evolving are sidecars that essentially extend and enhance your application. Adapters that normalizes an abstract and bridges the gaps in between. Ambassador pattern is the final pattern that represents a proxy service.
- All three are powerful reusable components that will speed up distributed design.
- Adapters essentially normalizes monitoring information and lets you build an abstract service on top of that information.
- Powerful reusable modular components that will speed up distributed system design and development.
- Encapsulation ensures containers are active and healthy. There is some sort of health check contract between Kubernetes and the container that dictates its survival.
- BigTable is the ability to identify and separate concerns to build a more powerful and reusable system.
Feature image via Flickr Creative Commons.
Tina Andrews is an IT enthusiast based in Bangalore, India.