Appendix: How Software Reaches the Internet
You have built the pieces. This appendix puts them on one map, from Python code on your laptop to a service answering real requests on the internet.
The map matters because production vocabulary arrives in categories that are easy to mix up. Docker, AWS, GitHub Actions, Gunicorn, DNS, and Kubernetes can sound like competing tools. They are not. Each answers a different question at a different point in the journey.
source code
↓ starts as
running process
↓ listens on
port on a machine
↓ reached through
domain + DNS + HTTPS
↓ packaged as
container image
↓ stored in
registry
↓ started by
deployment platform
↓ kept healthy through
operations and observability
↓ coordinated at larger scale by
an orchestrator, when warranted
This is not a second deployment tutorial. The book already gives you that journey: Chapter 20 puts the Music Time Machine online, Chapter 27 containerises the News API, Chapter 28 deploys it to AWS, Chapter 29 operates it, and Chapter 30 makes the complete system yours. This appendix gives those chapters a shared frame.
The questions are the map
| Question | Typical answer | Book destination |
|---|---|---|
| What is executing? | A process | Chapters 17 and 20 |
| How does traffic reach it? | Port, DNS, HTTPS, reverse proxy or load balancer | Chapters 20 and 28 |
| How is the runtime packaged? | A container image | Chapter 27 |
| Where is the release stored? | An image registry | Chapter 28 |
| How is a release delivered? | A deployment platform and CI/CD pipeline | Chapters 28 and 29 |
| How is it kept dependable? | Logs, metrics, health checks, alerts, backups | Chapter 29 |
| How are many workloads coordinated? | An orchestrator, sometimes Kubernetes | This appendix |
The useful skill is not remembering a long tool list. It is hearing a requirement and locating it on this map. "The app crashes when the server restarts" is a process supervision problem. "Users cannot reach the new release" may be routing, TLS, health checks, or the deployment itself. "We should use Kubernetes" is not yet a requirement at all. It is a proposed answer whose question still needs to be found.
What to carry into the appendix
- Start with the running program. Every production system eventually becomes one or more operating-system processes.
- Keep packaging separate from hosting. Docker can package an application without deciding where it runs.
- Keep deployment separate from operations. Reaching production once is different from staying dependable for months.
- Earn complexity. One managed service or one server is a serious production architecture when it meets the requirements.
The next section follows one HTTPS request all the way from a user's browser to the Python process that answers it.