Ana içeriğe geç

🗺️ Müfredat — Bloklar, Bağımlılık, Geçiş Sinyalleri#

"Sıralama teknolojiye göre değil, bağımlılığa göre kurulur. Her adımın gerekçesi: bir sonrakini anlamak için bu şart."

Bu sayfa patikanın iskeletidir: hangi modül hangi bloktadır, neyi ön koşul sayar, bir bloktan diğerine ne zaman geçilir. Blok sınırları ve bloklar arası sıra değiştirilemez. Blok içinde modül bölmek serbesttir.

Seviye ekseni araç sayısı değil, sorumluluk yarıçapıdır:

Tanım
L0 Tanımlı sistemde tanımlı işi yapar
L1 Bir sistemin sahibidir, o sistem için çağrı alır
L2 Hangi sistemin var olması gerektiğine karar verir, "hayır" diyebilir

📋 Modül tablosu#

ID Modül Blok Süre Ön koşul
A0 Başlamadan önce: ortam, terminal, patika nasıl işler A · L0 ~6s
A1 Linux temeli: process, filesystem, izin, kullanıcı/grup A · L0 ~16s A0
A2 Ağ I: TCP/IP, port, routing A · L0 ~14s A1
A3 Ağ II: DNS → HTTP → TLS/sertifika A · L0 ~16s A2
A4 Git temeli: commit, branch, merge, rebase, conflict A · L0 ~12s A1
A5 Bash — iş görecek kadar kabuk A · L0 ~12s A1, A4
A6 Bir uygulamayı elle ayağa kaldır (container YOK) A · L0 ~27s A1, A2, A3, A4, A5
B1 Log okuma: journalctl, structured logging B · L0 ~12s A6
B2 Metrik: Prometheus temeli, cardinality B · L0 ~12s A6, B1
B3 İlk kırık lab — kırık VM'de arıza bulma B · L0 ~12s B1, B2
C0 Ops için Python — otomasyon betiği yazacak kadar C · L1 ~30s A5
C1 Container: image, katman, multi-stage, compose C · L1 ~14s A6, B3
C2 CI: test → build → artifact → registry C · L1 ~16s A4, C0, C1
C3 Terraform — A6'yı otomatikleştir C · L1 ~16s A6, C1
C4 Bulut temelleri + bütçe alarmı C · L1 ~12s C3
D1 K8s temel: Pod/Deployment/Service/Ingress — RBAC + NetworkPolicy ilk günden D · L1 ~28s C1, C2
D2 K8s production: request/limit, probe, PDB, HPA D · L1 ~16s D1
D3 Secret yönetimi D · L1 ~12s D1
D4 Supply chain: tarama + imzalama — C2 pipeline'ının devamı D · L1 ~14s C2, D1
D5 GitOps (ArgoCD) — tek uygulama D · L1 ~14s D1, C2
E1 SLI / SLO / error budget E · L1 ~12s B2, D2
E2 Alerting + on-call disiplini E · L1 ~12s E1, B1
E3 Incident response + blameless postmortem E · L1 ~14s E2
E4 Veritabanı production — özellikle restore E · L1 ~14s A6, D2
E5 İleri kırık lab / chaos E · L1 ~12s E3, D2
F1 Maliyet ve trade-off (FinOps) F · L2 ~10s C4, D2
F2 Tehdit modelleme + uyum (KVKK / GDPR / SOC 2) F · L2 ~12s D1, D4
F3 Platform, IDP, Team Topologies F · L2 ~10s D5, F1
F4 Yazma: ADR, RFC, postmortem F · L2 ~10s E3
F5 Stakeholder yönetimi, "hayır" demek, vendor F · L2 ~6s F3

Toplam: 30 modül · ~423 saat · + 3 capstone (~60 saat) = ~483 saat. Blok toplamları: A 103 · B 36 · C 88 · D 84 · E 64 · F 48 · Capstone 60.

Kapı projeleri: Capstone 1 (Blok C sonu), Capstone 2 (Blok D sonu), Capstone 3 (Blok E sonu) → capstones/.


🔗 Bağımlılık grafiği (DAG — döngü yok)#

