Skip to content

arch.backend

Package arch.backend · Version 0.1.0

The default vocabulary for server-side architecture. Provides module kinds for databases (relational, document, key-value, search, columnar, graph, time-series, vector, object storage), caches, message queues and brokers, plus infrastructure, observability, and security building blocks.

It also defines the wire-level interface kindshttp_*, grpc_*, kafka, and friends — with baseline edge styling, so the protocol a module speaks is part of its declaration. Each kind ships a default widget (icon, color, sizing) from [[arch.ui]].

Treat it as a palette — import the kinds you use, e.g. use service, postgres, kafka, redis from arch.backend.

TypeExtendsDescription
servicemoduleA network-addressable backend service — the default building block of a microservice architecture
databasemoduleA persistent primary data store; nest it inside its single owning service, and choose cache for ephemeral stores
cachedatabaseAn ephemeral cache — a squat database variant that distinguishes short-lived stores from primary ones
db_readinterfaceA data-access interface expressing read/query intent against a database or cache, independent of the underlying wire
db_writeinterfaceA data-access interface expressing write/command intent against a database or cache, independent of the underlying wire
systemmoduleA logical grouping that hosts a subspace of services and components
frontendmoduleA user-facing application such as a web UI, SPA or admin portal
componentmoduleAn in-process building block of a larger service or system
workermoduleA background consumer or job runner with no synchronous inbound surface — it drains queues, reacts to events or runs on a schedule
external_systemmoduleA third-party or external dependency — a SaaS vendor, a legacy platform, another team’s product
relationaldatabaseRow-oriented, ACID, SQL-first store — the default workhorse for transactional data
postgresrelationalOpen-source relational engine with a rich extension ecosystem; the general-purpose default in this family
mysqlrelationalOpen-source relational engine; choose when the stack already standardizes on the MySQL ecosystem
mariadbrelationalCommunity-governed MySQL-compatible fork; choose as a drop-in alternative to mysql
sqliterelationalEmbedded in-process relational engine storing data in a single file; choose for local or single-node persistence without a server
mssqlrelationalMicrosoft’s relational engine; choose in Windows- and .NET-centric stacks
oraclerelationalCommercial relational engine; choose when the organization already runs on Oracle tooling and support
cockroachdbrelationalDistributed SQL engine speaking the PostgreSQL wire protocol; choose for horizontal scale and survival of node or region loss
vitessrelationalSharding layer that clusters MySQL into a horizontally scalable system; choose to scale an existing MySQL footprint
ydbrelationalDistributed SQL engine combining relational tables with built-in persistent queues (topics); choose in Yandex-ecosystem stacks
documentdatabaseSchemaless document store with secondary indexes; choose for flexible nested shapes over fixed relational schemas
mongodbdocumentGeneral-purpose document store with rich query and aggregation over BSON documents
couchdbdocumentDocument store accessed over HTTP with multi-master replication; choose for offline-first and sync-heavy designs
couchbasedocumentDistributed document store with a built-in caching layer and SQL-like querying; choose for low-latency interactive workloads
hyperscaledatabasePartitioned wide-column store built for very large write-heavy workloads
cassandrahyperscaleRing-topology wide-column store with tunable consistency; the archetype of this family
scylladbhyperscaleCassandra-compatible wide-column store with a shard-per-core architecture; choose as a drop-in alternative to cassandra
hbasehyperscaleWide-column store over HDFS with strongly consistent row operations; choose in Hadoop-centric stacks
object_storagedatabaseBlob-bucket store with range reads and lifecycle policies; choose for large immutable objects rather than queryable records
minioobject_storageS3-compatible object store that deploys as a single binary; choose for self-hosted S3 semantics
cephobject_storageDistributed storage cluster exposing object, block and filesystem interfaces; choose for large multi-purpose storage estates
seaweedfsobject_storageDistributed object store designed for high volumes of small files
garageobject_storageLightweight S3-compatible object store aimed at self-hosted, geo-distributed deployments
kv_storedatabasePersistent key-value store for single-key lookup; choose over cache when the data is durable rather than an ephemeral hot-data tier
etcdkv_storeStrongly consistent distributed key-value store built on Raft; choose for cluster coordination and configuration data (as the discovery/config plane, use service_discovery + aspect engine: "etcd")
tarantoolkv_storeIn-memory data grid with write-ahead-log persistence (as a pure cache tier, cache + aspect engine: "tarantool" also works)
rediscacheIn-memory data-structure store with rich value types; the default choice for a cache tier (as a broker, use message_broker redis_streams; the pub/sub wire is the redis_pubsub interface)
memcachedcacheMinimal in-memory key-value cache; choose for plain byte-value caching without data structures
keydbcacheRedis-compatible in-memory store with multithreaded execution; choose as a drop-in alternative to redis
hazelcastcacheDistributed in-memory data grid for JVM-centric stacks
search_indexdatabaseInverted-index store for full-text and faceted query; choose when relevance-ranked search is the primary access pattern
elasticsearchsearch_indexDistributed search and analytics engine with a JSON query DSL; choose for large-cluster search and aggregation workloads
opensearchsearch_indexCommunity-governed fork of Elasticsearch; choose for a compatible API under a permissive open-source license
solrsearch_indexLucene-based search server with rich faceting; choose in stacks already invested in its ecosystem
meilisearchsearch_indexLightweight typo-tolerant search engine with on-disk indexes; choose for user-facing instant search with minimal setup
typesensesearch_indexLightweight typo-tolerant search engine that holds its index in memory; choose for user-facing instant search when the corpus fits in RAM
columnardatabaseColumn-oriented analytics engine; choose for OLAP scans and aggregations over row-level transactional access
clickhousecolumnarColumn-oriented OLAP engine for interactive analytics over high-ingest event data
duckdbcolumnarEmbedded in-process analytics engine; choose for local OLAP over files without running a server
druidcolumnarDistributed real-time analytics store with streaming ingestion; choose for interactive exploration of event streams
pinotcolumnarDistributed OLAP store with streaming ingestion; choose for high-concurrency user-facing analytics
graph_dbdatabaseNative graph store with traversal as a first-class query primitive; choose when relationship hops dominate the queries
neo4jgraph_dbNative property-graph database queried with Cypher; the general-purpose default in this family
arangodbgraph_dbMulti-model engine combining graph, document and key-value; choose when graph is one of several access patterns
dgraphgraph_dbDistributed native graph database with a GraphQL-flavored query language; choose for horizontally scaled graph workloads
janusgraphgraph_dbGraph layer over pluggable wide-column storage backends; choose to run graph workloads on an existing cassandra or hbase cluster
tigergraphgraph_dbDistributed graph database aimed at deep multi-hop analytical queries
timeseriesdatabaseAppend-heavy, time-partitioned store with downsampling and retention built in; choose for high-volume timestamped series
influxdbtimeseriesPurpose-built timeseries engine with retention and downsampling tooling; the general-purpose default in this family
timescaledbtimeseriesTimeseries engine packaged as a PostgreSQL extension; choose to keep series data inside a relational stack
questdbtimeseriesSQL-queried timeseries engine oriented toward high-rate ingestion
m3dbtimeseriesDistributed timeseries store designed for horizontal scale; choose when series volume outgrows a single node
vectordatabaseANN index over embedding vectors; choose for similarity search in retrieval and recommendation workloads
weaviatevectorVector database with hybrid keyword-plus-vector search; choose when lexical and semantic retrieval combine
qdrantvectorVector search engine with rich payload filtering; choose when metadata filters gate similarity queries
milvusvectorDistributed vector database built for horizontal scale; choose for very large vector collections
chromavectorLightweight embedding store; choose for local development and small retrieval workloads
lancedbvectorEmbedded vector database over a columnar on-disk format; choose for in-process vector search without a server
gatewaymoduleAPI gateway / edge reverse proxy — terminates external traffic and routes it by application semantics (auth, rate limits, paths)
bpm_systemmoduleWorkflow / BPM orchestrator for long-running stateful processes — retries, signals, timers, human tasks, DAG schedules
camundabpm_systemBPMN workflow and decision automation engine with human-task support
zeebebpm_systemHorizontally scalable BPMN workflow engine
flowablebpm_systemBPMN workflow engine also covering case management and decision models
activitibpm_systemEmbeddable BPMN workflow engine for Java applications
temporalbpm_systemDurable code-first workflow engine — workflows are ordinary code with persisted state and automatic retries
cadencebpm_systemDurable code-first workflow engine from Uber; temporal descends from it — choose where cadence is already deployed
conductorbpm_systemWorkflow orchestration engine coordinating microservice tasks over JSON-defined flows
n8nbpm_systemLow-code visual workflow automation connecting apps and APIs
load_balancermoduleL4/L7 load balancer spreading connections across service replicas — choose gateway when routing is by application semantics
cdnmoduleContent delivery network — edge caching and static asset delivery (arch.c4 also ships a cdn infrastructure node — import selectively if you use both)
wafmoduleWeb application firewall — inspects and blocks malicious requests at the edge
rate_limitermoduleStandalone rate-limiting / throttling tier — use when the limiter is its own deployed component rather than a gateway feature
service_meshmoduleService mesh — mTLS, retries, traffic shaping and telemetry for service-to-service traffic; one module per control plane, sidecar/eBPF proxies implied
istioservice_meshEnvoy-based service mesh for traffic management, mTLS and policy
linkerdservice_meshKubernetes service mesh with a lightweight Rust micro-proxy data plane
consul_connectservice_meshService mesh built into Consul, using its service catalog for identity and mTLS
kumaservice_meshEnvoy-based service mesh running across Kubernetes and VMs
ciliumservice_mesheBPF-based service mesh with a sidecar-free, in-kernel data plane
service_discoverymoduleDynamic service registry and distributed configuration plane
consulservice_discoveryService registry with health checking and distributed configuration (as a standalone KV store, use kv_store + aspect engine: "consul")
zookeeperservice_discoveryDistributed coordination service providing registry, configuration and leader election
eurekaservice_discoveryREST-based service registry for client-side discovery
nacosservice_discoveryCombined service registry and dynamic configuration platform
feature_flagsmoduleRuntime feature-flag and experiment evaluation service
unleashfeature_flagsFeature-flag service with strategy-based gradual rollouts
flagsmithfeature_flagsFeature-flag and remote-config service with segment targeting
fliptfeature_flagsSelf-hosted feature-flag service with REST and gRPC APIs
growthbookfeature_flagsCombined feature-flag and A/B-experimentation platform
eventinterfaceA transport-agnostic domain event — declared on the PRODUCER (its published contract); consumers subscribe by referencing it (Shipping > Orders.orderEvents)
kafkainterfaceA Kafka topic — distributed-log event streaming between services; choose over event when the transport is known to be Kafka
amqpinterfaceAn AMQP queue or exchange binding — events and task queues both ride the wire; stamp aspect intent per declaration
natsinterfaceA NATS subject — lightweight cloud-native pub/sub with dot-separated subjects; override aspect intent for request-reply RPC
mqttinterfaceAn MQTT topic — pub/sub built for IoT and low-bandwidth devices, slash-separated topics
redis_pubsubinterfaceA Redis pub/sub channel — ephemeral in-memory fan-out; messages drop when no subscriber listens
message_brokermoduleThe deployed broker module that hosts event interfaces — attached to them as aspect broker:, never a hop on the call path
kafka_clustermessage_brokerA deployed Kafka cluster — distributed partitioned append-only log, replay-friendly
redpandamessage_brokerA deployed Redpanda cluster — Kafka-API-compatible streaming log
pulsarmessage_brokerA deployed Apache Pulsar cluster — distributed streaming log with built-in multi-tenancy
rabbitmqmessage_brokerA deployed RabbitMQ broker — classic queue-and-exchange messaging over AMQP
activemqmessage_brokerA deployed ActiveMQ broker — classic JMS-style broker that also speaks AMQP
ibm_mqmessage_brokerA deployed IBM MQ queue manager — commercial message queueing for enterprise and mainframe integration
nats_servermessage_brokerA deployed NATS server or cluster — subject-routed pub/sub with a small operational footprint
mqtt_brokermessage_brokerA deployed MQTT broker — generic topic-routed device messaging endpoint; pick a vendor type when the product is known
mosquittomessage_brokerA deployed Eclipse Mosquitto broker — lightweight open-source MQTT broker suited to small and embedded setups
hivemqmessage_brokerA deployed HiveMQ broker — commercial MQTT platform built for large device fleets
nsqmessage_brokerA deployed NSQ cluster — decentralized realtime messaging with no central coordinator
redis_streamsmessage_brokerA Redis deployment used as a persistent append-only log via the Streams API (as a cache tier, use cache redis)
queuemoduleA point-to-point work queue distributing jobs to competing workers — a place, not a hop: the worker owns the handler interface carrying aspect queue:; pairs with worker
observabilitymoduleA telemetry platform module — a deployed system that collects, stores, visualizes or alerts on metrics, logs and traces
metrics_systemobservabilityAn observability system that scrapes, stores and queries numeric time series
prometheusmetrics_systemPull-based metrics scrape-and-store engine with a built-in query language (as a generic TSDB, use timeseries + aspect engine: "prometheus")
victoriametricsmetrics_systemMetrics engine focused on high-cardinality ingestion and low resource use
thanosmetrics_systemSidecar-based long-term-storage and global-query layer over existing prometheus servers
mimirmetrics_systemLong-term metrics store for the prometheus ecosystem in the Grafana stack, fed by remote write; descends from cortex
cortexmetrics_systemMulti-tenant metrics store for the prometheus ecosystem, fed by remote write; choose mimir for new Grafana-stack deployments, cortex where one already runs
graphitemetrics_systemPush-based metrics store organized around dot-separated metric names; choose for StatsD-style pipelines rather than labeled series
logging_systemobservabilityAn observability system that aggregates, indexes and queries application and infrastructure logs
lokilogging_systemLog aggregation store that indexes labels rather than full log content; choose when logs sit alongside metrics in a Grafana stack
grayloglogging_systemSelf-contained log management platform with full-text search, streams and alerting built in
logstashlogging_systemServer-side log pipeline that ingests, transforms and forwards events; choose for rich processing in an Elastic stack
fluentdlogging_systemPluggable log collector and router with a broad plugin ecosystem; choose for vendor-neutral log routing
tracing_systemobservabilityAn observability system that records distributed traces — span trees across services
jaegertracing_systemDistributed tracing backend and UI with pluggable storage; choose for a standalone tracing deployment
tempotracing_systemObject-storage-backed trace store in the Grafana stack; choose when traces are explored through grafana alongside metrics and logs
zipkintracing_systemDistributed tracing system with a simple collector and UI; choose where existing instrumentation already emits zipkin spans
dashboardobservabilityAn observability front-end that queries and charts data from the telemetry stores
grafanadashboardDashboard and visualization front-end with datasource plugins for many backends; choose for dashboards that span multiple telemetry stores
kibanadashboardVisualisation and exploration UI for the Elastic stack; choose when the data already lives in elasticsearch
collectorobservabilityAn observability agent or router that receives, batches and forwards telemetry to the stores
otel_collectorcollectorVendor-neutral telemetry pipeline that receives, processes and exports metrics, logs and traces; the default collector for OpenTelemetry-instrumented systems
fluent_bitcollectorLightweight telemetry forwarder suited to edge and sidecar deployment; choose over fluentd where footprint matters more than plugin breadth
vector_agentcollectorLog and metrics pipeline with a built-in transform language; choose for programmable routing and reshaping inside the agent
telegrafcollectorPlugin-driven agent that collects host and service metrics and pushes them to a store
alertingobservabilityAn observability system that evaluates rules over signals and routes notifications
alertmanageralertingAlert routing service for the prometheus ecosystem that groups, deduplicates, silences and dispatches notifications
karmaalertingDashboard for browsing and managing alertmanager alerts; choose for an aggregated view across alertmanager instances
apmobservabilityAn observability platform for application performance and error aggregation — exception grouping, latency profiles, release health
sentryapmError tracking and performance monitoring platform centered on exception grouping and release health
signozapmOpenTelemetry-native platform that combines metrics, traces and logs in one self-hosted backend; choose over running separate per-signal stores
skywalkingapmApplication performance monitor with distributed tracing and service topology mapping; choose for agent-based instrumentation across polyglot services
pyroscopeapmContinuous profiling platform that stores and queries CPU and memory profiles; choose when the signal of interest is code-level resource use
glitchtipapmError tracking platform compatible with sentry SDKs; choose as a leaner self-hosted alternative to sentry
httpinterfaceSynchronous HTTP request/response — the base type; verb subtypes stamp aspect intent
http_gethttpHTTP GET — safe read of a resource
http_posthttpHTTP POST — submits data or creates a subordinate resource
http_puthttpHTTP PUT — replaces a resource wholesale; choose http_patch for partial updates
http_patchhttpHTTP PATCH — applies a partial update to a resource
http_deletehttpHTTP DELETE — removes a resource
http_headhttpHTTP HEAD — headers-only probe; choose over http_get when only metadata matters
http_optionshttpHTTP OPTIONS — capability discovery for a resource
webhookhttpAn outbound callback over http — fire-and-forget async; most deliver fact notifications, so override aspect intent when the payload is an instruction
ssehttpServer-sent events — long-lived push stream over http; carries both event push and streamed query responses, so stamp aspect intent per declaration
resthttpHTTP with resource semantics — parent of the rest_* operation subtypes
rest_listrestREST list — reads a collection of resources; choose rest_read for a single one
rest_createrestREST create — adds a resource to a collection
rest_readrestREST read — fetches a single resource by identity
rest_updaterestREST update — modifies an existing resource
rest_deleterestREST delete — removes a resource
rest_crudsurfaceA reusable REST CRUD surface — the five standard resource operations as one importable group
grpcinterfacegRPC over HTTP/2 — the base type; a call is a query or a command depending on the method, so stamp aspect intent per declaration
grpc_unarygrpcgRPC unary call — single request, single response; the default RPC shape
grpc_server_streamgrpcgRPC server-streaming call — single request, response stream from the server
grpc_client_streamgrpcgRPC client-streaming call — request stream from the client, single response
grpc_bidi_streamgrpcgRPC bidirectional streaming call — request and response streams over one connection
websocketinterfaceA WebSocket connection — bidirectional long-lived channel; choose over sse when the client also sends
graphqlinterfaceGraphQL over HTTP — the base type; operation subtypes stamp aspect intent
graphql_querygraphqlGraphQL query — reads data from the graph
graphql_mutationgraphqlGraphQL mutation — writes changes to the graph
graphql_subscriptiongraphqlGraphQL subscription — async push stream of graph updates
identity_providermoduleIdentity provider — issues tokens, authenticates principals and brokers SSO over OIDC, OAuth2 or SAML
keycloakidentity_providerIdentity provider organized around realms with an admin console, user federation and OIDC/OAuth2/SAML support
zitadelidentity_providerMulti-tenant identity provider with OIDC, OAuth2 and SAML support
authentikidentity_providerIdentity provider and SSO broker supporting OIDC, SAML and LDAP
autheliaidentity_providerAuthentication portal for reverse-proxied applications, adding SSO and multi-factor login
oryidentity_providerModular identity suite — separate services for user identity, OAuth2 issuance and permissions
dexidentity_providerFederated OIDC provider brokering authentication to upstream identity systems through connectors
supertokensidentity_providerEmbeddable authentication service with prebuilt login flows and session management
casdooridentity_providerIdentity and SSO platform supporting OIDC, OAuth2, SAML and CAS
fusionauthidentity_providerIdentity provider with per-application tenancy and registration flows; choose when each application needs its own auth configuration
secrets_managermoduleCentral credential and key store with leasing, rotation and audit
vaultsecrets_managerSecrets manager with dynamic credentials, leasing and encryption-as-a-service
openbaosecrets_managerOpen-source secrets manager forked from Vault under open governance
infisicalsecrets_managerSecrets management platform oriented toward developer workflows and CI/CD secret syncing

See also: package.archspace reference · The standard library.