Skip to content

Latest commit

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DevOps Intro β€” Modern DevOps Practices Through One Project

CourseProjectDurationGrading

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:

WeekLabModuleKey Topics & Technologies
1Lab 1DevOps Foundations & GitDevOps history, fork β†’ branch β†’ PR, signed commits (SSH 2.34+), PR templates
2Lab 2Version Control Deep DiveObject model, reflog recovery, reset modes, signed tags, rebase, bisect
3Lab 3CI/CDGitHub Actions (matrix, cache, OIDC); Bonus: GitLab CI mirror
4Lab 4OS & NetworkingOSI, DNS, HTTP, TLS, ss/dig/tcpdump/journalctl debugging
5Lab 5VirtualizationVagrant + VirtualBox, snapshots, cloud-init
6Lab 6ContainersMulti-stage Dockerfile, distroless, Compose, hardening
7Lab 7Configuration ManagementAnsible playbook to deploy QuickNotes to Lab 5 VM; ansible-pull GitOps preview
8Lab 8SRE & MonitoringGolden signals, Prometheus, Grafana, one good alert, Checkly
9Lab 9DevSecOpsTrivy, OWASP ZAP, SBOM, govulncheck reachability
10Lab 10Cloud Computingghcr.io push from CI, Hugging Face Spaces deploy (card-free), Cloudflare Tunnel comparison
β€”Lab 11Reproducible Builds (bonus)Nix flake for QuickNotes; deterministic OCI image
β€”Lab 12WebAssembly 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
EndpointMethodReturns
/notesGETAll notes
/notes/{id}GETOne note / 404
/notesPOSTCreated note (201)
/notes/{id}DELETE204 / 404
/healthGET{"status":"ok","notes":N}
/metricsGETPrometheus 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:

#TitleFile
1Introduction to DevOps: From Conflict to Collaborationlec1.md
2Version Control Deep Dive: Git Internals & Recoverylec2.md
3CI/CD: From it works on my machine to it works on every machinelec3.md
4Operating Systems & Networking: The Substrate Underneathlec4.md
5Virtualization: One Box, Many Worldslec5.md
6Containers: Same Kernel, Different Worldslec6.md
7Configuration Management with Ansiblelec7.md
8SRE & Monitoring: Reliability Is an Engineering Disciplinelec8.md
9DevSecOps: Shift Security Leftlec9.md
10Cloud Computing: Ship QuickNotes to the Real Worldlec10.md
R11Reading β€” Reproducible Builds with Nix (bonus)reading11.md
R12Reading β€” 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:

CategoryToolVersionIntroduced
Application runtimeGo + std lib1.24Week 1 (provided)
Gitgit2.49+Week 1
CI/CDGitHub Actions, GitLab CIβ€”Week 3
HypervisorVirtualBox7.1.xWeek 5
VM provisioningVagrant2.4.xWeek 5
ContainersDocker + Compose28.xWeek 6
Configuration MgmtAnsible10.xWeek 7
MetricsPrometheusv3.xWeek 8
DashboardsGrafana13.xWeek 8
Security scanTrivy0.59.xWeek 9
DASTOWASP ZAP2.16.xWeek 9
CloudHugging Face Spaces + Cloudflare Tunnel (card-free)β€”Week 10
(bonus) ReproducibilityNix Flakes2.xLab 11
(bonus) WASMTinyGo + Spin0.34 / 3.xLab 12

What Ships vs What Students Produce

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

PathShips in repoStudents 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:

TaskPointsDescriptionRequired?
Task 16Core step that advances the project. Future labs depend on it.Yes
Task 24 (3 in Lab 1)Deeper dive into the week's topic. Skippable β€” won't affect future labs.No
Task 31 ptLab 1 only β€” open-source community engagement (GH or GitLab)Lab 1 only
Bonus Task2Extension 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

ComponentWeightWhat 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 exam30%Optional path β€” written, comprehensive
Sum (capped at 100%)139%Multiple paths to A

What this produces in practice

ProfileMainL-bonusBonus labsExamQuizTotal
All Task 1 only, nothing else42%0%0%0%0%42%
All Task 1+2, no bonuses, no exam70%0%0%0%0%70%
Add all weekly bonuses70%14%0%0%0%84%
+ good quiz70%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 labs70%14%0%30%5%119% (capped 100%, A)
Do everything70%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:

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

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

Performance tiers

GradeRangeRequired to reach
A90-100All main labs + at least one of: bonus labs / exam (multiple paths)
B75-89Main labs + most bonuses, no extension work
C60-74Main lab Task 1 across most labs
D0-59Below 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

WeekAdd
1Git 2.49+, Go 1.24, an SSH client, a GitHub or GitLab account
3(nothing new β€” CI runs in the cloud)
4tcpdump, ss (iproute2), dig, mtr, jq, optionally Wireshark
5VirtualBox 7.1.x, Vagrant 2.4.x
6Docker 28.x (Compose v2 built in)
7Ansible 10.x (Python 3.11+)
8(Prometheus + Grafana run in containers β€” nothing host-side needed)
9(Trivy + ZAP run in containers)
10A 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.

About

πŸš€ DevOps intro elective β€” 10 hands-on labs + 2 bonus building QuickNotes end-to-end: Git internals, CI/CD with GitHub Actions, OS & networking, Vagrant VMs, Docker, Ansible, golden-signal monitoring, Trivy + ZAP scanning, and free-tier cloud deployment.

Topics

Resources

Stars

84 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages