Skip to content

Commit b8badda

Browse files
committed
feat: SRE-Intro course — Weeks 1-5
Site Reliability Engineering Fundamentals (Elective) 10-week course with progressive QuickTicket project. Weeks included: - Week 1: SRE Philosophy & Systems Thinking - Week 2: Containerization - Week 3: Monitoring, Observability & SLOs - Week 4: Kubernetes & Helm - Week 5: CI/CD & GitOps Contents: - 5 lectures (lec1-lec5.md) - 5 labs (lab1-lab5.md) with 10+2.5 pts each - QuickTicket starter app (3 Python/FastAPI services) - Monitoring stack configs (Grafana provisioning, partial dashboard) - docker-compose.monitoring.yaml overlay
0 parents  commit b8badda

27 files changed

Lines changed: 5344 additions & 0 deletions

README.md

Lines changed: 535 additions & 0 deletions
Large diffs are not rendered by default.

app/docker-compose.yaml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
services:
2+
gateway:
3+
build: ./gateway
4+
ports:
5+
- "3080:8080"
6+
environment:
7+
- EVENTS_URL=http://events:8081
8+
- PAYMENTS_URL=http://payments:8082
9+
- GATEWAY_TIMEOUT_MS=5000
10+
depends_on:
11+
- events
12+
- payments
13+
14+
events:
15+
build: ./events
16+
ports:
17+
- "8081:8081"
18+
environment:
19+
- DB_HOST=postgres
20+
- DB_PORT=5432
21+
- DB_NAME=quickticket
22+
- DB_USER=quickticket
23+
- DB_PASS=quickticket
24+
- DB_MAX_CONNS=10
25+
- REDIS_HOST=redis
26+
- REDIS_PORT=6379
27+
- REDIS_TIMEOUT_MS=1000
28+
- RESERVATION_TTL=300
29+
depends_on:
30+
postgres:
31+
condition: service_healthy
32+
redis:
33+
condition: service_healthy
34+
35+
payments:
36+
build: ./payments
37+
ports:
38+
- "8082:8082"
39+
environment:
40+
- PAYMENT_FAILURE_RATE=${PAYMENT_FAILURE_RATE:-0.0}
41+
- PAYMENT_LATENCY_MS=${PAYMENT_LATENCY_MS:-0}
42+
43+
postgres:
44+
image: postgres:16-alpine
45+
environment:
46+
- POSTGRES_DB=quickticket
47+
- POSTGRES_USER=quickticket
48+
- POSTGRES_PASSWORD=quickticket
49+
ports:
50+
- "5432:5432"
51+
volumes:
52+
- postgres_data:/var/lib/postgresql/data
53+
- ./seed.sql:/docker-entrypoint-initdb.d/01-seed.sql
54+
healthcheck:
55+
test: ["CMD-SHELL", "pg_isready -U quickticket"]
56+
interval: 5s
57+
timeout: 3s
58+
retries: 5
59+
60+
redis:
61+
image: redis:7-alpine
62+
ports:
63+
- "6379:6379"
64+
healthcheck:
65+
test: ["CMD", "redis-cli", "ping"]
66+
interval: 5s
67+
timeout: 3s
68+
retries: 5
69+
70+
volumes:
71+
postgres_data:

app/events/Dockerfile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM python:3.12-slim
2+
3+
WORKDIR /app
4+
COPY requirements.txt .
5+
RUN pip install --no-cache-dir -r requirements.txt
6+
COPY main.py .
7+
8+
EXPOSE 8081
9+
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8081"]

0 commit comments

Comments
 (0)