Course booking: containers
The same course booking system one level down — the containers template: a boundary around its separately running parts, a web app, an API, a queue with its worker, a database and a file store, with the learner and the external systems outside. Sublabels say what each part is, connections how they talk. The description names the API and the queue as the bottlenecks. Illustrative values.
Course booking: containers
examples/booking-containers.json{
"schemaVersion": 1,
"type": "architecture",
"title": "Course booking: containers",
"height": 940,
"architecture": {
"boundaries": [
{
"id": "system",
"label": "Course booking (software system)"
}
],
"components": [
{
"id": "learner",
"label": "Learner",
"kind": "person"
},
{
"id": "web",
"label": "Web app",
"sublabel": "single-page app",
"kind": "frontend",
"in": "system"
},
{
"id": "api",
"label": "Booking API",
"sublabel": "API application",
"in": "system"
},
{
"id": "jobs",
"label": "Job queue",
"sublabel": "message queue",
"kind": "queue",
"in": "system"
},
{
"id": "worker",
"label": "Worker",
"sublabel": "background jobs",
"in": "system"
},
{
"id": "db",
"label": "Bookings",
"sublabel": "relational database",
"kind": "database",
"in": "system"
},
{
"id": "files",
"label": "Certificates",
"sublabel": "file store",
"kind": "storage",
"in": "system"
},
{
"id": "payment",
"label": "Payment provider",
"kind": "external"
},
{
"id": "mail",
"label": "E-mail service",
"kind": "external"
}
],
"connections": [
{
"from": "learner",
"to": "web",
"label": "books a course",
"technology": "HTTPS"
},
{
"from": "web",
"to": "api",
"label": "calls",
"technology": "JSON/HTTPS"
},
{
"from": "api",
"to": "db",
"label": "reads, writes",
"technology": "SQL"
},
{
"from": "api",
"to": "payment",
"label": "takes payment",
"technology": "HTTPS"
},
{
"from": "api",
"to": "jobs",
"label": "queues jobs"
},
{
"from": "jobs",
"to": "worker",
"label": "delivers"
},
{
"from": "worker",
"to": "files",
"label": "stores certificates"
},
{
"from": "worker",
"to": "mail",
"label": "sends confirmations",
"technology": "SMTP"
}
],
"mainPath": [
"learner",
"web",
"api",
"db"
]
}
}Focus
Show chart data
| Component | Kind | Boundary | Connects to |
|---|---|---|---|
| Learner | person | Web app (books a course, via HTTPS) | |
| Web app | frontend | Course booking (software system) | Booking API (calls, via JSON/HTTPS) |
| Booking API | service | Course booking (software system) | Bookings (reads, writes, via SQL), Payment provider (takes payment, via HTTPS), Job queue (queues jobs) |
| Job queue | queue | Course booking (software system) | Worker (delivers) |
| Bookings | database | Course booking (software system) | |
| Payment provider | external system | ||
| Worker | service | Course booking (software system) | Certificates (stores certificates), E-mail service (sends confirmations, via SMTP) |
| Certificates | storage | Course booking (software system) | |
| E-mail service | external system |