IDPs are the sum of all the tech and tools which a platform engineering team binds into a golden path, to drive standardization and enable developer self-service throughout the entire life-cycle of an application. Portals are the user interfaces (UIs) into those platforms. They visualize service catalogs, API catalogs, microservices and their status, logs, and other business logic. However, portals are only as good as their underlying platform.
While many users enjoy using UIs, the general acceptance in the developer community is mediocre. Which is why platform engineering teams add in a code-based interaction method between developers and the platform. Humanitec’s Score (OSS) is the most commonly used approach.
How to build portals that provide value with Humanitec
The Humanitec Platform Orchestrator is often used as the configuration engine sitting behind the portals. It receives the request to create resources and configs, executes it based on the defaults provided by the platform team, and manages the life-cycle of the app and related resources. It also stores it in the service catalog, closing the loop and providing full visibility into app and infra lifecycle.
But there is way more to the Platform Orchestrator than just “a system that executes my Terraform files”. The magic sauce is our approach to configuration management called Dynamic Configuration Management (DCM). The idea is that developers tell the platform in an abstract format how their workload relates to other workloads and their dependent resources (databases, DNS, file storage, clusters etc). The Platform Orchestrator then generates all app and infrastructure configs with every new deployment. This has a wild impact on standardization and consistency, and can slash an organization's lead time and time to market by up to 40%.
Start with what you have
The reality of any engineering organization, especially in the enterprise, is legacy. You never start from scratch. There are numerous tools and resources in the cloud and on-premise, and a wide range of applications to manage. So the trick to building great platforms is to integrate with, rather than throw away existing systems.
The Humanitec Platform Orchestrator is designed to be the core configuration engine at the heart of your platform layer, glueing together your entire toolchain into clear golden paths. It reads in the combined input of the preferred interfaces of the developers (UI or portal, CLI, API or code-based with Score), it matches it to the rules and baseline templates set by the platform team, and takes care of executing it against the infrastructure. Interfaces like Score and the portal (to which the Platform Orchestrator feeds back data e.g. deployment status) allow developers to remain in their familiar workflow, while providing the right level of context they need.
By integrating both legacy systems and new tools, the Platform Orchestrator helps engineering organizations streamline their workflows and increase productivity.
Integrate and build golden paths with the Platform Orchestrator
The main challenge in platforming is how to effectively align developer requests with the platform team's response. Mediocre platforms rely on pre-packaged solutions called "service catalogs". These catalogs provide templates for fresh microservices that rely on specific configs, such as PostgresDB. Once developers use these templates, the platform team is off the hook and developers must handle everything on their own.
However, platforms that use proper orchestration and DCM treat each deployment as day 0. This means generating a full representation of the app and infrastructure configs with every single deployment. This approach has several advantages, including:
- Significant impact on standardization and maintainability (95% reduction in config files)
- High rate of developer self-service and reduction in repetitive requests to Ops teams
- Lower change failure rate and a significant drop in security incidents
By using proper orchestration and configuration management, we can drastically reduce lead time and time to market.
Simplify adoption with code-based interaction
We strongly believe that the interaction method between developers and their platforms should be primarily code-based. This not only simplifies the adoption process, it meets developers where they are. Our belief is further reinforced by the fact that developers prefer to use reusable industry standards instead of learning quirky new YAML formats developed in-house.
To address this issue, we have developed Score, which has already been adopted by hundreds of teams. It is a way for developers to express their workload dependencies in a generalized manner. For instance, a Score file may show dependency on a resource DB of Postgres (not a specific RDS DB for instance, just in general a Postgres). With Score, you only need one Score file per workload repository, as it replaces all other config formats and works across all environments. Score optimally integrates with developer portals as it’s packaged as code.
The Score file is sent through your CI pipelines and reaches the Platform Orchestrator. The Platform Orchestrator follows an RMCD pattern, which stands for Read, Match, Create, and Deploy.
Firstly, the Platform Orchestrator reads your abstract request, and matches the context (such as deploying to a staging environment) with the Resource Definitions and default configurations provided by the platform engineering team.
Next, it creates app and infrastructure configs just in time with the deployment. The Platform Orchestrator can create, update, wire the infrastructure, and perform the deployment of the image. It can also be used in combination with a CD engine. This deployment process is identical whether you’re deploying to dev, launching a new service, environment, or moving towards production. The only difference is the context of the deployment, all of which is handled by a single file.
“Teach” the Orchestrator the rules of your platform
The Platform Orchestrator is a powerful tool that can be configured to perform a range of tasks, from deploying workloads to executing web-hooks and creating resources. To make the most of this tool, it is essential to provide clear instructions on what it should do and when.
One of the easiest ways to achieve this is by using the Humanitec Terraform Provider. This tool enables users to configure the Platform Orchestrator for specific situations and define the resources it should create or update. With this provider, users can create both app and infrastructure configurations, allowing for maximum flexibility and control.
In summary, the Platform Orchestrator is a versatile tool that can be tailored to meet the needs of any project. By using the Humanitec Terraform Provider, users can configure this tool to perform specific tasks, ensuring that it operates efficiently and effectively.
The Orchestrator is API first, which means you can build and extend whatever interface you need for your developers. This ranges from the Orchestrator UI to a CLI or any service catalog and developer portal, such as Backstage, Compass, Port or Cortex.
Get your first version of a platform in one day with our reference architectures
After helping a large number of teams build their Internal Developer Platforms we started to identify common patterns. We’ve summarised our learnings in a reference architecture tailored to your preferred cloud or on-prem environment. Check them out, we hope they’ll serve you well!