chartletv0.21.0chartlet.casoon.de

← All examples

Web shop on one cloud region

Ten components of a web shop in three nested boundaries — a cloud region, a private network, a data zone — with every kind in its own shape. Connections say what they do and, in brackets, how. Components outside a boundary stay out of its frame; the table names each component with its boundaries and connections. Build-time warnings: warning[canvas_too_small] at /width: the diagram needs 1829 pixels here and was drawn that large; raise width to 1829, shorten labels, or try the other orientation

Web shop on one cloud region

examples/shop-architecture.json
{
  "schemaVersion": 1,
  "type": "architecture",
  "title": "Web shop on one cloud region",
  "source": "Architecture handbook, overview",
  "width": 1820,
  "height": 540,
  "architecture": {
    "boundaries": [
      {
        "id": "region",
        "label": "Cloud region eu-central-1"
      },
      {
        "id": "network",
        "label": "Private network",
        "in": "region"
      },
      {
        "id": "data",
        "label": "Data zone",
        "in": "network"
      }
    ],
    "components": [
      {
        "id": "customer",
        "label": "Customer",
        "kind": "person"
      },
      {
        "id": "web",
        "label": "Web shop",
        "sublabel": "browser",
        "kind": "frontend"
      },
      {
        "id": "cdn",
        "label": "Content network",
        "kind": "external"
      },
      {
        "id": "api",
        "label": "Shop API",
        "sublabel": "Node.js",
        "in": "network"
      },
      {
        "id": "cache",
        "label": "Session cache",
        "sublabel": "Redis",
        "kind": "cache",
        "in": "network"
      },
      {
        "id": "events",
        "label": "Order events",
        "kind": "queue",
        "in": "network"
      },
      {
        "id": "worker",
        "label": "Order worker",
        "in": "network"
      },
      {
        "id": "db",
        "label": "Orders",
        "sublabel": "Postgres",
        "kind": "database",
        "in": "data"
      },
      {
        "id": "files",
        "label": "Invoices",
        "sublabel": "object storage",
        "kind": "storage",
        "in": "region"
      },
      {
        "id": "pay",
        "label": "Payment provider",
        "kind": "external"
      },
      {
        "id": "auth",
        "label": "Sign-in",
        "sublabel": "identity provider",
        "kind": "security",
        "in": "network"
      }
    ],
    "connections": [
      {
        "from": "customer",
        "to": "web",
        "label": "browses"
      },
      {
        "from": "web",
        "to": "cdn",
        "label": "loads assets",
        "technology": "HTTPS",
        "dash": "dashed"
      },
      {
        "from": "web",
        "to": "api",
        "label": "calls",
        "technology": "HTTPS/JSON"
      },
      {
        "from": "api",
        "to": "cache",
        "label": "sessions",
        "technology": "RESP"
      },
      {
        "from": "api",
        "to": "auth",
        "label": "checks token",
        "technology": "OIDC"
      },
      {
        "from": "api",
        "to": "db",
        "label": "reads, writes",
        "technology": "SQL/TLS"
      },
      {
        "from": "api",
        "to": "events",
        "label": "publishes",
        "technology": "AMQP"
      },
      {
        "from": "events",
        "to": "worker",
        "label": "delivers"
      },
      {
        "from": "worker",
        "to": "pay",
        "label": "charges",
        "technology": "HTTPS"
      },
      {
        "from": "worker",
        "to": "files",
        "label": "stores PDF",
        "technology": "S3 API"
      },
      {
        "from": "worker",
        "to": "db",
        "label": "updates",
        "technology": "SQL/TLS"
      }
    ],
    "mainPath": [
      "customer",
      "web",
      "api",
      "events",
      "worker",
      "pay"
    ]
  }
}
Focus
Web shop on one cloud region
Web shop on one cloud regionArchitecture diagram with 11 components and 11 connections in 3 boundaries. Cloud region eu-central-1: Invoices, Private network. Private network (in Cloud region eu-central-1): Shop API, Session cache, Order events, Order worker, Sign-in, Data zone. Data zone (in Private network): Orders. Main path: Customer → Web shop → Shop API → Order events → Order worker → Payment provider. Most connected: Shop API (5 connections). Nothing leads into Customer. Bottleneck: Shop API; without it the diagram falls apart. Customer (person): connects to Web shop (browses). Web shop (frontend): connects to Content network (loads assets, via HTTPS) and Shop API (calls, via HTTPS/JSON). Shop API (service): connects to Session cache (sessions, via RESP), Sign-in (checks token, via OIDC), Orders (reads, writes, via SQL/TLS) and Order events (publishes, via AMQP). Content network (external system): no outgoing connection. Session cache (cache): no outgoing connection. Order events (queue): connects to Order worker (delivers). Sign-in (security): no outgoing connection. Order worker (service): connects to Payment provider (charges, via HTTPS), Invoices (stores PDF, via S3 API) and Orders (updates, via SQL/TLS). Orders (database): no outgoing connection. Invoices (storage): no outgoing connection. Payment provider (external system): no outgoing connection.Cloud region eu-central-1Private networkData zoneCustomer → Web shop: browsesWeb shop → Content network: loads assets [HTTPS]Web shop → Shop API: calls [HTTPS/JSON]Shop API → Session cache: sessions [RESP]Shop API → Sign-in: checks token [OIDC]Shop API → Orders: reads, writes [SQL/TLS]Shop API → Order events: publishes [AMQP]Order events → Order worker: deliversOrder worker → Payment provider: charges [HTTPS]Order worker → Invoices: stores PDF [S3 API]Order worker → Orders: updates [SQL/TLS]browsesloads assets[HTTPS]calls[HTTPS/JSON]sessions[RESP]checks token[OIDC]reads, writes[SQL/TLS]publishes[AMQP]deliverscharges[HTTPS]stores PDF[S3 API]updates[SQL/TLS]CustomerCustomerWeb shop – browserWeb shopbrowserContent networkContent networkShop API – Node.jsShop APINode.jsSession cache – RedisSession cacheRedisOrder eventsOrder eventsOrder workerOrder workerOrders – PostgresOrdersPostgresInvoices – object storageInvoicesobject storagePayment providerPayment providerSign-in – identity providerSign-inidentity provider

Source: Architecture handbook, overview

Show chart data
Data for Web shop on one cloud region
ComponentKindBoundaryConnects to
CustomerpersonWeb shop (browses)
Web shopfrontendContent network (loads assets, via HTTPS), Shop API (calls, via HTTPS/JSON)
Shop APIserviceCloud region eu-central-1 › Private networkSession cache (sessions, via RESP), Sign-in (checks token, via OIDC), Orders (reads, writes, via SQL/TLS), Order events (publishes, via AMQP)
Content networkexternal system
Session cachecacheCloud region eu-central-1 › Private network
Order eventsqueueCloud region eu-central-1 › Private networkOrder worker (delivers)
Sign-insecurityCloud region eu-central-1 › Private network
Order workerserviceCloud region eu-central-1 › Private networkPayment provider (charges, via HTTPS), Invoices (stores PDF, via S3 API), Orders (updates, via SQL/TLS)
OrdersdatabaseCloud region eu-central-1 › Private network › Data zone
InvoicesstorageCloud region eu-central-1
Payment providerexternal system
  • Architecture diagram
  • Show where the parts of a system run