ProficientNowTechRFCs

4. Components

RFC-DEVELOPER-PLATFORM-0001                                       Section 4
Category: Standards Track                                      Components

4. Components

← Architecture | Index | Next: Software Catalog →


4.1 Backstage Framework

4.1.1 Overview

Backstage is a CNCF Incubating project that provides an open platform for building developer portals. Originally created by Spotify, it has become the de facto standard for internal developer platforms, adopted by over 3,400 organizations.

AspectDescription
OriginSpotify (open-sourced 2020)
GovernanceCNCF Incubating
ArchitectureReact frontend, Node.js backend
ExtensibilityPlugin-based architecture
DeploymentSelf-hosted Kubernetes

4.1.2 Core Features

FeatureDescription
Software CatalogEntity registry for services, APIs, resources
Software TemplatesScaffolder for project creation
TechDocsDocumentation-as-code rendering
SearchCross-catalog search functionality
Permission FrameworkCapability-based authorization

4.1.3 Component Responsibilities

ComponentResponsibility
FrontendUser interface, React-based SPA
BackendAPI server, plugin host
DatabaseEntity storage, search index
PluginsFeature extensions

4.1.4 Failure Modes

FailureImpactRecovery
Frontend unavailableUsers cannot access portalPod restart, load balancer health check
Backend unavailableAPI calls failPod restart, replica failover
Database unavailableCatalog queries failPostgreSQL HA failover
Plugin failureFeature-specific degradationIsolate plugin, graceful degradation

4.2 PostgreSQL Database

4.2.1 Purpose

PostgreSQL stores Backstage operational data including:

Data TypeDescription
Catalog entitiesProcessed entity metadata
Search indexFull-text search data
User sessionsSession state
Plugin dataPlugin-specific storage

4.2.2 Deployment Model

AspectConfiguration
OperatorCloudNativePG or Zalando PostgreSQL Operator
ReplicasPrimary + standby for HA
StoragePersistent volumes from Ceph
BackupAutomated via operator

4.2.3 Data Classification

DataClassificationRetention
Catalog metadataPlatform operationalIndefinite
Search indexDerivedRebuildable
Session dataTransientSession lifetime
Audit logsCompliancePer policy

4.2.4 Failure Modes

FailureImpactRecovery
Primary failureWrite unavailableAutomatic failover to standby
Both replicas failFull outageRestore from backup
Storage exhaustionWrites failExpand PVC, cleanup
Connection exhaustionNew connections rejectedConnection pooling, pod restart

4.3 Plugin System

4.3.1 Plugin Architecture

Backstage implements a plugin-based architecture where functionality is organized into discrete plugins:

4.3.2 Plugin Categories

CategoryPurposeExamples
CoreEssential functionalityCatalog, Scaffolder, TechDocs, Search
IntegrationExternal system connectivityArgoCD, Kubernetes, GitHub
VisualizationData presentationGrafana, Cost insights
CustomOrganization-specificTool library, access requests

4.3.3 Plugin Requirements

Plugins MUST adhere to the following requirements per Invariant 14 and Invariant 15:

RequirementDescription
Permission integrationUse Backstage permission framework
Authentication chainNo independent auth mechanisms
Error handlingGraceful degradation on failure
ConfigurationExternalized via environment or secrets

4.3.4 Plugin Lifecycle

PhaseDescription
RegistrationPlugin registered with backend/frontend
InitializationPlugin initializes connections, state
RuntimePlugin serves requests
ShutdownGraceful connection closure

4.4 Integration Agents

4.4.1 Catalog Providers

Catalog providers automatically discover and sync entities from external sources:

ProviderSourceEntities
GitHub DiscoveryGitHub repositoriesComponents from catalog-info.yaml
KubernetesKubernetes APIResources, pods, deployments
CrossplaneCrossplane resourcesInfrastructure entities

4.4.2 Scaffolder Actions

Custom scaffolder actions extend template capabilities:

Action TypePurpose
Git operationsRepository creation, commits
CrossplaneClaim generation
NotificationSlack, email notifications
CatalogEntity registration

4.4.3 Entity Processors

Entity processors transform and validate catalog data:

ProcessorFunction
ValidatorEnsures entity schema compliance
AnnotatorAdds computed annotations
Relationship resolverResolves entity references

4.5 Component Interactions

4.5.1 Request Processing

4.5.2 Plugin Communication

PatternUsage
Frontend-to-backendREST API calls via proxy
Backend-to-externalDirect API calls, K8s client
Inter-pluginEvent bus, shared state

4.5.3 Error Handling

Error TypeHandling
Authentication failureRedirect to login
Authorization failureHide feature, show message
External system failureGraceful degradation, cached data
Network timeoutRetry with backoff

4.6 Deployment Configuration

4.6.1 Kubernetes Resources

ResourcePurpose
DeploymentBackstage backend pods
ServiceInternal service exposure
IngressExternal access via BunkerWeb
ConfigMapNon-sensitive configuration
ExternalSecretSensitive configuration from Vault

4.6.2 Resource Requirements

ComponentCPU RequestMemory Request
BackendWorkload-dependentWorkload-dependent
PostgreSQLOperator-managedOperator-managed

4.6.3 High Availability

AspectConfiguration
Backend replicasMultiple replicas behind service
Database HAPostgreSQL operator manages replicas
Session affinityStateless backend, no affinity required

Document Navigation


End of Section 4 — RFC-DEVELOPER-PLATFORM-0001