Developing effective interfaces in platform engineering involves transitioning from custom, manual processes to standardized and consistent solutions that streamline provisioning and service requests. This article explores the stages of interface development, focusing on setting up development environments and diagnosing application behavior.
Custom processes
A collection of varying processes exists to provision different capabilities and services, but the consistency of the interface isn't considered. Custom tailor-made processes address the immediate needs of individuals or teams and are reliant on manual intervention even if the provider uses some automated implementation scripts.
Knowledge of how to request these solutions is shared from person to person. The process for requesting a service lacks standardization and consistency. Provisioning and using a platform service likely requires deep support from the capability provider.
Lack of central requirements and standards makes this level appropriate when the company hasn't yet identified and documented expectations. It can be particularly effective for teams at early stage companies or platform efforts. In these environments teams are provided the freedom to evolve processes and capabilities to their needs, allowing them to deliver more quickly and pay the price of standardization only when necessary later on.
Set up development environment: Individual engineers piece together the steps required to set up an environment by asking colleagues, finding documentation, following their own known practices.
Diagnose application behavior: Engineers choose their own tools and process for diagnosing behavior. They're responsible for taking steps to access application and logs.
Local standards
Engineers and engineering teams proactively but informally define standards for different capabilities and services so as to increase the amount of knowledge sharing that can take place within the organization. Informal support communities spring up around these standards but this is dependent on resources and commitment from individuals and individual teams.
Set up development environment: Individual teams define their own tools and processes and attempt to
ensure that engineers within teams stick to these processes. Might be via documentation or containers but the choice of how to document tools and processes is driven by the team.
Diagnose application behavior: Individual teams define their own practices and processes for
diagnosing behavior. Teams rely on devops/IT team for access to deployed resources.
Consistent, standard interfaces for provisioning and observing platforms and capabilities exist and meet broad needs. Users are able to identify what capabilities are available and are enabled to request capabilities that they require.
Paved roads or golden paths, in the form of documentation and templates, are provided. These resources define how to provision and manage typical capabilities using compliant and tested patterns. While some users are able to use these solutions on their own, the solutions often still require deep domain expertise and therefore support from maintainers is still vital.
Significant management required from central team to maintain templates/documentation especially in response to changing needs from teams.
Set up development environment: Some investment in a common path with documentation or templates
defining the required tools and processes across the organization. Teams can drift from standards as they modify templates but do not/cannot merge back into centralized team.
Diagnose application behavior: Standard practice defined for accessing and diagnosing deployed
resources.
Self service solutions
Solutions are offered in a way that provides autonomy to users and requires little support from maintainers. The organization encourages and enables solutions to provide consistent interfaces that enable discoverability and portability of user experience from one capability to another. While self-service, the solutions do require team awareness and implementation. In order to improve this experience, there may be a guided and simplified internal language which enables users to adopt and integrate platform capabilities more quickly. This generates a user-centric, self-serviceable, and
consistent collection of capabilities.
Set up development environment: Engineering teams depend on platform to set up development
environments. Affordance exists to discover available resources. Engineering teams adopt the platform exclusively for all interactions. The platform aids knowledge sharing through the discovery and
modification of new and existing templates, continually increasing the value offered by the platform.
Diagnose application behavior: Tools and services for observing resources/capabilities provided
through platform on demand. Platform provides affordance for diagnosing and observing resources/capabilities.
Integrated services
Platform capabilities are transparently integrated into the tools and processes that teams already use to do their work. Some capabilities are provisioned automatically, such as observability or identity
management for a deployed service. When users hit the edges of the provided services, there's an opportunity to move past automated solutions and customize for their needs without leaving the internal
offerings because platform capabilities are considered building blocks. These building blocks are used to build transparent and automatic compositions to meet the higher-level use cases while enabling deeper customization where necessary.
Internal platform teams can determine what capabilities are working well for the organization and can use this knowledge to determine what areas to invest in to further improve the platform.
Capabilities can be extended and packaged in multiple ways, offering maximum flexibility to provision, manage, and observe resources and capabilities.
Set up development environment: Platform capabilities are integrated into the tools and processes that
teams already use to do their work. Can be used via CLI, IDE etc.
Diagnose application behavior: Platform automatically sets up observability capabilities for each deployed application. Platform provides affordance for interacting with diagnostic data and deployed application.