Skip to content

Refactor DevOps-Intro to SRE-Intro standard (Spring 2026)#907

Open
Cre-eD wants to merge 6 commits into
mainfrom
s26-refactor
Open

Refactor DevOps-Intro to SRE-Intro standard (Spring 2026)#907
Cre-eD wants to merge 6 commits into
mainfrom
s26-refactor

Conversation

@Cre-eD
Copy link
Copy Markdown
Contributor

@Cre-eD Cre-eD commented May 26, 2026

Summary

Spring 2026 refactor of DevOps-Intro to the SRE-Intro standard (canonical reference, commit 77d35c1, Apr 2026). The course pivots from a topic-disjoint format to a project-threaded format around a single Go service called QuickNotes (app/), evolved week-by-week through 10 main labs + 2 bonus labs.

Frozen "before" snapshot lives at branch s26 (= old main HEAD 6f044dd).

Commits

SHA Phase What landed
b8fc480 App skeleton QuickNotes Go 1.24 service (~700 lines: main / store / handlers + tests + Makefile + golangci config)
aa5aa1c Lectures 10 main lectures + 2 bonus readings rewritten to SRE-Intro density (15,818 → ~3,700 lines, 4.3× cut). 20 quizzes (EN+RU, 15 questions each) uploaded to the course quiz repo
7914e37 Labs 12 lab specs in 6+4+2 structure (lab1: 6+3+1+2; lab11-12: 6+4 only — bonus labs)
983fba0 Meta New 292-line README + .gitignore

Net delta: +6,443 / −20,302 lines across 42 files.

Key decisions

  • Project = QuickNotes (Go 1.24, std lib only, single-service notes API) threaded through every lab
  • Lab 7 topic change: GitOps/ArgoCD → Configuration Management with Ansible (intro-appropriate; reuses the Lab 5 VirtualBox VM as deploy target; `ansible-pull` as a GitOps preview Bonus)
  • GitLab path preserved for students locked out of GitHub: Lab 3 ships GitHub Actions as primary + GitLab CI as Bonus; Lab 1 community-engagement task is platform-agnostic
  • Lab 10 refactored from research-only to hands-on Cloud Run / Fly.io deploy + CI-automated registry push (capstone)
  • Grading: 70-14-5-30-30 = 149% capped at 100% (multiple paths to A)
  • Quiz scheme: 10 main lectures × 15 questions × (EN+RU) → 5 rolling per-2-labs leaderboards, top-10 of each share 1% pool (5% total)
  • Lec 4 (OS+Networking) kept as one focused 421-line lecture (down from 3296) — no split needed
  • Version pins to April 2026: Go 1.24, Docker 28.x, Trivy 0.59, ZAP 2.16, Prometheus v3, Grafana 13.x, kubectl 1.33, Ansible 10.x, Cloud Run, Spin 3.x

What's intentionally NOT in this PR

  • Reference submissions (`refs/labN.md`) — those require real infrastructure runs (VirtualBox, GCP/Fly.io, Spin runtime, Nix). Run `/submission` after the spec review settles
  • Frontend / UI — QuickNotes is API-only by design (intro scope)
  • Lab 6 / Lab 7 / Lab 10 cross-validation — instructor can spot-check during the ref-submission phase

Test plan

  • Skim 1 lecture and 1 lab to confirm tone + density match SRE-Intro
  • Verify QuickNotes builds: `cd app && go test -race ./... && go build ./...`
  • Smoke-test app: `go run .` then `curl :8080/health` + `POST /notes` (port 8080 must be free)
  • Check a quiz on the course quiz platform (e.g. `devops-intro-lec1-post`) for correctness + style
  • Confirm `s26` branch is intact (frozen snapshot of pre-refactor main)
  • Decide whether to defer ref submissions to a follow-up or block this merge on them

Migration note

Once merged, main becomes the new course; s26 stays forever as the historical snapshot. Students forking after merge get the new structure; existing forks should rebase or re-fork.

