Bossie Awards 2017: The best cloud computing software

InfoWorld picks the best open source software for building and managing cloud infrastructure


The best open source software for cloud computing

Containers, microservices, functions as a service—it’s a light, fast, devopsy new world of distributed systems, service meshes, and “infrastructure as code” that just reeks of complexity. Luckily, the brilliant engineers at Google, Lyft, Uber, et. al. are solving the hard problems and sharing the code. 

[ InfoWorld presents the Best of Open Source Software Awards 2017The best open source software development tools. | The best open source machine learning tools. | The best open source databases and analytics software. | The best open source networking and security software. ]


Docker brought easy OS-level virtualization to Linux and added packaging and other nifty tricks. For a moment it looked like Docker would be the uncontested ruler of the next wave of virtualization. That changed, but while Kubernetes is gaining adoption among those building big clouds, Docker remains the default for almost everyone else. It is also the easiest path—especially if you just want to create a container or three on your laptop and share with others. If you’re not sure which to pick and you haven’t had a lot of experience with either, pick Docker.

— Andrew C. Oliver


Kubernetes provides a set of metaphors for running clusters of containers that are grouped together to form applications. In addition to simplifying deployments, updates, rollbacks, and high availability, Kubernetes makes multi-container apps portable across public and private clouds, because the same container patterns can be redeployed anywhere Kubernetes runs. In three short years Kubernetes has become a staple of the new application stack, and shows no sign of slowing down.

— Serdar Yegulalp


Kops (Kubernetes Operations) is a command-line tool for provisioning production Kubernetes clusters on cloud infrastructure. In just a few commands, you can provision and maintain a Kubernetes cluster with relative ease. Currently, the only cloud provider supported is AWS, but Google Compute Engine and VMware vSphere are in alpha and other platforms are being planned.

— Jonathan Freeman

Moby and LinuxKit

The Moby and LinuxKit projects give developers a “LEGO set” of components to build their own container systems. Moby provides a container runtime, an orchestration toolkit, and other core system components, all delivered as OCI-compatible containers. LinuxKit is for building minimal, stateless Linux distributions, though persistent storage can be attached. The resulting images can be booted and tested on every major OS by way of a hypervisor or run in any of the major cloud environments.

— Serdar Yegulalp

HashiCorp Terraform

HashiCorp has always produced high-quality software that solves developer headaches. Terraform automates the deployment of infrastructure, allowing you to script the setup and configuration of server clusters and multi-tier applications in a datacenter or cloud—sort of like a Unix shell script can create devices, users, and services on a single machine. Compute, storage, networks, and supporting services like DNS can all be provisioned and combined in a repeatable, consistent manner.

— Steven Nunez


If you’re plunging into serverless computing and functions as a service, it’s easy to get locked into a particular cloud provider. Amazon, Google, and Microsoft Azure all offer competing serverless computing services, but they all require writing to their standards—and that means sacrificing flexibility. OpenFaaS is a serverless framework for Kubernetes and Docker Swarm, letting you maintain cloud provider flexibility while leveraging any programming language and Linux or Windows containers to create serverless functions.

— Jonathan Freeman


Envoy is an edge and service proxy with a pluggable filter chain model and support for HTTP L7 filtering. Envoy can be used for a variety of scenarios such as HTTP/2 gRPC proxying and MongoDB filtering and rate limiting, and its load balancing support includes eventually consistent service discovery, circuit breakers, retries, and zone-aware load balancing. Envoy also exposes both statistics and distributed tracing. Envoy is currently implemented in C++ 11 as a service mesh that runs out-of-process.

— Martin Heller


Jaeger is an OpenTracing-compatible distributed tracing system for monitoring microservice-based architectures. It has Go, Java, Python, and Node.js clients, and templates for Kubernetes and OpenShift. Jaeger uses consistent upfront sampling with individual per service/endpoint probabilities. Its back-end components are implemented in Go and its UI in React. It can use Cassandra or Elasticsearch as back-end storage plug-ins.

— Martin Heller


Linkerd is a transparent service mesh, designed to make modern applications safe and sane by transparently adding service discovery, load balancing, failure handling, instrumentation, and routing to all inter-service communication. Linkerd acts as a transparent HTTP/gRPC/Thrift/Etc proxy, and can usually be dropped into existing applications with a minimum of configuration, regardless of what language they’re written in. It works with many common protocols and service discovery backends, including scheduled environments like Mesos and Kubernetes.

— Martin Heller


Zipkin is a distributed tracing system that helps gather timing data needed to troubleshoot latency problems in microservice architectures. Applications are instrumented to report timing data to Zipkin. The Zipkin UI presents a dependency diagram showing how many traced requests went through each application. If you are troubleshooting latency problems or errors, you can filter or sort all traces based on the application, length of trace, annotation, or timestamp.

— Martin Heller


Awless is an alternative to the AWS CLI that offers a simpler syntax and some powerful enhancements. Awless makes it easy to create, update, or delete resources through simple scripts or template files that chain together commands. It supports aliases and provides autocompletion, inputting smart defaults and prompting for missing variables during resource creation. It even keeps a local RDF graph of your AWS resources that you can query offline, and a local log of operations you can use to revert to a previous state. 

— Victor R. Garza