Crossplane is a framework for building cloud native control planes. When the founders of Crossplane at Upbound told me what they were working on in late 2018, shortly before the v0.1 release, I was very excited. I’d spent a lot of my career building cloud control planes from scratch. I loved the idea of an open source framework that baked in many best practices of control plane design and could be extended to control almost anything. I immediately joined the project and have been a maintainer since Crossplane v0.1.
A cloud platform is a distributed system, and distributed systems are often architecturally separated into two parts: control planes and data planes. The data plane is the system under control. It’s what provides direct business value. As for the control plane, it works like an air-traffic-control tower. This analogy is illustrated in Figure 1-1. The aircraft around the airport represent the data plane. The aircraft provide the business value - moving things around - but the air-traffic-control tower is crucial to ensure they can do so safely and efficiently.
Amazon Web Services (AWS) is another example of control planes and data planes. AWS’s data planes are the virtual machines, databases, caches, and other services folks use to build products. Each of these services has a control plane that is responsible for starting, stopping, and configuring them. When you use the AWS console or call an AWS Application Programming Interface (API), you’re interacting with one of AWS’s control planes.
You can also think of a cloud control plane as having a backend that orchestrates the data plane and a frontend that exposes an API. That’s where Crossplane comes in: it takes the Kubernetes control plane and makes both its backend and its frontend highly extensible. You can extend the backend to control any kind of system, and you can extend the frontend APIs to expose whatever concepts make sense for your organization. Figure 1-2 shows an engineer making an API call to the control plane’s frontend API, and the control plane backend orchestrating a cloud provider.
Imagine you’re part of the platform engineering team at a growing technology company—say, a music streaming service. Your team supports 40 engineers, who are split across 7 other teams. These teams deliver your company’s core product: streaming music. Perhaps they also work on social features or recommendation engines. Let's call these folks product engineers. Most of your product-engineering teams want to use PostgreSQL databases to build their features, but they’re not experts in securing and scaling them.
Your team’s job, as platform engineers, is to make it safer and more efficient for the product engineers to do their regular tasks. This is a form of force multiplication: the platform engineers multiply the effectiveness of the product engineers.
How could you make it safer and more efficient for the product engineers to provision PostgreSQL databases?
I detailed how exactly to do this in my O’Reilly report: “What Is Crossplane?: A Low-Code Framework for Building Cloud Native Control Planes”. It goes into depth about Crossplane, how a Crossplane Control Plane works and how to build one, and more. Download it here to get the full rundown of Crossplane and control planes to level up your infrastructure.
This excerpt was originally published in the O’Reilly Report: “What is Crossplane?”.
Subscribe to the Upbound Newsletter