Skip to content

Latest commit

Β 

History

History
294 lines (230 loc) Β· 12.7 KB

File metadata and controls

294 lines (230 loc) Β· 12.7 KB

DevOps Intro β€” Modern DevOps Practices Through One Project

Course Project Duration Grading

A 10-week practical introduction to DevOps at Innopolis University. You will package, ship, observe, harden, and deploy one Go service β€” QuickNotes β€” across every lab. The discipline you learn here is the spine of modern production engineering.

πŸ’¬ "If it hurts, do it more often." β€” Jez Humble


Course Roadmap

10 weekly labs + 2 optional bonus labs:

Week Lab Module Key Topics & Technologies
1 Lab 1 DevOps Foundations & Git DevOps history, fork β†’ branch β†’ PR, signed commits (SSH 2.34+), PR templates
2 Lab 2 Version Control Deep Dive Object model, reflog recovery, reset modes, signed tags, rebase, bisect
3 Lab 3 CI/CD GitHub Actions (matrix, cache, OIDC); Bonus: GitLab CI mirror
4 Lab 4 OS & Networking OSI, DNS, HTTP, TLS, ss/dig/tcpdump/journalctl debugging
5 Lab 5 Virtualization Vagrant + VirtualBox, snapshots, cloud-init
6 Lab 6 Containers Multi-stage Dockerfile, distroless, Compose, hardening
7 Lab 7 Configuration Management Ansible playbook to deploy QuickNotes to Lab 5 VM; ansible-pull GitOps preview
8 Lab 8 SRE & Monitoring Golden signals, Prometheus, Grafana, one good alert, Checkly
9 Lab 9 DevSecOps Trivy, OWASP ZAP, SBOM, govulncheck reachability
10 Lab 10 Cloud Computing ghcr.io push from CI, Hugging Face Spaces deploy (card-free), Cloudflare Tunnel comparison
β€” Lab 11 Reproducible Builds (bonus) Nix flake for QuickNotes; deterministic OCI image
β€” Lab 12 WebAssembly Containers (bonus) TinyGo + Spin/WAGI; perf comparison vs Docker

The Project: QuickNotes

A small Go 1.24 notes API. You don't write the app β€” you operationalize it.

graph LR
    C["πŸ’» curl / browser"] -->|HTTP :8080| S["🟒 quicknotes<br/>Go 1.24"]
    S --> F["πŸ“„ data/notes.json"]
    S -->|GET /metrics| P["πŸ“Š Prometheus<br/>Lab 8"]
Loading
Endpoint Method Returns
/notes GET All notes
/notes/{id} GET One note / 404
/notes POST Created note (201)
/notes/{id} DELETE 204 / 404
/health GET {"status":"ok","notes":N}
/metrics GET Prometheus text format

Stack: Go 1.24 + standard library (net/http, encoding/json). No third-party deps in the core app. Static binary, tiny container, clean WASM target.

See app/README.md for run instructions.


Lectures

12 lecture files in lectures/ β€” 10 main + 2 bonus readings:

# Title File
1 Introduction to DevOps: From Conflict to Collaboration lec1.md
2 Version Control Deep Dive: Git Internals & Recovery lec2.md
3 CI/CD: From it works on my machine to it works on every machine lec3.md
4 Operating Systems & Networking: The Substrate Underneath lec4.md
5 Virtualization: One Box, Many Worlds lec5.md
6 Containers: Same Kernel, Different Worlds lec6.md
7 Configuration Management with Ansible lec7.md
8 SRE & Monitoring: Reliability Is an Engineering Discipline lec8.md
9 DevSecOps: Shift Security Left lec9.md
10 Cloud Computing: Ship QuickNotes to the Real World lec10.md
R11 Reading β€” Reproducible Builds with Nix (bonus) reading11.md
R12 Reading β€” WebAssembly Containers (bonus) reading12.md

Each main lecture has a 15-question post-quiz in EN + RU (uploaded to the course quiz platform β€” see Quiz leaderboards).


Technology Stack

Versions pinned to April 2026:

