A cloud or physical infrastructure building block
An infrastructure component is a provisioned resource that software runs on: a compute instance, a database, a message queue, a load balancer, an object store. It is the physical-or-virtual substrate underneath the application, the thing that has to exist, be configured, and stay healthy before any code can serve a request. The distinction worth holding onto is that a component is what you provision, while a service is what you run on top of it, and treating the two as one is how capacity and ownership get muddled.
For most of computing's history, infrastructure was provisioned by hand: someone racked a server, partitioned a disk, edited a config file. The shift came with cloud APIs, which made every resource scriptable, and with the practice that grew to exploit them. Kief Morris of ThoughtWorks defined infrastructure as code in his book of that name: managing infrastructure through definitions executed by tools, the same way application code is managed, rather than through manual steps in a console.
Two properties became central. The first is idempotency: a definition should reach the same end state no matter how many times it runs or what state it starts from. Declarative tools such as Terraform express a desired end state and reconcile reality to match it, which is what makes a component reproducible instead of a hand-built snowflake. The second is the mutable-versus-immutable choice. Mutable infrastructure is patched in place, which invites configuration drift as ad hoc changes accumulate. Immutable infrastructure replaces a component wholesale on every change, eliminating drift and giving every version a clean rollback.
The arc of the field has been to treat each component as a defined, versioned, disposable artefact. A database is no longer a precious machine someone tends; it is a declaration in a repository that any teammate can read, review, and rebuild. That reproducibility is what later let the same component slot cleanly into automated pipelines and monitoring.
A team needsNeedUserA user need, pain, desire, or constraintView reference → a Postgres database for a new service. Instead of clicking through a cloud console, they write a Terraform definition: instance class, storage size, backup retention, the security group that fences it off. They commit it, a teammate reviews the diff, and the pipeline applies it. The component now exists as a named, versioned object rather than tribal knowledge.
Because it is defined this way, the rest of the operational machinery attaches automatically. The CI pipelineCI PipelineDevOps & PlatformA CI/CD pipelineView reference → that provisions it also wires a monitor to its connection-pool saturation. The component carries a service level objectiveService Level ObjectiveDevOps & PlatformA service level objective (SLO)View reference → of 99.95% availability, and the on-call rotation that covers the parent service inherits responsibility for it. Six weeks later, when a noisy-neighbour problem appears, the team bumps the instance class in the definition and re-applies, and the change is reviewable in the same place as the original. Nothing about the database lives only in someone's memory.
serviceServiceEngineeringA deployable service or microserviceView reference → is a running unit of application behaviour, an authentication API, a payments worker. An infrastructure component is the provisioned resource it consumes. One database component may underpin several services; one service may sit on compute, cache, and queue components at once. The component is provisioned; the service is deployed.deploymentDeploymentEngineeringA deployment eventView reference → is the act of pushing a version of software onto infrastructure. The infrastructure component is the target of that act, the place the version lands. Provisioning the component and deploying onto it are distinct steps with distinct failure modes.monitorMonitorDevOps & PlatformA monitoring checkView reference → watches a component's health. The component is the observed; the monitor is the observer. A provisioned component with no monitor is a resource you are trusting blind, which the graph can flag.In the Unified Product Graph an infrastructure component is a hub in the operations region, the point where software meets the substrate it runs on. A product connects through Productruns onInfrastructure Componenthierarchy, observationObservationUser ResearchA specific behaviour or statement observedView reference → attaches through product_runs_on_infrastructure_componentInfrastructure Componentmonitored byMonitorhierarchy, reliability commitments through infrastructure_component_monitored_by_monitorInfrastructure Componentcommitted toService Level Objectivehierarchy, and provenance through infrastructure_component_committed_to_service_level_objectiveInfrastructure Componentbuilt byCI Pipelinehierarchy. Those four edges let one query reconstruct a component's full operational context: what depends on it, who watches it, what it promises, and how it came to exist. A component missing any of them is a known shape of riskRiskComplianceA risk to the product or businessView reference →, an unmonitored resource, an undefined provisioning path, that the structure makes visible rather than waiting for an incidentIncidentDevOps & PlatformA production incidentView reference → to reveal.infrastructure_component_built_by_ci_pipeline
Type-specific fields on BaseNode
component_typestringResource category. `compute` = VMs or containers. `storage` = object/block/file. `network` = VPC, load balancer, DNS. `database` = managed DB services. `cdn` = content delivery. `queue` = message broker or event bus. @example "database" for a managed PostgreSQL instance
providerstringCloud or infrastructure provider. @example "AWS", "Vercel", "Cloudflare", "Supabase", "Fly.io"
regionstringGeographic deployment region. @example "us-east-1", "eu-west-1", "global" (CDN or multi-region)
cost_monthlynumberMonthly cost in base currency (USD). @example 250.00
environmentstringEnvironment. `production` = live traffic. `staging` = pre-release. `development` = developer sandbox. `shared` = cross-environment services (e.g. logging).
component_statusstringOperational status. `healthy` = normal. `degraded` = partial impairment. `down` = unavailable. `maintenance` = intentionally offline.
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
4 phases — initial: alpha · template: MATURITY
8 edge types connected to this entity.
product_runs_on_infrastructure_componentinfrastructure_component_committed_to_service_level_objectiveinfrastructure_component_monitored_by_monitorinfrastructure_component_built_by_ci_pipelineinfrastructure_component_experiences_incidentinfrastructure_component_documented_in_runbookinfrastructure_component_released_via_release_strategyinfrastructure_component_covered_by_on_call_rotation