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.

The production map
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

QuestionTypical answerBook destination
What is executing?A processChapters 17 and 20
How does traffic reach it?Port, DNS, HTTPS, reverse proxy or load balancerChapters 20 and 28
How is the runtime packaged?A container imageChapter 27
Where is the release stored?An image registryChapter 28
How is a release delivered?A deployment platform and CI/CD pipelineChapters 28 and 29
How is it kept dependable?Logs, metrics, health checks, alerts, backupsChapter 29
How are many workloads coordinated?An orchestrator, sometimes KubernetesThis 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.