Category Tool Version Introduced
Application runtime Go + std lib 1.24 Week 1 (provided)
Git git 2.49+ Week 1
CI/CD GitHub Actions, GitLab CI β€” Week 3
Hypervisor VirtualBox 7.1.x Week 5
VM provisioning Vagrant 2.4.x Week 5
Containers Docker + Compose 28.x Week 6
Configuration Mgmt Ansible 10.x Week 7
Metrics Prometheus v3.x Week 8
Dashboards Grafana 13.x Week 8
Security scan Trivy 0.59.x Week 9
DAST OWASP ZAP 2.16.x Week 9
Cloud Hugging Face Spaces + Cloudflare Tunnel (card-free) β€” Week 10
(bonus) Reproducibility Nix Flakes 2.x Lab 11
(bonus) WASM TinyGo + Spin 0.34 / 3.x Lab 12

What Ships vs What Students Produce

The upstream course repo provides plumbing. Students produce skill in their forks.

Path Ships in repo Students produce
app/ (Go service + tests + Makefile + seed.json) βœ…
lectures/ βœ…
labs/labN.md (lab specs) βœ…
.github/pull_request_template.md βœ… Lab 1
.github/workflows/ci.yml βœ… Lab 3
Vagrantfile βœ… Lab 5
app/Dockerfile, compose.yaml βœ… Lab 6
ansible/ (playbook, inventory, templates) βœ… Lab 7
monitoring/ (Prometheus + Grafana provisioning) βœ… Lab 8
docs/runbook/ βœ… Lab 8
Security headers middleware, .trivyignore βœ… Lab 9
cloud/ (deploy scripts, fly.toml) βœ… Lab 10
flake.nix, flake.lock βœ… Lab 11 (bonus)
wasm/ (main.go, spin.toml) βœ… Lab 12 (bonus)
submissions/labN.md βœ… every lab

Lab Structure

Every main lab (1-10) follows the same shape:

Task Points Description Required?
Task 1 6 Core step that advances the project. Future labs depend on it. Yes
Task 2 4 (3 in Lab 1) Deeper dive into the week's topic. Skippable β€” won't affect future labs. No
Task 3 1 pt Lab 1 only β€” open-source community engagement (GH or GitLab) Lab 1 only
Bonus Task 2 Extension for motivated students (flat 2 pts each, no difficulty weighting). No

Bonus labs 11 & 12: Task 1 (4 pts) + Task 2 (4 pts) + Bonus Task (2 pts) = 10 pts each.

Submission Workflow

graph LR
    A[Fork course repo] --> B[Clone locally]
    B --> C[git switch -c feature/labN]
    C --> D[Complete tasks; sign commits]
    D --> E[Push to your fork]
    E --> F[Open PR β†’ course main]
    F --> G[Submit PR URL via Moodle]
Loading

PRs target the upstream course repo's main, not your fork's main.


Grading

Component Weight What it rewards
Main labs 1-10 (Task 1 + Task 2 + Task 3-where-applicable) 70% Diligent project work β€” the floor for any serious student
Bonus tasks 1-10 (2 pts each, flat β€” no difficulty weighting) 14% Going above and beyond on weekly topics
Quiz leaderboards (5 rolling per-2-labs windows, top-10 share 1% pool each) up to 5% Engagement + excellence; rewards late-joining students too
Bonus labs 11 + 12 (4+4+2 pts each β€” 10 pts each, 20 raw total) 20% Mastering reproducibility + WebAssembly
Final exam 30% Optional path β€” written, comprehensive
Sum (capped at 100%) 139% Multiple paths to A

What this produces in practice

Profile Main L-bonus Bonus labs Exam Quiz Total
All Task 1 only, nothing else 42% 0% 0% 0% 0% 42%
All Task 1+2, no bonuses, no exam 70% 0% 0% 0% 0% 70%
Add all weekly bonuses 70% 14% 0% 0% 0% 84%
+ good quiz 70% 14% 0% 0% 5% 89% ← just short of A
+ finish at least one bonus lab (10 pts β†’ 10% of grade) 70% 14% 10% 0% 5% 99% (A)
+ both bonus labs (20 pts β†’ 20% of grade) 70% 14% 20% 0% 5% 109% (capped 100%, A)
Or take the exam instead of bonus labs 70% 14% 0% 30% 5% 119% (capped 100%, A)
Do everything 70% 14% 20% 30% 5% 139% (capped 100%, A with overflow signal)
Coast (Task 1 only + lucky quiz) 42% 0% 0% 0% 5% 47%

Quiz leaderboards (the 5%)

Each lecture has a post-quiz on the course quiz platform. Quizzes feed 5 rolling leaderboards:

Window Labs covered
1 labs 1-2
2 labs 3-4
3 labs 5-6
4 labs 7-8
5 labs 9-10

