In autumn 2022, I met with colleagues to kick off an exciting internal project. Our goal was to design a blueprint for a platform that could guide implementations across our organisation and for our clients. We wanted to practise what we preach. Code-named “Unox” (inspired by a Dutch soup), the project represents a hearty blend of ideas and technologies.
Our vision for Project Unox is to create a self-service platform where developers can securely build and deploy cloud-native applications. By using top techniques, we’re shaping a robust solution architecture.
Why build a platform?
A key question arises: why treat a platform as a product? Many organisations already have infrastructure and tools, but viewing the platform as a product offers distinct advantages. In my previous post, I explored Internal Developer Platforms and Golden Paths. Here, I summarise the main benefits, which centre around two key goals:
Speed
Do you want to empower developers, streamline processes, and boost productivity? By treating the platform as a product, you help developers focus on core tasks. Golden Paths offload common services, accelerating product development.
Standardisation
Does your organisation have multiple tools managed by different teams? A unified platform provides a consistent experience, streamlining your IT environment and simplifying operations.
Key building blocks of platform solution architecture
A developer platform varies based on context, but it generally supports application development with essential building blocks. For cloud-native applications, these include compute environments, pipeline runners, storage, messaging queues, identity management, security, and observability. Each component might be provided by the platform itself or by external teams or providers.
Our platform architecture, as shown in the image above, defines each capability needed for a robust platform. Interfaces connect users to services through a portal, documentation, and APIs, forming a user-friendly environment. The diagram illustrates how each building block maps to specific cloud-native technologies, creating a modular and adaptable framework.
Technology stack and platform capabilities
Below is a table that maps our chosen technologies to each capability. These technologies are at various stages of implementation and will evolve as the platform matures.
Capability | Description | Technology |
---|---|---|
Documentation & Portal | Developer guides, templates, and APIs | GitHub, Backstage |
Compute, Network, Storage | Run applications, connect components, store data | Azure Kubernetes Services, Azure DNS, Azure Storage |
Source Code & Artifacts | Store code and secure published artifacts | GitHub, Helm, Terraform, Devcontainers, GHCR Docker Registry |
Pipelines & Reconcilers | Automate delivery with canary and feature flags | ArgoCD, GitHub Actions |
Observability | Track metrics and analytics | OpenTelemetry, Elastic, Fluentd, Grafana |
Identity & Access | Secure identity for users and services | GitHub OAuth, Cert-manager, Keycloak |
Secrets | Manage locators and access to resources | Vault |
Policy & Scanning | Enforce runtime policies and check vulnerabilities | Open Policy Agent, Kubescape |
Implementing platform solution architecture effectively
We followed several principles to ensure we build a resilient and well-architected platform.
Everything in Git
Every element of our platform is defined in code and stored in GitHub. Starting with Git ensures consistency, traceability, and reliability.
Customer-driven development
We use a problem-driven approach, addressing specific needs with each feature. This requires engaging with customers and end-users at every stage to build a solution that adapts as needs evolve.
Keep it simple
The cloud-native toolset is vast, so we focus on what’s necessary. By keeping simplicity in mind, we avoid scope creep and unnecessary complexity.
Inner source model
We embraced inner sourcing, storing code in a private GitHub repository. This connects us with end-users who can contribute directly. Inner sourcing also motivates us to document thoroughly and write accessible code.
What’s next for Project Unox?
Project Unox serves as a blueprint that we plan to open-source once feature-complete. Our current focus is on refining documentation and enhancing readability. The project has already become a foundational guide for several clients in various stages of platform implementation.
Stay tuned for more updates as we refine our platform solution architecture and explore ways to enhance developer experiences in cloud-native applications.
Want to learn more about developer platforms?
Check out TechRadar by Devoteam to see what our experts say about its viability in the market.