Last updated: 26-01-2026 17:31:21+0000

1. Introduction and Goals

1.1. Requirements Overview

1.2. Quality Goals

1.3. Stakeholders

2. Architecture Constraints

3. System Scope and Context

System Context View: Inventory ServiceSystem Context View: Inventory ServiceGraphQL Federation Provides a federated Graphto clientsInventory Service Reads inventory data andprovides it to clients viasubgraph-inventory. Ordersnew goods if they run out ofstockOrder service Orders new goodsTeam A Maintains and operates theWarehouseTeam B Maintains and operates theOrder serviceWarehouse Provides inventory data viaKafkasubgraph-inventoryTriggers order ifgoods run out ofstock[REST]Reads inventory datafrom[Kafka]maintains andoperatesmaintains andoperatesLegend ▯ system ▯ external person ▯ external system ─ async relationship (dashed) Context diagram for the web shop inventory system

3.1. Business Context

3.2. Technical Context

4. Solution Strategy

5. Building Block View

5.1. Whitebox Overall System

Container View: Inventory ServiceContainer View: Inventory ServiceGraphQL Federation[system]Inventory Service[system]Warehouse[system]subgraph-inventory[GraphQL] Provides inventory dataInventory Database[PostgreSQL] Stores inventory itemsInventory Provider[SpringBoot, Spring Data JDBC,Kafka Streams] Reads inventory data andprovides it to clients viasubgraph-inventory. Ordersnew goods if they run out ofstockwarehouse.goods[Kafka] Contains metadataregarding goodswarehouse.stock_v1[Kafka] Contains data regarding theamount of goods in stockOrder service Orders new goodsReads and writesinventory datato/fromTriggers order ifgoods run out ofstock[REST]contributes tofederated graphReads[Kafka]Reads[Kafka]Legend ▯ container ▯ external system ▯ external container ▯ system boundary ─ async relationship (dashed) Container diagram for the inventory domain

5.2. Level 2

Component View: Inventory Service - Inventory ProviderComponent View: Inventory Service - Inventory ProviderInventory Provider[container]Goods Consumer[Spring Cloud Stream BinderKafka] Consumes Kafka topicInventory Query[GraphQL] GraphQL queryInventory ReadService Reads data from databaseInventory Repository[JDBC] Spring JDBC RepositoryInventory WriteService Writes data to database andtriggers orders if goods runout of stockOrder Client Sends orders via POST toorder serviceStock Consumer[Spring Cloud Stream BinderKafka] Consumes Kafka topicsubgraph-inventory[GraphQL] Provides inventory dataInventory Database[PostgreSQL] Stores inventory itemsOrder service Orders new goodswarehouse.goods[Kafka] Contains metadataregarding goodswarehouse.stock_v1[Kafka] Contains data regarding theamount of goods in stockWrites receivedgoods data usingConsumes goodsKafka topicReads data usingIs query of subgraphReads data usingRead/write inventorydataWrites inventory datausing[JDBC]Sends orders using[REST]Sends orders toWrites received stockdata usingConsumes stockKafka topicLegend ▯ container ▯ component ▯ external system ▯ external container ▯ container boundary Component diagram for the Inventory Provider service

6. Runtime View

6.1. <Runtime Scenario 1>

6.2. <Runtime Scenario 2>

6.3. …​

6.4. <Runtime Scenario n>

7. Deployment View

Deployment View: Inventory Service - DefaultDeployment View: Inventory Service - DefaultAWSaccountId123456regioneu-central-1Elastic Kubernetes Service (EKS)Inventory PODautoscaling.max_replicas10autoscaling.min_replicas5imagePullPolicyIfNotPresentport8080resources.limits_cpu3000mresources.limits_memory1500Miresources.requests_cpu2000mresources.requests_memory1500MiDocker ContainerRelational Database Service (RDS)Apollo StudioIngress[NGINX] Used for load balancing andSSLterminationInventory Provider[SpringBoot, Spring Data JDBC,Kafka Streams] Reads inventory data andprovides it to clients viasubgraph-inventory. Ordersnew goods if they run out ofstockInventory Database[PostgreSQL] Stores inventory itemsGraphQL Federation Provides a federated Graphto clientsForwardssubgraph-inventoryqueries toForwards requests toReads and writesinventory datato/fromLegend ▯ container ▯ external system ▯ node Deployment diagram for the Inventory service

8. Alerts

Name Severity Summary Description Expression Time range

InstanceDown

critical

Instance $labels.instance down

$labels.instance of job $labels.job has been down for more than 5 minutes.

up == 0

5m

APIHighRequestLatency

critical

High request latency on $labels.instance

$labels.instance has a median request latency above 1s (current value: $values)

api_http_request_latencies_second{quantile="0.5"} > 1

10m

9. Cross-cutting Concepts

10. Architecture Decisions

11. Quality Requirements

11.1. Quality Tree

11.2. Quality Scenarios

12. Risks and Technical Debts

13. Glossary

Term Definition

<Term-1>

<definition-1>

<Term-2>

<definition-2>