InfoWorld picks the best open source software for building and managing cloud infrastructure Credit: IDG The best open source software for cloud computingContainers, 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 2017: The 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. ]DockerImage by DockerDocker 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. OliverKubernetesImage by The Linux FoundationKubernetes 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 YegulalpKopsImage by The Linux FoundationKops (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 FreemanMoby and LinuxKitImage by Moby ProjectThe 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 YegulalpHashiCorp TerraformImage by HashiCorpHashiCorp 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 NunezOpenFaaSImage by Alex EllisIf 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 FreemanEnvoy Image by The Linux FoundationEnvoy 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 HellerJaegerImage by UberJaeger 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 HellerLinkerdImage by Linkerd AuthorsLinkerd 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 HellerZipkinImage by The OpenZipkin AuthorsZipkin 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 HellerAwlessImage by WallixAwless 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 Related content analysis Beyond the usual suspects: 5 fresh data science tools to try today The mid-month report includes quick tips for easier Python installation, a new VS Code-like IDE just for Python and R users, and five newer data science tools you won't want to miss. By Serdar Yegulalp Jul 12, 2024 2 mins Python Programming Languages Software Development analysis Generative AI won’t fix cloud migration You’ve probably heard how generative AI will solve all cloud migration problems. It’s not that simple. Generative AI could actually make it harder and more costly. By David Linthicum Jul 12, 2024 5 mins Generative AI Artificial Intelligence Cloud Computing news HR professionals trust AI recommendations HireVue survey finds 73% of HR professionals trust AI to make candidate recommendations, while 75% of workers are opposed to AI making hiring decisions. By Paul Krill Jul 11, 2024 3 mins Technology Industry Careers how-to Safety off: Programming in Rust with `unsafe` What does it mean to write unsafe code in Rust, and what can you do (and not do) with the 'unsafe' keyword? The facts may surprise you. By Serdar Yegulalp Jul 11, 2024 8 mins Rust Programming Languages Software Development Resources Videos