Do I really need another tool?
As part of Xebia's Holistic Horizons Series
What is an Internal Developer Platform?
Internal Developer Platforms (IDPs) have been the ongoing trend for the past couple of years, and for good reasons. It is a transformative trend in software development, streamlining and optimising the development process.
For readers trying to grasp the concept of IDPs, imagine a scenario where a developer needs a specific set of tools and resources. Instead of navigating a complex infrastructure, they turn to an IDP — a simplified interface that offers exactly what they need with ease and efficiency. The IDP provides an abstracted layer on top of the complex infrastructure simplifying the context for the developers.
Starting this initiative is usually a huge undertaking, with the number of tools and SaaS platforms available. This creates a sense of not knowing where to start, and rightfully so. IDPs are specific to every team and every organisation, and there is no one blueprint that can be applied to everyone. The aim of this blog is to highlight one tool that can be a starting point of this initiative.
Enter Crossplane
A rising star in the IDP realm, Crossplane aims to unify resource management under a “universal control plane” rendering it a powerful tool in the diverse and fragmented world of cloud services (definitely, a breath of fresh air). It is a bold project, with a lot of nuances and is highly extensible.
Where Crossplane shines
The strength of Crossplane lies in its features. Having a “universal control plane” opens the route to standardisation across cloud providers. For example, an organisation might need to ensure that all cloud resources adhere to its own compliance standards. Crossplane allows you to define these policies centrally, ensuring consistent compliance across all cloud services. You no longer need to ensure your compliance standards are applied on each cloud provider you use; Crossplane takes care of that.
However, it’s important to acknowledge the learning curve associated with Crossplane. While its capabilities are vast, mastering its concepts can be challenging. The ROI, though, is significant. The ability to provision resources across multiple cloud providers while leveraging native Kubernetes features like namespaces for resource separation and a reconciliation loop to maintain desired states is a game changer. This capability is a stark contrast to tools like Terraform, which, while effective in defining intended state, fall short in areas like drift detection and reconciliation.
In a direct comparison between Crossplane and Terraform, setup and learning curve prove to be more difficult than that of Terraform. Crossplane lives inside Kubernetes, which by turn, is bound to introduce difficulties. As for the learning curve, it is much steeper than that of Terraform.
As for state management, Crossplane’s continuous reconciliation is one of the biggest advantages. The presence of real-time detection drift supersedes what Terraform provides.
A point of similarity between Crossplane and Terraform is the availability of providers for all major cloud providers. Both tools boast a huge number of providers that can be leveraged for resource creation.
Team Collaboration
Team collaboration is at the core of making the most out of Crossplane. It’s not just about adding another tool to the tech stack; it’s about enhancing the synergy between developers and platform teams. By listening to the developers’ needs, platform teams can create tailored Custom Resources, which are then consumed by developers.
These developers, your main stakeholders, will give you an idea of the abstraction level they are looking for. This will, in turn, guide you, as a platform team, on how to create these Custom Resources, keeping in mind the organisations’ governance and compliance, monitoring and logging, and CI/CD which creates a standardised ecosystem.
Developer Experience
Before delving into this section, a disclaimer I would like to point to is that any IDP, process improvement, or enhancement must have the developer as the main point of focus to enhance developer experience. A new shiny tool that promises everything does not enhance developer experience.
With that being said, Crossplane, done well, plays a pivotal role in shaping the developer experience in organisations. By abstracting complex cloud resources, the platform team allows developers to focus more on creating value and less on infrastructure creation or administration. This abstraction makes the developer’s life easier, simplifying access and management of resources without requiring extensive knowledge of underlying cloud platforms.
A case study published by Upbound1, the company behind Crossplane, claims that a client leveraging Crossplane, has allowed the client to save an estimated 11,000 hours of technical work. A typical dev or test server setup could take a couple of days, from opening a request, to getting access, and deploying your application. Cutting that down to mere minutes can greatly enhance the developer experience.
An important consideration here is the knowledge of Kubernetes within your organisation. You do not need to run your services on Kubernetes, but having some knowledge allows you to make the most out of Crossplane.
Where Crossplane falls short
While Crossplane shines in many aspects, as we have discovered above, it’s important to consider its potential drawbacks to provide a full picture. The most obvious challenge is the steep learning curve. Crossplane contains a wide array of concepts and nuances that require solid knowledge to fully leverage its capabilities. This complexity can be daunting for teams and organisations alike, as the initial investment in learning and adapting to Crossplane can be substantial, potentially slowing down initial adoption and integration.
Another challenge is the potential for increased operational complexity. As Crossplane excels in resource management across multiple cloud, it can introduce complexities in tracking and managing these resources. This complexity requires visibility and monitoring to ensure that things run smoothly.
Lastly, and as mentioned in the previous section, organisations not fully invested in Kubernetes might find Crossplane a bridge too far to cross. The dependency on Kubernetes, whilst considered an advantage, can introduce limitations or issues if the Kubernetes ecosystem faces any limitations or issues.
Conclusion
In conclusion, Crossplane represents a significant leap forward in the world of IDPs. Its ability to simplify, unify, and optimise resource management across diverse environments is greatly welcome. I believe that we are looking at the next big thing that should be approached with great caution but with a greater excitement.
Resources
[1] — https://resources.upbound.io/case-studies/case-study-grupo-boticario