chartletv0.21.0chartlet.casoon.de

← All examples

Booking platform

A booking platform with two perspectives, the owning team and the technical debt as the teams rated it. Each view selects one; this one shows the teams: every box gains a stripe in its category's color and names the category, a legend lists the categories, and the guest and the payment provider, which belong to none, are shown as not stated. The description gives a sentence per category, the table a column. --perspective debt shows the other. Nothing is derived or rated by chartlet. Illustrative values.

Booking platform

examples/service-perspectives.json
{
  "schemaVersion": 1,
  "type": "architecture",
  "title": "Booking platform",
  "source": "Architecture handbook, booking model",
  "width": 1300,
  "height": 520,
  "architecture": {
    "boundaries": [
      {
        "id": "cloud",
        "label": "Cloud account"
      },
      {
        "id": "data",
        "label": "Data zone",
        "in": "cloud"
      }
    ],
    "components": [
      {
        "id": "guest",
        "label": "Guest",
        "kind": "person"
      },
      {
        "id": "app",
        "label": "Booking app",
        "kind": "frontend"
      },
      {
        "id": "gateway",
        "label": "API gateway",
        "in": "cloud"
      },
      {
        "id": "booking",
        "label": "Booking service",
        "sublabel": "Java",
        "in": "cloud"
      },
      {
        "id": "pricing",
        "label": "Pricing service",
        "sublabel": "Go",
        "in": "cloud"
      },
      {
        "id": "db",
        "label": "Bookings",
        "sublabel": "Postgres",
        "kind": "database",
        "in": "data"
      },
      {
        "id": "legacy",
        "label": "Legacy inventory",
        "kind": "database",
        "in": "data"
      },
      {
        "id": "pay",
        "label": "Payment provider",
        "kind": "external"
      }
    ],
    "connections": [
      {
        "id": "use",
        "from": "guest",
        "to": "app",
        "label": "books"
      },
      {
        "id": "call",
        "from": "app",
        "to": "gateway",
        "technology": "HTTPS"
      },
      {
        "id": "route",
        "from": "gateway",
        "to": "booking",
        "label": "routes"
      },
      {
        "id": "price",
        "from": "booking",
        "to": "pricing",
        "label": "asks price"
      },
      {
        "id": "store",
        "from": "booking",
        "to": "db",
        "technology": "SQL"
      },
      {
        "id": "stock",
        "from": "booking",
        "to": "legacy",
        "label": "checks rooms"
      },
      {
        "id": "charge",
        "from": "booking",
        "to": "pay",
        "label": "charges",
        "technology": "HTTPS"
      }
    ],
    "perspectives": [
      {
        "key": "owner",
        "title": "Team",
        "description": "The team named in the service catalogue runs each component.",
        "categories": [
          {
            "label": "Storefront",
            "components": [
              "app"
            ]
          },
          {
            "label": "Bookings",
            "components": [
              "booking",
              "pricing"
            ]
          },
          {
            "label": "Platform",
            "components": [
              "gateway",
              "db",
              "legacy"
            ]
          }
        ]
      },
      {
        "key": "debt",
        "title": "Technical debt",
        "description": "Debt as the owning team rated it in the last review.",
        "categories": [
          {
            "label": "low",
            "components": [
              "app",
              "pricing"
            ]
          },
          {
            "label": "medium",
            "components": [
              "gateway",
              "db"
            ]
          },
          {
            "label": "high",
            "components": [
              "booking"
            ]
          }
        ]
      }
    ],
    "views": [
      {
        "key": "owners",
        "title": "Booking platform: who runs what",
        "components": [
          "guest",
          "app",
          "gateway",
          "booking",
          "pricing",
          "db",
          "legacy",
          "pay"
        ],
        "perspective": "owner"
      },
      {
        "key": "debt",
        "title": "Booking platform: technical debt",
        "components": [
          "guest",
          "app",
          "gateway",
          "booking",
          "pricing",
          "db",
          "legacy",
          "pay"
        ],
        "perspective": "debt"
      }
    ]
  }
}
Focus
Booking platform: who runs what
Booking platform: who runs whatArchitecture diagram with 8 components and 7 connections in 2 boundaries. Cloud account: API gateway, Booking service, Pricing service, Data zone. Data zone (in Cloud account): Bookings, Legacy inventory. Most connected: Booking service (5 connections). Nothing leads into Guest. Bottleneck: API gateway; without it the diagram falls apart. Guest (person): connects to Booking app (books). Booking app (frontend): connects to API gateway (via HTTPS). API gateway (service): connects to Booking service (routes). Booking service (service): connects to Pricing service (asks price), Bookings (via SQL), Legacy inventory (checks rooms) and Payment provider (charges, via HTTPS). Pricing service (service): no outgoing connection. Bookings (database): no outgoing connection. Legacy inventory (database): no outgoing connection. Payment provider (external system): no outgoing connection. Perspective Team: Storefront: Booking app; Bookings: Booking service, Pricing service; Platform: API gateway, Bookings, Legacy inventory; not stated: Guest, Payment provider. The team named in the service catalogue runs each component.Cloud accountData zoneGuest → Booking app: booksBooking app → API gateway: [HTTPS]API gateway → Booking service: routesBooking service → Pricing service: asks priceBooking service → Bookings: [SQL]Booking service → Legacy inventory: checks roomsBooking service → Payment provider: charges [HTTPS]books[HTTPS]routesasks price[SQL]checks roomscharges[HTTPS]Guest – not statedGuestnot statednot statedBooking app – StorefrontBooking appStorefrontStorefrontAPI gateway – PlatformAPI gatewayPlatformPlatformBooking service – Java · BookingsBooking serviceJava · BookingsBookingsPricing service – Go · BookingsPricing serviceGo · BookingsBookingsBookings – Postgres · PlatformBookingsPostgres · PlatformPlatformLegacy inventory – PlatformLegacy inventoryPlatformPlatformPayment provider – not statedPayment providernot statednot statedTeam:StorefrontBookingsPlatformnot stated

Source: Architecture handbook, booking model

Show chart data
Data for Booking platform: who runs what
ComponentKindBoundaryTeamConnects to
Guestpersonnot statedBooking app (books)
Booking appfrontendStorefrontAPI gateway (via HTTPS)
API gatewayserviceCloud accountPlatformBooking service (routes)
Booking serviceserviceCloud accountBookingsPricing service (asks price), Bookings (via SQL), Legacy inventory (checks rooms), Payment provider (charges, via HTTPS)
Pricing serviceserviceCloud accountBookings
BookingsdatabaseCloud account › Data zonePlatform
Legacy inventorydatabaseCloud account › Data zonePlatform
Payment providerexternal systemnot stated
  • Architecture diagram with perspectives
  • Show who owns what, or where the debt is