# exit-zero-academy/devopsthehardway architecture

> Architecture diagram of the GitHub repository exit-zero-academy/devopsthehardway, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/exit-zero-academy/devopsthehardway
- Repository: https://github.com/exit-zero-academy/devopsthehardway

## Overview

DevOps The Hard Way is a hands-on learning repository: learners start with onboarding, progress through tutorials and exercises, then apply skills in projects. Its contents span Linux and Bash, networking, cloud services, containers, Kubernetes, CI/CD, infrastructure as code, and monitoring. The tree also includes runnable examples and deployment demonstrations. Edges below show only README-documented learning relationships or calls visible in the sampled source; the tutorial and infrastructure contents are not all sampled.

Main entry points: [`tutorials/onboarding.md`](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/onboarding.md) (Onboarding), [`tutorials/linux_intro.md`](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/linux_intro.md) (Linux and Bash), [`hello_world_flask/app.py`](https://github.com/exit-zero-academy/devopsthehardway/blob/main/hello_world_flask/app.py) (Flask and S3), [`roberta_v2/app.py`](https://github.com/exit-zero-academy/devopsthehardway/blob/main/roberta_v2/app.py) (Text analysis API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_learning["Learning curriculum"]
  node_onboarding["Onboarding<br/>[onboarding.md]"]
  node_linux["Linux and Bash<br/>[linux_intro.md]"]
  node_networking["Networking"]
  node_aws["AWS<br/>[aws_intro.md]"]
  node_containers["Docker<br/>[docker_intro.md]"]
  node_iac["Infrastructure as Code<br/>[IaC_ansible.md]"]
  node_jenkins["Jenkins and CI/CD"]
  node_k8slearning["Kubernetes"]
  node_observability["Monitoring"]
  node_portfolio["Hands-on projects<br/>[README.md]"]
end

subgraph group_apps["Application examples"]
  node_flask["Flask and S3<br/>[app.py]"]
  node_textanalysis["Text analysis API<br/>[app.py]"]
  node_cache[("Analysis cache<br/>[cache.py]")]
  node_socketserver["Linux socket server<br/>[server.c]"]
  node_pythonserver["Readiness server<br/>[app.py]"]
  node_loadtest["HTTP load test<br/>[locustfile.py]"]
end

subgraph group_cloud["Cloud and automation"]
  node_moviealerts["Movie notifications<br/>[app.py]"]
  node_ansible["Nginx deployment<br/>[site.yaml]"]
end

subgraph group_kube["Kubernetes examples"]
  node_k8smanifests["Kubernetes manifests"]
  node_zeroapp["Zero-downtime app<br/>[app.js]"]
end

node_learner(("Learner"))
node_external_sns(("SNS<br/>external"))
node_external_s3(("S3<br/>external"))
node_external_http(("HTTP endpoint<br/>external"))

node_learner -->|"starts with"| node_onboarding
node_onboarding -->|"begins study"| node_linux
node_linux -->|"applies skills"| node_portfolio
node_textanalysis -->|"reads and writes"| node_cache
node_moviealerts -->|"publishes alert"| node_external_sns
node_flask -->|"lists buckets"| node_external_s3
node_loadtest -->|"sends requests"| node_external_http

click node_onboarding "https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/onboarding.md"
click node_linux "https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/linux_intro.md"
click node_networking "https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/networking_computer_nets.md"
click node_aws "https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/aws_intro.md"
click node_containers "https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/docker_intro.md"
click node_iac "https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/IaC_ansible.md"
click node_jenkins "https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/jenkins_setup_and_intro.md"
click node_k8slearning "https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/k8s_setup_and_intro.md"
click node_observability "https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/monitoring_and_alerting_grafana_prometheus.md"
click node_flask "https://github.com/exit-zero-academy/devopsthehardway/blob/main/hello_world_flask/app.py"
click node_textanalysis "https://github.com/exit-zero-academy/devopsthehardway/blob/main/roberta_v2/app.py"
click node_cache "https://github.com/exit-zero-academy/devopsthehardway/blob/main/roberta_v2/cache.py"
click node_moviealerts "https://github.com/exit-zero-academy/devopsthehardway/blob/main/new_movie_lambda/app.py"
click node_socketserver "https://github.com/exit-zero-academy/devopsthehardway/blob/main/simple_linux_socket/server.c"
click node_pythonserver "https://github.com/exit-zero-academy/devopsthehardway/blob/main/simple_python_server/app.py"
click node_loadtest "https://github.com/exit-zero-academy/devopsthehardway/blob/main/http_load_test/locustfile.py"
click node_ansible "https://github.com/exit-zero-academy/devopsthehardway/blob/main/ansible_workdir/site.yaml"
click node_k8smanifests "https://github.com/exit-zero-academy/devopsthehardway/blob/main/k8s/deployment-demo.yaml"
click node_zeroapp "https://github.com/exit-zero-academy/devopsthehardway/blob/main/k8s/zero_downtime_node/app.js"
click node_portfolio "https://github.com/exit-zero-academy/devopsthehardway/blob/main/README.md"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_onboarding,node_linux,node_networking,node_aws,node_containers,node_iac,node_jenkins,node_k8slearning,node_observability,node_portfolio toneBlue
class node_flask,node_textanalysis,node_cache,node_socketserver,node_pythonserver,node_loadtest toneAmber
class node_moviealerts,node_ansible toneMint
class node_k8smanifests,node_zeroapp toneRose
class node_learner,node_external_sns,node_external_s3,node_external_http toneIndigo
```

## Components

### Learning curriculum

- [Onboarding](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/onboarding.md): `tutorials/onboarding.md`
- [Linux and Bash](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/linux_intro.md): `tutorials/linux_intro.md`
- [Networking](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/networking_computer_nets.md): `tutorials/networking_computer_nets.md`
- [AWS](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/aws_intro.md): `tutorials/aws_intro.md`
- [Docker](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/docker_intro.md): `tutorials/docker_intro.md`
- [Infrastructure as Code](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/IaC_ansible.md): `tutorials/IaC_ansible.md`
- [Jenkins and CI/CD](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/jenkins_setup_and_intro.md): `tutorials/jenkins_setup_and_intro.md`
- [Kubernetes](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/k8s_setup_and_intro.md): `tutorials/k8s_setup_and_intro.md`
- [Monitoring](https://github.com/exit-zero-academy/devopsthehardway/blob/main/tutorials/monitoring_and_alerting_grafana_prometheus.md): `tutorials/monitoring_and_alerting_grafana_prometheus.md`
- [Hands-on projects](https://github.com/exit-zero-academy/devopsthehardway/blob/main/README.md): `README.md`

### Application examples

- [Flask and S3](https://github.com/exit-zero-academy/devopsthehardway/blob/main/hello_world_flask/app.py): `hello_world_flask/app.py`
- [Text analysis API](https://github.com/exit-zero-academy/devopsthehardway/blob/main/roberta_v2/app.py): `roberta_v2/app.py`
- [Analysis cache](https://github.com/exit-zero-academy/devopsthehardway/blob/main/roberta_v2/cache.py): `roberta_v2/cache.py`
- [Linux socket server](https://github.com/exit-zero-academy/devopsthehardway/blob/main/simple_linux_socket/server.c): `simple_linux_socket/server.c`
- [Readiness server](https://github.com/exit-zero-academy/devopsthehardway/blob/main/simple_python_server/app.py): `simple_python_server/app.py`
- [HTTP load test](https://github.com/exit-zero-academy/devopsthehardway/blob/main/http_load_test/locustfile.py): `http_load_test/locustfile.py`

### Cloud and automation

- [Movie notifications](https://github.com/exit-zero-academy/devopsthehardway/blob/main/new_movie_lambda/app.py): `new_movie_lambda/app.py`
- [Nginx deployment](https://github.com/exit-zero-academy/devopsthehardway/blob/main/ansible_workdir/site.yaml): `ansible_workdir/site.yaml`

### Kubernetes examples

- [Kubernetes manifests](https://github.com/exit-zero-academy/devopsthehardway/blob/main/k8s/deployment-demo.yaml): `k8s/deployment-demo.yaml`
- [Zero-downtime app](https://github.com/exit-zero-academy/devopsthehardway/blob/main/k8s/zero_downtime_node/app.js): `k8s/zero_downtime_node/app.js`

### Other components

- **Learner**
- **SNS**: external
- **S3**: external
- **HTTP endpoint**: external

## Connections

- Learner → Onboarding: starts with (evidence: `README.md`)
- Onboarding → Linux and Bash: begins study (evidence: `README.md`)
- Linux and Bash → Hands-on projects: applies skills (evidence: `README.md`)
- Text analysis API → Analysis cache: reads and writes (evidence: `roberta_v2/app.py`)
- Movie notifications → SNS: publishes alert (evidence: `new_movie_lambda/app.py`)
- Flask and S3 → S3: lists buckets (evidence: `hello_world_flask/app.py`)
- HTTP load test → HTTP endpoint: sends requests (evidence: `http_load_test/locustfile.py`)
