A microservice or application service
A service is a deployable, independently runnable unit of software that owns a bounded slice of responsibility and exposes it through a defined interface. It is the load-bearing concept of modern backend architecture: the thing a team owns, deploys, scales, pages on, and is held accountable for.
The word carried a looser meaning for years before the discipline tightened it. Service-Oriented Architecture in the early 2000s framed a service as a reusable, network-accessible business capabilityCapabilityStrategyAn ability that enables value deliveryView reference →, often mediated by heavyweight middleware and an enterprise service bus. The promise was reuse; the common outcomeOutcomeStrategyA desired business or user outcomeView reference → was a brittle, centrally governed monolith wearing a distributed costume.
The corrective came from the bounded-context idea in Eric Evans' Domain-Driven Design (2003), which argued that a model is only coherent inside a clear boundary. James Lewis and Martin Fowler drew the two threads together in Microservices (2014), defining a service as a small unit built around a business capability, independently deployable, owning its own data, and communicating over the network. The boundary became the point. A service you cannot deploy without coordinating three other teams is not really a service.
The pendulum has since swung back toward judgement. Practitioners now talk about right-sizing, the modular monolith, and the cost of premature decomposition, because every network boundary you draw is a distributed-systems problem you have agreed to own forever.
An e-commerce platform splits its monolith and carves out an inventory service. It owns one database schemaDatabase SchemaEngineeringA database schema definitionView reference →, exposes a handful of API endpointsAPI EndpointEngineeringA specific API endpointView reference →, publishes a stock.reserved event to a queue, and is deployed twelve times a day by the four engineers who own it. Its blast radius is its own: when inventory falls over at 2am, checkout degrades to "ships in 3 to 5 days" instead of failing, because the boundary was drawn to fail gracefully.
The team commits to a service level objectiveService Level ObjectiveDevOps & PlatformA service level objective (SLO)View reference → on the read path and tracks the deploymentsDeploymentEngineeringA deployment eventView reference → that move its error rate. When a regression appears, they know which service to roll back without asking anyone, because the service owns its code, its data, and its on-call rotation as one unit.
In the Unified Product Graph, ServiceEngineeringA deployable service or microservice is the anchor of the Engineering and Platform region, chosen because it has more hierarchy children than any other entity in the spec. Its intra-region edges fan out to the things it owns: serviceServiceservesAPI Endpointhierarchy, service_serves_api_endpointServiceexposesAPI Contracthierarchy, service_exposes_api_contractServicepersisted inDatabase Schemahierarchy, service_persisted_in_database_schemaServicepublishes toQueue Topichierarchy, service_publishes_to_queue_topicServicedeployed asDeploymenthierarchy, service_deployed_as_deploymentServicetogglesFeature Flaghierarchy. The boundary edge service_toggles_feature_flagServicepowersFeaturecross-domain crosses into Product and Delivery, and service_powers_featureService Level AgreementgovernsServicecross-domain reaches in from Operations and Quality. That shape makes the service a hub: trace outward and you see what it runs, trace the imports and you see what depends on it and what it owes.service_level_agreement_governs_service
Type-specific fields on BaseNode
service_typestringFunctional classification. Expanded from Backstage's component type vocabulary.
tech_stackstring[]Technologies used (e.g. ["TypeScript", "Postgres", "Redis"])
ownerstringOwning person or team. Backstage marks this required; strongly recommended.
lifecyclestringService maturity. Answers "how mature is it?". `experimental` = early-stage. `production` = battle-tested. `deprecated` = being phased out.
tagsstring[]Free-form filter tags (e.g. ["payments", "critical-path", "team-alpha"]).
linksobjectNamed URLs for documentation, dashboards, runbooks.
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
4 phases — initial: development
34 edge types connected to this entity.
bounded_context_deploys_serviceservice_exposes_api_contractservice_carries_technical_debt_itemservice_toggles_feature_flagservice_deployed_as_deploymentservice_serves_api_endpointservice_persisted_in_database_schemaservice_publishes_to_queue_topicservice_produces_build_artifactservice_depends_on_library_dependencyservice_powers_feature_areaservice_powers_featureservice_investigated_via_investigationservice_affected_by_root_causebug_affects_serviceroot_cause_affects_servicedesign_component_consumes_servicemonitor_watches_serviceci_pipeline_deploys_servicethreat_targets_servicevulnerability_affects_servicepenetration_test_assesses_servicesecurity_control_protects_serviceaccess_policy_governs_servicetest_coverage_report_covers_serviceservice_level_agreement_governs_servicedesign_component_specifies_for_servicedesign_token_tokenised_as_servicedesign_component_requires_data_from_serviceservice_implements_design_componentservice_constrains_interaction_design_componentservice_enables_pattern_design_componentservice_constrains_scope_productdata_product_consumed_by_service1 framework use this entity type.