Top-10 per window share 1% of the total grade.

Performance tiers

Grade Range Required to reach
A 90-100 All main labs + at least one of: bonus labs / exam (multiple paths)
B 75-89 Main labs + most bonuses, no extension work
C 60-74 Main lab Task 1 across most labs
D 0-59 Below expectations

Late submissions

  • Within 1 week of deadline: max 6/10 for that lab
  • After 1 week: 0
  • Bonus tasks and bonus labs: no late credit

Required Software

Week Add
1 Git 2.49+, Go 1.24, an SSH client, a GitHub or GitLab account
3 (nothing new β€” CI runs in the cloud)
4 tcpdump, ss (iproute2), dig, mtr, jq, optionally Wireshark
5 VirtualBox 7.1.x, Vagrant 2.4.x
6 Docker 28.x (Compose v2 built in)
7 Ansible 10.x (Python 3.11+)
8 (Prometheus + Grafana run in containers β€” nothing host-side needed)
9 (Trivy + ZAP run in containers)
10 A Hugging Face account (free, no card); cloudflared for the Bonus tunnel
11 (bonus) Nix (Determinate installer recommended)
12 (bonus) TinyGo 0.34+, Spin 3.x

Repository Structure

DevOps-Intro/
β”œβ”€β”€ app/                      # QuickNotes Go service (provided)
β”‚   β”œβ”€β”€ main.go, store.go, handlers.go
β”‚   β”œβ”€β”€ *_test.go             # tests
β”‚   β”œβ”€β”€ go.mod, Makefile
β”‚   β”œβ”€β”€ .golangci.yml, README.md
β”‚   └── seed.json
β”œβ”€β”€ lectures/
β”‚   β”œβ”€β”€ lec1.md … lec10.md    # 10 main lectures
β”‚   β”œβ”€β”€ reading11.md          # Nix bonus reading
β”‚   └── reading12.md          # WASM bonus reading
β”œβ”€β”€ labs/
β”‚   β”œβ”€β”€ lab1.md … lab10.md    # 10 main lab specs
β”‚   β”œβ”€β”€ lab11.md, lab12.md    # 2 bonus lab specs
└── README.md                 # you are here

Students add (in their forks):

β”œβ”€β”€ .github/                  # Lab 1, Lab 3
β”œβ”€β”€ Vagrantfile               # Lab 5
β”œβ”€β”€ ansible/                  # Lab 7
β”œβ”€β”€ monitoring/               # Lab 8
β”œβ”€β”€ cloud/                    # Lab 10
β”œβ”€β”€ flake.nix                 # Lab 11
β”œβ”€β”€ wasm/                     # Lab 12
└── submissions/
    β”œβ”€β”€ lab1.md … labN.md

Key Books & Resources

  • πŸ“• The Phoenix Project β€” Gene Kim, Kevin Behr, George Spafford (2013) β€” DevOps via novel
  • πŸ“• The DevOps Handbook β€” Kim, Humble, Debois, Willis (2nd ed 2021) β€” the practitioner's manual
  • πŸ“• Accelerate β€” Forsgren, Humble, Kim (2018) β€” the scientific evidence behind DORA
  • πŸ“— Pro Git β€” Chacon & Straub β€” free at git-scm.com/book
  • πŸ“— Continuous Delivery β€” Humble & Farley (2010) β€” Jolt-award winner
  • πŸ“˜ Site Reliability Engineering β€” Beyer, Jones, Petoff, Murphy β€” free at sre.google
  • πŸ“˜ Docker Deep Dive β€” Nigel Poulton β€” practical containers
  • πŸ“˜ Ansible: Up & Running β€” Lorin Hochstein & RenΓ© Moser (3rd ed)
  • πŸ“˜ Brendan Gregg β€” Linux Performance β€” the canonical map of Linux observability

Course Completion

By Week 10, you will have:

  • Forked, signed-committed, and PR-merged your way through 10 weeks
  • Built CI, containers, VMs, monitoring, security scans, and a real cloud deploy of the same Go service
  • Filed a blameless mini-postmortem after each lab
  • Maybe pushed yourself further with Nix and/or WebAssembly

The tools change every five years. The discipline doesn't. Welcome to DevOps.

🎯 Reference: this course's Spring 2026 structure mirrors the SRE-Intro standard (Innopolis University, completed Apr 2026). DevOps-Intro is the broader intro to how software is shipped; SRE-Intro is the deeper dive into keeping it reliable.