
Want to Become a Database or Backend Engineer? Start Here!
Have you ever wondered what happens behind the scenes when thousands of customers try to purchase tickets for the same event?
How does an application prevent two customers from booking the same seat?
What happens when a customer clicks the payment button twice, a database table becomes locked, or an API receives more requests than it can handle?
And how do professional database and backend engineers build systems that remain reliable when things go wrong?
Welcome to Database & Backend Engineering: PostgreSQL, Python & FastAPI!
This practical, project-based course introduces you to the essential skills involved in building, securing, optimising, and maintaining modern database-driven backend applications.
Rather than simply learning SQL commands or building basic CRUD APIs, you'll explore the engineering challenges that arise when databases and backend services must work together reliably.
At the centre of the course is the Kitewell Platform, a simulated ticketing application that provides a realistic environment for learning database and backend engineering.
You'll investigate practical scenarios involving duplicate bookings, database locks, race conditions, double charges, stale cached data, and application reliability.
By the end of this course, you'll have developed practical PostgreSQL and backend engineering skills and applied them through a connected, real-world-style capstone project.
You join the platform team at Kitewell, a live-events ticketing company, and run its database and API the way real teams do. You work from tickets, on a running platform, while simulated customers browse and buy. Every output you see is real: the lab runs PostgreSQL 16, PgBouncer, Redis, a FastAPI service, a job worker and a fake payment provider on your own computer, in Docker.
Part 1 is the database engineer's job: data integrity, migrations, query performance, locking, security, backups, point-in-time recovery, replication, failover and connection pooling. Part 2 is the backend engineer's: input validation and tests, idempotent payments, caching, background jobs, observability, rate limiting and a P1 on-call incident. Each fix ends in a git commit and a closed ticket, so you finish with a portfolio repository that shows employers what you can do.
All companies, people and data in the lab are made up.
What you'll learn
Find and fix bad data, then add constraints so it can never happen again
Change a live schema safely with Alembic migrations and lock timeouts
Read EXPLAIN ANALYZE plans and add the right index without blocking sales
Reproduce a race condition and fix it with row locking
Give each application the least privilege it needs, and isolate tenants with row-level security
Recover deleted data with a base backup, WAL archives and point-in-time recovery
Build a streaming replica and run a failover drill
Diagnose "too many clients" errors and fix them with PgBouncer, and spot table bloat from disabled autovacuum
Validate API input and prove the fix with pytest
Stop double charges with idempotency keys
Cache hot pages in Redis, and invalidate them when data changes
Move slow work to a job queue with retries, and recover failed jobs
Add JSON request logs, Prometheus metrics and rate limiting to stop a scraper
Lead a P1 incident from symptom to root cause, fix it live, and write the postmortem
Requirements
A 64-bit computer with at least 8 GB of memory and 5 GB of free disk space, running Docker Desktop (Windows, Mac) or Docker (Linux)
Basic SQL (SELECT, WHERE, JOIN) and some Python. Everything else is explained as you go
No cloud account and no paid software
Who this course is for
Developers and analysts moving into database engineering, backend engineering or DBA roles
Junior engineers who want production experience before their first on-call shift
Bootcamp and degree graduates who need real incident work for their portfolio and interviews
Data engineers who want to understand the operational databases they read from