Platform engineering involves creating and managing a set of tools, services, and processes that enable developers to focus on building applications without worrying about the underlying infrastructure. The specific definition of a platform can vary depending on the needs and goals of an organization.
The Cloud Native Computing Foundation (CNCF) has played a significant role in shaping the platform engineering landscape. The CNCF ecosystem offers a wide range of tools and projects, including Kubernetes, Prometheus, Envoy, and many more. However, the complexity of the CNCF landscape can make it challenging for teams to select the right tools and build a cohesive platform.
An opinionated platform approach involves making deliberate choices about the tools and technologies to be used, providing a more streamlined and predictable experience for developers. By adopting an opinionated platform, organizations can reduce complexity, improve consistency, and accelerate development cycles.
The Way To A Golden Path
Opinionated platforms can emerge in various ways. They can be built and managed by teams from the ground up.
For organizations with unique requirements or a high degree of control, building a custom platform can be a viable option. This approach involves selecting and integrating individual components such as Buildpacks, Harbor, Argo, Kyverno, and others. While custom platforms offer flexibility, they require significant investment in development, maintenance, and ongoing management.
To simplify the development process and abstract away some of the complexities of Kubernetes, teams can utilize technologies like Dapr and Crossplane. Dapr provides a set of runtime APIs for building distributed applications, while Crossplane offers a declarative API for managing cloud resources. These tools can help speed up development and reduce the cognitive burden on developers.
For organizations that require a fully-managed platform experience, open source tools like Cloud Foundry Korifi and Radius can be considered. These platforms provide a complete application deployment environment, abstracting away many of the underlying infrastructure details. While these tools offer convenience, they may limit flexibility and control.
Platform Engineering Self Evaluation
The optimal platform engineering strategy depends on various factors, including the organization’s size, development culture, and specific needs. Consider the following questions when making your decision.
- Level of control: Do you need a high degree of control over the platform, or are you comfortable with a more managed approach?
- Complexity: How complex are your applications and infrastructure requirements?
- Development speed: How important is it to accelerate development cycles?
- Cost: What is your budget for platform engineering?
By carefully evaluating these factors and considering the options available, organizations can select the platform engineering approach that best aligns with their goals and objectives.