Software Engineering · Intermediate

System Design & Architecture

How real systems are put together: APIs and data models, caches and queues, failure, security and the trade-offs you must be able to defend.

Software Engineering program

Lessons
6
Study time
1h 55m
Level
Intermediate
Program
Software Engineering

Sign in to open the lessons

6 lessons

Lessons, files and narration open after you sign in and buy the program. One payment opens every course in it.

Sign in to open a lesson. Buying the program opens every course and lesson in it, permanently.

About this course

Once an application outgrows one developer and one server, the interesting problems begin: where state lives, what happens when a dependency fails, how a feature is added without rewriting everything, and how you defend those choices to people who will pay for them.

You will learn to move from requirements to a sketch of a system: services and their boundaries, data models, caches and queues, background jobs, read models, third-party integrations, authentication, and the failure modes nobody plans for. We practise writing architecture decision records — the one-page documents that make your reasoning reviewable.

The project is a ticket-booking system designed end to end, with every significant choice written down and defended. There is no single right answer; the marks are for recognising trade-offs and explaining yours clearly.

Who this is for

  • You are comfortable building features and want to be trusted with the shape of a system.
  • You are a mid-level developer preparing for a senior interview with a design round.
  • You lead or contract and need to justify technical decisions to non-technical people.

Before you start

  • Working experience building an application with an API and a database — Backend Development with Node.js or equivalent experience.
  • Some exposure to cloud hosting or deployment helps.
  • Four to six hours of reading and diagramming each week.

Where it leads

  • DevOps & Delivery puts the operational half of these decisions into practice.
  • AWS, GCP and infrastructure certifications build on the vocabulary from this course.
  • Architecture rounds are where mid-level candidates in Ghana most often stall; this course is rehearsal for that conversation.

Tools you will use

A diagramming tool (Excalidraw, draw.io or even paper)A code editor for small proofs of conceptThe course's decision-record template

What you will build

  1. 1Context diagrams from written requirements
  2. 2A data model with its boundaries and ownership drawn clearly
  3. 3A cache and queue plan with the invalidation strategy named
  4. 4A failure-mode review and a rollback plan
  5. 5A full design for a ticket-booking system, evaluated like a professional design review

Curriculum

2 modules · 6 lessons · 1h 55m

Sign in to open each lesson

01 · The building blocks

Clients, contracts, data and the components between them.

1. Clients, APIs and contracts

Every distributed system is held together by the contracts between its parts: the client assumes something about the server's responses, the server assumes something about the client's requests, and both assumptions are written down somewhere — in code, in a schema, or only in someone's head. This lesson covers contract design (resources, versioning, pagination, errors), the communication styles available (request/response, events, streaming) and how to choose, consistency expectations clients must hold, and the organisational reality that API design is team design. A good contract lets two teams — or two versions of one team — work without asking each other anything.

15 min

2. Choosing where data lives

There is no "the database" — there are workloads, and there are stores built for them: transactional rows, documents, key-value speed, analytical scans, search indexes, blobs. This lesson covers the spectrum (relational, document, key-value, time-series, search, object storage), how to choose from the *shape of your access patterns* rather than fashion, partitioning and sharding when one machine stops being enough, replication for read scale and durability, and the migration discipline of changing a store under traffic. Choosing well is mostly refusing to generalise: name the queries first, then the store.

20 min

3. Caches, queues and eventual work

Two of the most powerful tools in a system are also the two most misunderstood: caches (which make reads fast by *lying slightly*) and queues (which make systems robust by *not answering immediately*). This lesson covers cache placement and the invalidation problem in its several concrete forms, cache-aside and friends, thundering herds and their remedies, queue semantics (at-most/at-least/exactly once), idempotent consumers, backpressure and dead-lettering, and the events that tie them together. Both tools trade a simple truth for performance or resilience — and both fail in characteristic, nameable ways.

20 min

02 · Designing for failure

Security, reliability and the decisions you write down.

1. Designing for failure

Everything you depend on fails: machines, networks, disks, dependencies, your own deploy — and often in ways that compound (a retry storm against an already-struggling service). This lesson covers the vocabulary of reliability (availability math, SLOs, error budgets), failure domains and blast radius, timeouts, retries with backoff and jitter, circuit breakers, bulkheads, graceful degradation, and the chaos discipline of testing failure on purpose. Designing for failure is not pessimism; it is the difference between an incident and an outage.

20 min

2. Authentication, authorisation and the obvious holes

Security failures are rarely exotic: they are the obvious hole somebody walked past — the missing ownership check, the token that never expires, the session cookie without HttpOnly, the secret in the client bundle. This lesson is the systems view of the two words from the backend course: identity across services, sessions and tokens at scale, permission models, the OWASP-shaped list of the most common holes with their fixes, secrets management, and the culture that keeps a system defended — threat modelling you actually run, layered defences, and the human layer. The theme is unglamorous and true: security is the boring checklist done every time.

20 min

3. Trade-offs, and writing them down

Architecture is the practice of choosing between options that each *work* — because every property you maximise costs you another, and the teams that scale are the ones whose trade-offs survive the people who made them. This lesson covers seeing trade-offs explicitly (consistency vs availability, build vs buy, monolith vs services, sync vs async), the decision records and diagrams that make choices durable, how to re-open a decision honestly when context changes, and the organisational glue — fitness functions, evolution over rewrites — that keeps a system coherent as people turn over. Nothing is free; the craft is paying deliberately and remembering why.

20 min

6 lessons, including the design a ticket-booking system and defend every choice in a written decision record project. Sign in and buy the program to open them. Create an account to track progress and earn the certificate.

Taught by a working engineer

Yaw Darko — Principal Engineer. Every lesson is written to be used, not just watched.

A verifiable certificate

Complete every lesson and you get a certificate with a code and QR that an employer can check in seconds.

Practice in the Code Lab

Write and run code in the browser while you learn, with your work saved to your own account.

Still have a question?

Email hello@codemasterghana.com or send a message from the contact page — we answer within two working days, in English or Twi.