The cloud computing ecosystem is vast. A multitude of technologies comprise the cloud infrastructure that companies now rely on to deliver their products and services efficiently and at a massive scale.
These include platforms such as OpenStack and Cloud Foundry; container technologies such as Docker, CoreOS, and Kubernetes; software-defined storage and networking technologies; DevOps tools such as Ansible and Jenkins; and more. In each case, companies are using open source software to maximize development and operations and stay competitive in a rapidly changing market.
With so many technologies, tools, and techniques to keep track of, it can be hard to know where to start learning new skills. In this article, we take a brief look at five next-generation cloud technologies and some of the key open source projects in each space to help you get up to speed.
Unikernels
Unikernels are minimal, specialized operating systems that offer improved security, a smaller footprint, and fine-grained optimization, which can be particularly relevant to microservices. They are built on library operating system technology, and can be customized for different applications and hardware platforms, according to Unikernel.org.
MirageOS is an example of such a library operating system that builds unikernels for network applications across a variety of cloud computing and mobile platforms.
The Rumprun unikernel is another example. It consists of just a few thousand lines of code and supports POSIX software directly on raw hardware as well as cloud hypervisors, such as KVM and Xen, according to the project website.
Container Orchestration
As the use of containers increases and organizations deploy them more widely, the need for container orchestration tools also increases. Though the definition is hard to pin down, they are — broadly — the tools that organizations adopting containers for enterprise production use to help them integrate and manage those containers at scale.
Such tools aim to simplify management and provide a framework not only for defining initial container deployment but also for managing multiple containers as one entity — for purposes of availability, scaling, and networking, for example.
Some of the tools you should know about include:
CaaS
Containers as a service (CaaS) is a paid offering from cloud providers that includes compute resources, a container engine, and container orchestration tools. Developers can use the framework, via API or a web interface, to facilitate and manage container and application deployment. It can be considered a new layer for cloud platforms that lies somewhere between Infrastructure-as-a-Service and Platform-as-a-Service offerings for application development.
According to a recent Docker blog, this means the tools in the CaaS space are aimed at easing tension between development teams and operations staff when it comes to pushing application content and monitoring and managing applications and infrastructure.
Some of the projects here overlap with the container orchestration, so in addition to Amazon ECS and Google Container Engine, mentioned above, you should know about:
Software-Defined Networking
Software-defined networking (SDN) is a new approach to designing and managing networks that abstracts applications away from the underlying networking infrastructure. In the new architecture the control plane is separated from the data and forwarding plane of the of networking devices, such as routers and switches. A centralized software-based controller can then be used to communicate between the application and devices in the infrastructure layer, which simply act on the instructions.
This technology is expanding rapidly partly because of the increased networking demands from other growing areas, such as the Internet of Things (IoT) and 5G connectivity.
Open source tools and projects to know include:
Software-Defined Storage
Software-defined storage (SDS) — which is another term that means different things to different users and providers — basically abstracts logical storage services and capabilities away from the underlying hardware system for the purposes of scalability, agility, and performance. The goal is to provide administrators with more flexible storage capabilities through programming. And, abstracting services away from the hardware opens up new possibilities in this rapidly growing space for open source innovation.
Some of the open source tools in this space include:
-
Ceph — Ceph is a distributed object store and file system designed to separate the object namespace from the underlying storage hardware, simplifying data migration.
-
Gluster — GlusterFS is a free and open source scalable network file system for creating large, distributed storage solutions.
-
NexentaStor — NexentaStor is the open source SDS platform from Nexenta which, the company says, delivers unified file and block storage services, scalability, and data management functionality.
-
OpenStack Cinder — Cinder is a block storage service for OpenStack that virtualizes pools of block storage devices.
These topics and more are covered in detail in The Linux Foundation’s new free “Cloud Infrastructure Technologies” course — a massively open online course offered through edX. Registration for this course is open now, and course content will be available in June.