Cre-eD added 6 commits May 26, 2026 01:21
Replaces the placeholder index.html with a self-contained Go 1.24 notes API
that the rewritten 10-week course will package, deploy, observe, and harden
in successive labs.

- Single-file Go service: REST CRUD on /notes, /health, /metrics
- In-memory store with JSON-file persistence (atomic write)
- Prometheus text-format /metrics (gauge + counters, labelled by code)
- httptest-based handler tests; race-enabled
- Makefile + minimal golangci-lint config
- 4 seed notes for first-boot UX

Stray labs/lab13.md (IPFS bonus, superseded by Nix lab11) removed from the
working tree; it was never tracked so no rm needed.

Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
…ed course

Trims 10 lectures from 15,818 to ~3,278 total lines (4.8x reduction) while
preserving topic coverage and hitting SRE-Intro's 400-500-line / 17-25-slide
density target. Adds two new bonus readings (reading11 Nix, reading12 WASM)
that pair with the bonus labs.

Key topic changes for the project-threaded design:
- All lectures hook into QuickNotes (the Go service in app/)
- Every lecture mentions the GitHub-or-GitLab path so banned-from-GH students stay on track
- Lecture 7 retitled "Configuration Management with Ansible" (replaces GitOps;
  Ansible is intro-appropriate, builds on Lab 5's VM)
- Lecture 10 (Cloud) refactored to hands-on Cloud Run deploy
- Lecture 4 collapsed from 3296 -> 421 lines while keeping OS + Networking
  coverage; lec1-3, lec5-9 similarly trimmed

Versions pinned to April 2026 where applicable (Go 1.24, Docker 28.x,
VirtualBox 7.1.x, Trivy 0.59.x, ZAP 2.16.x, Prometheus v3.x, Grafana 13.x,
kubectl 1.33, Cloud Run, Spin 3.x).

Each main lecture (lec1-10) has a corresponding 15-question quiz in EN+RU
uploaded to the external quiz repo (devops-intro/lecN_post.json and
devops-intro-rus/lecN_post.json), category="post". 60% serious / 40% fun
mix, even answer distribution across 0/1/2/3.

Real incidents woven through: Knight Capital (2012), GitLab DB (2017),
Cloudflare BGP, xz-utils backdoor (2024), Heartbleed (2014), Facebook BGP
(2021), Slack 2/22/22, Log4Shell (2021), Equifax (2017), AWS us-east-1
(Dec 2021), Capital One (2019), Docker Hub rate-limits (2020),
tj-actions/changed-files (Mar 2025).

Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
…10pts (lab11-12)

Rewrites every lab in the project-threaded course structure:
- Lab 1: Git workflow + SSH signing + community engagement (6+3+1+2 mirroring SRE-Intro lab1)
- Labs 2-10: 6+4+2 with QuickNotes as the through-line
- Labs 11-12: bonus labs at 10 pts (Task 1 + Task 2 only, no Bonus row)

Each lab includes:
- Real commands (no hallucinated outputs) wired to QuickNotes
- Acceptance Criteria + Rubric + Common Pitfalls + Guidelines
- Reference back to the corresponding lecture

Key topic changes:
- Lab 3 GitLab CI is the Bonus (path for banned-GH students)
- Lab 7 replaces GitOps/ArgoCD with Ansible deploy to Lab 5 VM
- Lab 10 is now hands-on Cloud Run / Fly.io (not research-only)
- Lab 11 builds reproducible Nix flake + deterministic OCI
- Lab 12 ports a single endpoint to TinyGo + Spin/WAGI

Also removes the stale labs/lab11/app/ and labs/lab12/*.{Dockerfile,main.go}
plumbing files left over from the previous lab design.

Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
…ructure

README now matches the SRE-Intro template:
- 10-week roadmap table
- The Project (QuickNotes) — Go 1.24, single-service, endpoints + diagram
- 12 lectures + 12 labs map
- Technology stack table pinned to April 2026
- What ships vs what students produce
- 6+4+2 lab structure (with Lab 1 6+3+1+2 exception)
- 70-14-5-30-30 grading model (149% capped)
- Submission workflow diagram
- Performance tiers + late policy
- Required software week-by-week
- Repository structure
- Key books & resources

Drops the previous README's 995-line slide-TOC + verbose prose; lands at
~250 lines focused on operational info students actually need.

.gitignore covers: student artifacts (submissions/, refs/), Vagrant
runtime state, build outputs, Docker / Nix / WASM / cloud locals,
Python venvs, editor configs, OS files, CI scan artifacts, and the
local .claude/ agent config.

Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
…tLab as parallel path

Two corrections from review:

1. GitLab framing inverted. Previous draft made GitLab CI the Bonus task
   (2 pts) — rewarding students who already had GitHub access for doing
   extra GitLab work. Wrong incentive. GitLab is the *alternative path*
   for students who can't access GitHub at all (sanctions / account locks
   / country-of-origin filters). Both paths now earn the same 10 pts;
   students pick ONE based on which platform they have access to.

2. Lab handed students a copy-paste-ready ci.yml. Violates the lab-skill
   rule (provide infra plumbing as files; scaffold the skill). Rewritten
   to give requirements + design questions + doc links, no copy-pasteable
   YAML. The skill of this lab is *writing* the pipeline from first
   principles, not transcribing a tutorial.

Other changes:

- New Bonus task: Pipeline Performance Investigation (≤90s wall-clock goal,
  ≥3 optimizations beyond Task 2, before/after table, bottleneck analysis).
  Genuinely challenging and doesn't reintroduce GitLab.
- 8 design questions across Tasks 1+2 with written answers required —
  the answers matter more than the YAML
- Common Pitfalls and Guidelines sections updated to match

Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
…-paste answers

Applies the same fix from lab3 (commit 8387fb9) to the rest of the
code/config-heavy labs. The original drafts embedded complete
ready-to-paste artifacts in the lab spec, which violated the
lab-skill rule (provide plumbing as files; scaffold the skill).

Per-lab structural changes:

- lab5  Vagrant: removed full Vagrantfile; gave requirements + 4 design
        questions + Vagrant docs links
- lab6  Docker: removed full Dockerfile + compose.yaml; gave per-file
        requirements + 6 design questions across Tasks 1+2
- lab7  Ansible: removed full playbook + inventory + Jinja template;
        gave per-artifact requirements + 9 design questions (4+3+2)
- lab8  Monitoring: removed full Prometheus config + Grafana provisioning
        + dashboard JSON + alert rule details; gave requirements +
        4 design questions on Task 1 + 3 on Task 2
- lab9  DevSecOps: removed full Go middleware code; gave requirements
        (middleware pattern, ≥1 unit test, applies to all routes) +
        4 design questions on Task 1 + 3 on Task 2 + 3 on Bonus.
        Also moved triage to a labeled disposition table
        (FIX / ACCEPT / WATCH / FALSE POSITIVE).
- lab10 Cloud: removed full gcloud + fly.toml + release workflow YAML;
        gave platform-agnostic requirements + 3 design questions per task
- lab11 Nix: removed full flake.nix + dockerTools block; gave per-output
        requirements + 4+3 design questions
- lab12 WASM: removed full main.go + spin.toml; gave WAGI-contract
        requirements + 4+3 design questions

Each lab now has between 7 and 10 written design questions whose answers
matter more than the YAML/Go/Nix produced. The rubric explicitly grades
"design questions answered" alongside the working artifact.

Labs 1, 2, 4 unchanged — they are tool-usage tutorials (Git commands,
debugging commands), not pre-written code students copy.

Net line delta: ~3,528 -> ~3,106 (-422 lines) but with substantially
more learning surface per page.

Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant