Data as of Aug 25, 2026 · Based on 324 AI responses from ChatGPT Search and Google AI Mode · See how Parse measures this
Brands AI recommends here
Named in 78% of answers
Argo CD fits teams that want GitOps-driven, declarative continuous delivery for Kubernetes so deployments are versioned, auditable, and automatically reconciled from Git; consider Flux as an alternative if preferred.
Named in 78% of answers
Backstage is the best fit when you need a centralized developer portal and software catalog to map services, ownership, docs and templates; it's powerful but requires significant engineering effort to customize.
Named in 77% of answers
Crossplane is best when you want Kubernetes-native self-service infra: it turns clusters into a control plane so developers can request managed resources via Kubernetes APIs; Terraform remains an alternative for non‑Kubernetes workflows.
Named in 70% of answers
For an internal developer platform (IDP), I’d avoid thinking of it as “pick an IDP product.” The strongest open-source stacks are usually **composed of a few focused tools**: a developer portal, an automation/control plane, GitOps delivery, policy, and observability.…
For an internal developer platform (IDP), I’d avoid thinking of it as “pick an IDP product.” The strongest open-source stacks are usually composed of a few focused tools: a developer portal, an automation/control plane, GitOps delivery, policy, and observability.
A good starting stack for a platform engineering team would look like this:
Use it for:
Why it’s a strong default:
Watch-outs:
My recommendation: Start with Backstage only after you have at least one automated golden path. A portal that just links to dashboards and tickets won’t create much leverage.
Use it for:
Typical flow:
Developer
|
Backstage template
|
Git repository created
|
CI builds image
|
Git change updates deployment config
|
Argo CD syncs cluster
Argo CD is often paired with Backstage because Backstage provides the developer-facing workflow while Argo CD handles the deployment control loop.
Alternative:
Use it for:
Instead of exposing:
terraform apply
aws rds create-db-instance
kubectl apply -f database.yaml
developers get:
apiVersion: platform.example.com/v1
kind: Database
spec:
engine: postgres
size: small
The platform team owns the implementation details.
Crossplane is especially attractive if Kubernetes is already your operational substrate.
Alternative:
Kratix is worth evaluating if you want to build a “platform as a product” model.
Conceptually:
Developer asks:
"I need a production PostgreSQL database"
Platform provides:
"Postgres capability"
Implementation:
- cloud provider
- policies
- backups
- monitoring
- security controls
It packages platform capabilities into reusable building blocks.
Use policy enforcement for:
Example:
Every production workload must have an owner label and a monitoring annotation. This keeps your golden paths from being bypassed.
A typical stack:
The IDP goal is not “show every dashboard.” It’s exposing useful service-level signals:
For a Kubernetes-heavy organization, I’d start here:
Developers
|
v
Backstage Portal
|
+------------+------------+
| |
v v
Service Templates Platform APIs
| |
v v
Git Crossplane
| |
v v
Argo CD -------------- Kubernetes
|
v
Monitoring + Policy + Security
This “Backstage + Argo CD + Crossplane + policy” pattern is a common open-source IDP foundation.
For most platform teams today:
| Capability | Tool |
|---|---|
| Developer portal | Backstage |
| GitOps delivery | Argo CD |
| Infrastructure APIs | Crossplane |
| Policy | Kyverno |
| Metrics | Prometheus |
| Dashboards | Grafana |
| Telemetry | OpenTelemetry |
| Kubernetes | Kubernetes |
| Packaging/platform workflows | Kratix (optional) |
The biggest mistake I see is starting with the portal UI. The highest-value IDPs start by eliminating painful developer workflows, then expose those workflows through a portal.
Building an Internal Developer Platform (IDP) is less about buying or deploying a single monolithic tool and more about assembling a cohesive stack across the **Developer Portal**, **Infrastructure Orchestration** , and **GitOps/Delivery**…
Building an Internal Developer Platform (IDP) is less about buying or deploying a single monolithic tool and more about assembling a cohesive stack across the Developer Portal, Infrastructure Orchestration , and GitOps/Delivery layers.
The industry-standard open-source tools to start with are categorized below by their function in the IDP architecture:
Recommended Minimum Viable Platform (MVP) Stack
If you are starting small and want to avoid massive cognitive load for your own platform team, a proven baseline open-source recipe is:
To help narrow down which toolchain fits your constraints, tell me:
If you're building an IDP from scratch, I'd resist the temptation to assemble a giant "platform stack." Start with **a developer portal + golden paths + GitOps**, then add infrastructure abstractions once you know what developers actually need. ## My recommended open-source starting stack Layer | Tool | Why I'd pick it
If you're building an IDP from scratch, I'd resist the temptation to assemble a giant "platform stack." Start with a developer portal + golden paths + GitOps, then add infrastructure abstractions once you know what developers actually need.
| Layer | Tool | Why I'd pick it |
|---|---|---|
| Developer portal / catalog | backstage.io | Strongest ecosystem for service ownership, discovery, templates, docs, and integrations |
| Container orchestration | kubernetes.io | The common substrate if you're already cloud-native |
| GitOps / deployment | argo-cd.readthedocs.io | Declarative, Git-driven application delivery |
| Infrastructure / cloud APIs | crossplane.io | Turns infrastructure into composable, self-service APIs |
| IaC | opentofu.org | Open-source Terraform-compatible IaC |
| Secrets | external-secrets.io | Keeps secrets in dedicated secret managers rather than Git/Kubernetes manifests |
| Policy | openpolicyagent.org | General-purpose policy engine for platform guardrails |
| Observability | opentelemetry.io | Vendor-neutral telemetry foundation |
I'd make Backstage the front door, rather than trying to make it the platform itself.
Its Software Catalog gives you a centralized model of services, libraries, websites, pipelines, ownership, etc., while its Software Templates provide the scaffolding mechanism for standardized projects.
For example:
Developer
│
▼
┌──────────────────────────────┐
│ Backstage │
│ │
│ Catalog │ Templates │ Docs │
└──────┬──────────┬────────────┘
│ │
▼ ▼
Git repo Git repo
│
▼
Argo CD
│
▼
Kubernetes
A first golden path might literally be:
Create service → choose language → repository created → CI configured → deployment manifests created → Argo CD deploys it → service appears in catalog. Backstage templates are YAML-defined and can execute actions such as publishing a repository, making them a good fit for this workflow.
Don't have Backstage directly "deploy to Kubernetes."
Instead:
Backstage
│
│ creates/updates Git
▼
Git
│
│ desired state
▼
Argo CD
│
▼
Kubernetes
That separation is important. Backstage is your developer experience, while Argo CD is your reconciliation/deployment mechanism.
It also makes the platform much easier to reason about: Git is the audit trail and Argo CD continuously makes reality match desired state.
This is where the IDP starts becoming interesting.
crossplane.io is specifically designed as a control-plane framework for platform engineering. It lets you create higher-level APIs over infrastructure and cloud resources, with reconciliation and drift correction.
Instead of exposing:
AWS RDS
AWS IAM
AWS S3
AWS networking
Kubernetes
Terraform
...
to developers, you can expose something like:
kind: PostgresDatabase
spec:
size: small
environment: production
Your platform team owns what that abstraction means.
That's a major IDP principle:
Don't expose infrastructure primitives when you can expose a product-oriented API. Crossplane's current documentation explicitly positions it around building custom control planes and APIs for platforms.
This is probably the biggest recommendation I'd give you.
I'd start with:
Phase 1
Backstage
+
GitHub/GitLab
+
CI
+
Argo CD
+
Kubernetes
Get 2–3 golden paths working extremely well.
For example:
Each should produce a production-ready service with:
Then watch what platform engineers repeatedly have to do manually.
Those repetitions are candidates for Crossplane APIs, Backstage actions, or platform automation.
I'd eventually aim for something like:
┌─────────────────┐
│ Developers │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Backstage │
│ │
│ Catalog │
│ Templates │
│ Docs │
│ Self-service │
└───────┬─────────┘
│
┌────────────┴────────────┐
▼ ▼
Application Git Platform APIs
│ │
▼ ▼
Argo CD Crossplane
│ │
▼ ▼
Kubernetes Cloud resources
│
┌─────────┼──────────┐
▼ ▼ ▼
Services Workers Jobs
│
▼
OpenTelemetry
│
▼
Observability stack
And put OPA/policy enforcement underneath the whole thing, rather than relying on developers to remember platform rules.
I'd avoid initially building:
Those things can all become useful later, but they are easy ways to spend a year building infrastructure that developers don't actually want.
If I were the platform engineer starting Monday, I'd choose:
Backstage + Kubernetes + Argo CD + OpenTofu + OpenTelemetry, with Crossplane introduced once there are clear self-service infrastructure use cases.
The first milestone wouldn't be "we have an IDP."
It would be:
A developer can go from zero to a production-quality service without talking to the platform team. That's the real measure of whether the IDP is working.
That separation is important. Backstage is your developer experience, while Argo CD is your reconciliation/deployment mechanism.
It also makes the platform much easier to reason about: Git is the audit trail and Argo CD continuously makes reality match desired state.
This is where the IDP starts becoming interesting.
crossplane.io is specifically designed as a control-plane framework for platform engineering. It lets you create higher-level APIs over infrastructure and cloud resources, with reconciliation and drift correction.
Instead of exposing:
AWS RDS
AWS IAM
AWS S3
AWS networking
Kubernetes
Terraform
...
to developers, you can expose something like:
kind: PostgresDatabase
spec:
size: small
environment: production
Your platform team owns what that abstraction means.
That's a major IDP principle:
Don't expose infrastructure primitives when you can expose a product-oriented API. Crossplane's current documentation explicitly positions it around building custom control planes and APIs for platforms.
This is probably the biggest recommendation I'd give you.
I'd start with:
Phase 1
Backstage
+
GitHub/GitLab
+
CI
+
Argo CD
+
Kubernetes
Get 2–3 golden paths working extremely well.
For example:
Each should produce a production-ready service with:
Then watch what platform engineers repeatedly have to do manually.
Those repetitions are candidates for Crossplane APIs, Backstage actions, or platform automation.
I'd eventually aim for something like:
┌─────────────────┐
│ Developers │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Backstage │
│ │
│ Catalog │
│ Templates │
│ Docs │
│ Self-service │
└───────┬─────────┘
│
┌────────────┴────────────┐
▼ ▼
Application Git Platform APIs
│ │
▼ ▼
Argo CD Crossplane
│ │
▼ ▼
Kubernetes Cloud resources
│
┌─────────┼──────────┐
▼ ▼ ▼
Services Workers Jobs
│
▼
OpenTelemetry
│
▼
Observability stack
And put OPA/policy enforcement underneath the whole thing, rather than relying on developers to remember platform rules.
I'd avoid initially building:
Those things can all become useful later, but they are easy ways to spend a year building infrastructure that developers don't actually want.
If I were the platform engineer starting Monday, I'd choose:
Backstage + Kubernetes + Argo CD + OpenTofu + OpenTelemetry, with Crossplane introduced once there are clear self-service infrastructure use cases.
The first milestone wouldn't be "we have an IDP."
It would be:
A developer can go from zero to a production-quality service without talking to the platform team. That's the real measure of whether the IDP is working.
Building an Internal Developer Platform (IDP) is less about buying a single out-of-the-box product and more about stitching together the right open-source control planes, portals, and engines . To avoid drowning in maintenance overhead or building an abandoned portal, it helps to categorize your stack by its core…
Building an Internal Developer Platform (IDP) is less about buying a single out-of-the-box product and more about stitching together the right open-source control planes, portals, and engines . To avoid drowning in maintenance overhead or building an abandoned portal, it helps to categorize your stack by its core functions: The Portal (The Front Door), The Orchestrator (The Engine) , and The Delivery/Ops Layer.
This is what your developers actually look at and interact with daily—their software catalog, documentation hub, and action-runner.
Instead of forcing developers to write raw Terraform or raw Kubernetes manifests for every microservice, an orchestrator abstracts day-to-day deployments into application specs.
Once a developer triggers a build or updates a service definition, something has to safely push that state to your clusters.
Recommended Starting Strategy
Don't try to deploy all of this on Day 1. A sustainable rollout typically follows this path:
To help narrow down where you should start, tell me:
Building an Internal Developer Platform (IDP) is less about buying or deploying a single monolithic tool and more about assembling a cohesive **product stack** . A functional IDP generally requires three core layers: a **Portal/Catalog** (the UI/UX layer), a **Control Plane/Orchestrator** (the logic and abstraction…
Building an Internal Developer Platform (IDP) is less about buying or deploying a single monolithic tool and more about assembling a cohesive product stack . A functional IDP generally requires three core layers: a Portal/Catalog (the UI/UX layer), a Control Plane/Orchestrator (the logic and abstraction layer), and a Delivery/Infra Layer (the execution engine).
The best open-source tools to start with, categorized by their layer in the architecture, include:
If you'd like, let me know:
I can help you sketch out a minimal viable architecture (MVA) using a specific subset of these tools.
For a platform engineering team building an internal developer platform (IDP), I’d avoid starting with a “portal-first” mindset. The best open-source IDPs are usually assembled from a few strong primitives: 1. **Developer experience layer** (catalog, templates, self-service) 2. **Delivery layer** (GitOps, deployments)
For a platform engineering team building an internal developer platform (IDP), I’d avoid starting with a “portal-first” mindset. The best open-source IDPs are usually assembled from a few strong primitives:
A strong starting stack looks like this:
| Capability | Recommended OSS tools | Why |
|---|---|---|
| Developer portal / service catalog | Backstage | Service catalog, ownership, templates, docs, plugins |
| GitOps delivery | Argo CD or Flux | Declarative Kubernetes deployments |
| Infrastructure APIs | Crossplane | Turn cloud resources into platform APIs |
| Infrastructure as Code | OpenTofu | Provision foundational infrastructure |
| Kubernetes packaging | Helm | Standard application packaging |
| Policy enforcement | Kyverno or Open Policy Agent | Guardrails and compliance |
| Secrets | OpenBao or SOPS | Secret storage/encryption |
| Observability | OpenTelemetry + Prometheus + Grafana | Metrics, traces, dashboards |
For a Kubernetes-heavy organization, I would start with:
Developers
|
Backstage
|
+------------+-------------+
| |
Software templates Service catalog
|
v
Git repositories
|
v
Argo CD
|
v
Kubernetes clusters
|
|
Crossplane / OpenTofu
|
v
Cloud resources (DBs, queues, buckets, networks)
This combination is popular because each tool has a clear responsibility: Backstage handles developer experience, Argo CD handles application reconciliation, and Crossplane/OpenTofu handle infrastructure provisioning.
Do not start by cataloging every service.
Examples:
Each template should generate:
Backstage templates are particularly useful here.
Expose products, not primitives.
Good:
Create PostgreSQL database
Create Redis instance
Create S3 bucket
Create Kubernetes namespace
Less ideal:
Give developers Terraform access
Crossplane is designed around this “platform API” model.
A common pattern:
Developer request
|
v
Backstage template
|
v
Git PR
|
v
Argo CD reconciliation
|
v
Environment updated
This gives you auditability and rollback.
Weeks 1–4
Weeks 5–8
Weeks 9–12
If you have a dedicated platform team and Kubernetes is your runtime:
Backstage + Argo CD + Crossplane + OpenTofu + Kyverno + OpenTelemetry
That gives you a modern open-source foundation without locking you into a commercial IDP vendor.
If you are a smaller team (<5 platform engineers), I’d simplify further and start with:
Argo CD + OpenTofu + a small set of Backstage templates, then add Crossplane once you have repeated infrastructure requests.
Flux
Building an Internal Developer Platform (IDP) requires separating the **developer-facing portal/interface** from the **platform backend/engine** (the abstraction and provisioning layer).[](https://www.cycloid.io/blog/top-11-internal-developer-platforms-idps-in-2026/)…
Building an Internal Developer Platform (IDP) requires separating the developer-facing portal/interface from the platform backend/engine (the abstraction and provisioning layer).
The industry standard approach—frequently referred to as the BACK Stack (Backstage + Argo CD + Crossplane + Kyverno)—relies entirely on battle-tested, open-source CNCF projects.
Phase 1: The Developer-Facing Portal (The "Front Door")
Phase 2: The Infrastructure & Orchestration Engine (The "Brain")
Phase 3: Guardrails & Policy Enforcement
A Pragmatic Strategy to Start
To help narrow down the right architectural footprint, tell me:
If you're building an IDP from open-source components, I’d avoid trying to find one “IDP product.” A good platform is usually a **thin developer experience layer over a few strong primitives**. ### My 2026 starting stack | Concern | Tool | Why I'd start here |
If you're building an IDP from open-source components, I’d avoid trying to find one “IDP product.” A good platform is usually a thin developer experience layer over a few strong primitives.
| Concern | Tool | Why I'd start here |
|---|---|---|
| Developer portal/catalog | Backstage | Mature ecosystem, software catalog, ownership, templates, docs |
| Infrastructure provisioning | OpenTofu | Strong IaC foundation; reusable modules and broad provider ecosystem |
| Kubernetes/platform APIs | Crossplane | Excellent when you want developers consuming higher-level platform APIs rather than raw cloud resources |
| GitOps deployment | Argo CD | Mature declarative CD and a natural fit with Kubernetes |
| Documentation | Backstage TechDocs | Keeps docs close to the code and discoverable from the catalog |
| Containers/orchestration | Kubernetes | The underlying control plane if you're Kubernetes-centric |
The key is not to deploy all of these on day one.
Backstage is probably the best open-source starting point for the developer-facing portion of an IDP. Its core pieces are the Software Catalog, Software Templates, and TechDocs.
The important thing is to make the portal answer:
“What do I own, how do I deploy it, what dependencies does it have, and how do I create another one?”
rather than becoming a giant dashboard.
I'd initially implement:
Backstage templates can actually generate repositories and standardize things like language, CI, Dockerfiles, deployment configuration, ownership, and documentation.
If your platform needs to provision AWS/Azure/GCP resources, OpenTofu is a strong open-source foundation.
It gives you the familiar write → plan → apply workflow, reusable modules, state management, and providers for infrastructure and SaaS systems.
The important IDP design decision is:
Don't expose OpenTofu directly to application developers.
Instead:
Developer
↓
Backstage
↓
Golden path
↓
Platform API / automation
↓
OpenTofu modules
↓
Cloud infrastructure
The platform team owns the complexity; developers select things like:
service: payments-api
database: postgres
environment: production
region: us-east-1
rather than writing VPC and IAM configuration.
This is where I'd distinguish a developer portal from an actual platform.
Crossplane lets you build custom APIs on top of Kubernetes and use them to provision/manage cloud resources. Its current model is explicitly aimed at building control planes and higher-level abstractions.
For example, instead of exposing:
aws:
vpc: ...
subnet: ...
iam: ...
rds: ...
you can expose something conceptually like:
apiVersion: platform.example.com/v1
kind: PostgreSQLDatabase
spec:
size: small
environment: production
Crossplane then translates that abstraction into the underlying infrastructure.
That's extremely powerful—but don't introduce Crossplane merely because you're building an IDP. If OpenTofu plus automation solves your initial use cases, start there.
If Kubernetes is part of your platform, Argo CD is the obvious open-source GitOps layer I'd evaluate first.
It treats application configuration and environments as declarative, version-controlled state and continuously reconciles Kubernetes toward that state.
A common flow becomes:
Backstage
↓
Create service
↓
Git repository
↓
CI builds image
↓
GitOps repository updated
↓
Argo CD
↓
Kubernetes
This separation is useful: Backstage is the UX, Git is the desired-state interface, and Argo is the reconciler.
For a new platform team, I'd phase it like this:
Phase 1 — Developer experience
Backstage
├── Catalog
├── Templates
└── TechDocs
Give developers one excellent golden path—for example:
“Create a production-ready REST service.”
Have that template create the repo, CI pipeline, Dockerfile, Kubernetes manifests/Helm, ownership metadata, docs, monitoring hooks, and deployment configuration.
Phase 2 — Self-service infrastructure
Backstage
↓
Platform automation
↓
OpenTofu
↓
Cloud
Add things like databases, buckets, queues, DNS, IAM roles, and environments.
Phase 3 — Kubernetes control plane
Backstage
↓
Crossplane APIs
↓
Cloud + Kubernetes
Introduce Crossplane when you have enough repeated infrastructure patterns that creating proper platform APIs starts paying off.
Phase 4 — GitOps
Backstage → Git → Argo CD → Kubernetes
Make deployment boring, reproducible, auditable, and self-healing.
I'd resist the temptation to assemble 20 CNCF projects.
In particular, don't start by building:
Your first milestone should be one golden path that developers genuinely prefer over doing the work themselves.
The most important architectural principle is:
Backstage should be the front door, not the platform itself.
Backstage gives you the catalog, UX, templates and documentation; OpenTofu/Crossplane/Argo CD provide the actual control and automation underneath it. That separation keeps the IDP from turning into a giant bespoke application.
If I were starting a platform team from scratch today, my default would be Backstage + OpenTofu + Argo CD + Kubernetes, adding Crossplane only once the need for higher-level infrastructure APIs becomes clear.
Building an internal developer platform (IDP) requires a strong foundation. Here are the best open-source tools categorized by their core function in the platform…
Building an internal developer platform (IDP) requires a strong foundation. Here are the best open-source tools categorized by their core function in the platform ecosystem:
To help you narrow down the stack, could you share:
If you're building an IDP from scratch, I'd **avoid trying to find one tool that does everything**. The strongest open-source approach is a small set of composable primitives, with your platform team owning the developer-facing abstractions. ### My default open-source stack | Layer | Tool | Why I'd start with it |
If you're building an IDP from scratch, I'd avoid trying to find one tool that does everything. The strongest open-source approach is a small set of composable primitives, with your platform team owning the developer-facing abstractions.
| Layer | Tool | Why I'd start with it |
|---|---|---|
| Developer portal | Backstage | Service catalog, templates, docs, ownership, integrations |
| Infrastructure provisioning | Crossplane | Turn infrastructure into self-service APIs rather than exposing raw cloud APIs |
| IaC | OpenTofu | Mature Terraform-compatible IaC foundation |
| Deployment/GitOps | Argo CD | Declarative application delivery and drift reconciliation |
| Policy | Kyverno | Enforce platform guardrails without making developers learn policy internals |
| Observability | OpenTelemetry | Vendor-neutral traces, metrics and logs |
| Runtime | Kubernetes | The substrate if your workloads are already cloud-native |
Backstage is probably my first choice for the front door of the IDP.
It gives you a software catalog, ownership metadata, templates/scaffolding, and TechDocs. Its plugin architecture also lets you integrate the rest of your platform.
The important architectural distinction is:
Backstage should be the UI/API experience, not the thing that actually provisions your infrastructure.
For example:
Create service → Backstage template → Git repo → CI → Argo CD → Kubernetes
and:
Create PostgreSQL → Backstage → platform API → Crossplane → cloud database
That's a much cleaner separation than stuffing infrastructure logic into Backstage plugins.
Crossplane is the tool I'd investigate most seriously if your goal is a real platform, rather than a collection of scripts.
Crossplane lets you define your own APIs/abstractions and have controllers reconcile them into underlying infrastructure. You can therefore expose something like:
apiVersion: platform.example.com/v1
kind: Application
spec:
environment: production
database:
size: medium
ingress:
public: true
without exposing developers to AWS/GCP/Azure primitives.
That's exactly the "platform as a product" model: your platform team owns the API and guardrails, while developers consume a relatively small set of golden-path abstractions. Crossplane explicitly supports this control-plane/API approach.
OpenTofu is the obvious open-source IaC choice if you're starting fresh or want a Terraform-compatible ecosystem.
It supports cloud and on-prem infrastructure through providers and has a large existing provider/module ecosystem.
I'd use it for things such as:
Then use Crossplane above it where you need a self-service API.
You don't necessarily need to make Crossplane replace OpenTofu everywhere.
Argo CD is my default choice for Kubernetes application delivery.
It's a GitOps controller that continuously compares the desired state in Git with live Kubernetes state and reconciles differences. It supports Helm, Kustomize, Jsonnet and plain manifests.
A good IDP shouldn't ask developers to understand:
kubectl
helm
Kustomize
Argo ApplicationSets
cluster credentials
namespace provisioning
Instead:
Developer
↓
Backstage
↓
"Deploy service"
↓
Git
↓
Argo CD
↓
Kubernetes
The platform owns the complexity.
I'd add a policy engine once you have the basic golden path working.
For example:
The key principle is paved roads, not walls.
Let developers move quickly inside the platform's supported paths, and use policy to prevent genuinely dangerous configurations.
OpenTelemetry is an excellent platform primitive because it keeps your application teams independent of a particular observability vendor.
It provides vendor-neutral APIs/SDKs and a Collector for receiving, processing and exporting telemetry.
Your platform can therefore provide:
New service
↓
standard instrumentation
↓
OpenTelemetry
├── metrics
├── traces
└── logs
and let the underlying backend evolve independently.
I wouldn't deploy all of those on day one.
I'd start with:
Phase 1
GitHub/GitLab
│
├── CI
│
↓
Argo CD
│
↓
Kubernetes
plus Backstage as the developer portal.
Get one golden path working extremely well:
"Create a service → get repo → CI → deploy to dev → promote to production → get docs/ownership/observability automatically."
Then add:
Phase 2
Backstage
/ \
↓ ↓
Application Infrastructure
↓ ↓
Argo CD Crossplane
↓ ↓
Kubernetes / Cloud
Then add policy, secrets, observability, cost management, environments, and more sophisticated platform APIs.
Don't start by building a giant "platform" with 30 Kubernetes operators and a huge Backstage customization.
Your first IDP should answer perhaps 5 questions extremely well:
If developers can accomplish those without becoming Kubernetes/IAM/Terraform experts, you're building an IDP rather than merely exposing your infrastructure through another UI.
If I were starting today, my shortlist would be: Backstage + Argo CD + Crossplane + OpenTofu + Kyverno + OpenTelemetry, with Kubernetes underneath. The exact mix changes if you're not Kubernetes-centric, but that is a very strong open-source starting architecture.