graph LR
  subgraph A["Blok A — Sezgi"]
    A0 --> A1
    A1 --> A2 --> A3
    A1 --> A4 --> A5
    A1 --> A5
    A3 --> A6
    A5 --> A6
  end
  subgraph B["Blok B — Görebilmek"]
    A6 --> B1 --> B2 --> B3
    A6 --> B2
  end
  subgraph C["Blok C — Tekrarlanabilirlik"]
    A5 --> C0 --> C2
    B3 --> C1 --> C2
    C1 --> C3 --> C4
  end
  subgraph D["Blok D — Orkestrasyon"]
    C1 --> D1
    C2 --> D1 --> D2
    D1 --> D3
    D1 --> D4
    C2 --> D4
    D1 --> D5
    C2 --> D5
  end
  subgraph E["Blok E — Sahiplik"]
    B2 --> E1
    D2 --> E1 --> E2 --> E3 --> E5
    B1 --> E2
    A6 --> E4
    D2 --> E4
    D2 --> E5
  end
  subgraph F["Blok F — Karar"]
    C4 --> F1 --> F3 --> F5
    D2 --> F1
    D1 --> F2
    D4 --> F2
    D5 --> F3
    E3 --> F4
  end

Doğrulama: Her modülün her ön koşulu kendisinden önce gelir; döngü yoktur; hiçbir modül sonraki bloğu ön koşul saymaz; A0 hiçbir şeyi ön koşul saymaz (tek giriş noktası — sıfırdan başlayan buradan girer).


🚦 Geçiş sinyalleri — takvim değil#

Blok geçişi süreyle değil, şu sorularla bağlanır. Kabul kriterlerin bu sinyalleri somutlaştırır:

Geçiş Sinyal
A → B Bir servisin neden ayağa kalkmadığını, dokümana bakmadan üç komutla daraltabiliyor musun?
B → C Bir arızayı log ve metrikle kanıtladın mı, tahmin etmedin mi?
C → D Sistemini sıfırdan, elle hiçbir şeye dokunmadan yeniden kurabiliyor musun?
D → E Kendi kurduğun bir şey senin hatanla bozuldu ve sen geri getirdin mi?
E → F Bir şeye "hayır" dedin ve gerekçeni yazılı savundun mu?

Bu sinyaller her blok sonunda bir sınavla somutlaşır — her soru bir modülün kabul kriterine izlenebilir, öznel "anladım" yoktur:

Blok Sınav Kapı
A block-a-intuition/STAGE-EXAM.md A → B
B block-b-visibility/STAGE-EXAM.md B → C
C block-c-reproducibility/STAGE-EXAM.md C → D (+ Capstone 1)
D block-d-orchestration/STAGE-EXAM.md D → E (+ Capstone 2)
E block-e-ownership/STAGE-EXAM.md E → F (+ Capstone 3)

Blok F bir sınavla kapanmaz — çıktısı yazıdır (ADR/RFC/postmortem) ve son iki kapı kendi kendine geçilemez (aşağıda Dürüst tavan).


🔒 En katı kural: Blok B bitmeden Blok C'ye geçilmez#

Göremediğin sistemi yönetemezsin. Karmaşıklık (container, K8s) eklemeye başlamadan önce, kurduğun sistemi görebiliyor olman gerekir. B3'ün kırık lab'ını geçmeden C0/C1'e başlama.

🧵 Güvenlik iplik olarak içeride#

Bu bir DevSecOps handbook'udur. "Önce K8s öğret, sonra ayrı bir hardening bölümü koy" yapısı, reponun kendi eleştirdiği "güvenliği sona bırakma" hatasının tekrarıdır. Bu yüzden D1 RBAC ve NetworkPolicy'siz yazılmaz; D4 ayrı bir güvenlik dersi değil, C2'de kurulan pipeline'ın devamıdır. Güvenlik bir blok değil, bloklara dağılmış bir ipliktir.


🧗 Dürüst tavan#

Son iki kapı (E, F) kendi kendine geçilemez. Seçmediğin bir arıza, sahibi olduğun bir sistem ve gerçek kullanıcı gerekir. Bu noktada yapılacak şey daha çok okumak değil: işe girmek, on-call rotasyonuna girmek, incident'e gönüllü olmak. Bu patika seni oraya kadar getirir; sonrasını üretim ortamı öğretir.

Neyin henüz eklenmediği ve niçin: NOT-YET.md. Sertifika kapıları (Blok C/D/E sonu, 3 kapı — 10 değil): Faz 6.5'te certifications/.


"Aynı sisteme üç kez dönülür: D'de nasıl çalıştığı için, E'de nasıl bozulduğu için, F'de ne kadara mal olduğu ve kimin sahiplendiği için."