Order platform and its data stores
Three services, each with its own database. Left to itself, every database follows its service, so they land at three depths and the Data tier boundary around them stretches over the queue and the worker. "sameRank": [["catalogDb", "ordersDb", "billingDb"]] puts the three at one position along the flow: the frame is one layer deep and the main path stays straight. A layout hint, not an edge; laid out again for the phone, where the tier is a row at the bottom. Illustrative values.
Order platform and its data stores
examples/data-tier.json{
"schemaVersion": 1,
"type": "architecture",
"title": "Order platform and its data stores",
"source": "Illustrative reference architecture",
"width": 1520,
"height": 560,
"architecture": {
"boundaries": [
{
"id": "platform",
"label": "Order platform"
},
{
"id": "data",
"label": "Data tier",
"in": "platform"
}
],
"components": [
{
"id": "shopper",
"label": "Shopper",
"kind": "person"
},
{
"id": "app",
"label": "Shop app",
"kind": "frontend"
},
{
"id": "gateway",
"label": "API gateway",
"in": "platform"
},
{
"id": "catalog",
"label": "Catalog service",
"in": "platform"
},
{
"id": "orders",
"label": "Order service",
"in": "platform"
},
{
"id": "queue",
"label": "Order events",
"kind": "queue",
"in": "platform"
},
{
"id": "billing",
"label": "Billing worker",
"in": "platform"
},
{
"id": "catalogDb",
"label": "Catalog",
"sublabel": "Postgres",
"kind": "database",
"in": "data"
},
{
"id": "ordersDb",
"label": "Orders",
"sublabel": "Postgres",
"kind": "database",
"in": "data"
},
{
"id": "billingDb",
"label": "Invoices",
"sublabel": "Postgres",
"kind": "database",
"in": "data"
}
],
"connections": [
{
"from": "shopper",
"to": "app",
"label": "orders"
},
{
"from": "app",
"to": "gateway",
"technology": "HTTPS"
},
{
"from": "gateway",
"to": "catalog",
"label": "browse"
},
{
"from": "gateway",
"to": "orders",
"label": "checkout"
},
{
"from": "catalog",
"to": "catalogDb",
"technology": "SQL"
},
{
"from": "orders",
"to": "ordersDb",
"technology": "SQL"
},
{
"from": "orders",
"to": "queue",
"label": "publishes"
},
{
"from": "queue",
"to": "billing",
"label": "delivers"
},
{
"from": "billing",
"to": "billingDb",
"technology": "SQL"
}
],
"mainPath": [
"shopper",
"app",
"gateway",
"orders",
"queue",
"billing"
],
"sameRank": [
[
"catalogDb",
"ordersDb",
"billingDb"
]
]
},
"mobile": {
"width": 440,
"height": 1100
}
}Focus
Source: Illustrative reference architecture
Show chart data
| Component | Kind | Boundary | Connects to |
|---|---|---|---|
| Shopper | person | Shop app (orders) | |
| Shop app | frontend | API gateway (via HTTPS) | |
| API gateway | service | Order platform | Catalog service (browse), Order service (checkout) |
| Catalog service | service | Order platform | Catalog (via SQL) |
| Order service | service | Order platform | Orders (via SQL), Order events (publishes) |
| Order events | queue | Order platform | Billing worker (delivers) |
| Billing worker | service | Order platform | Invoices (via SQL) |
| Catalog | database | Order platform › Data tier | |
| Invoices | database | Order platform › Data tier | |
| Orders | database | Order platform › Data tier |