🛤️ शाळेच्या पद्धतीने platform engineering शिका

internal developer platform कसा चालतो, हे शाळेच्या सुविधा कार्यालयाच्या रूपात शिकवले आहे: प्रत्येक शिक्षिकेने स्वतःचा वर्ग-संच स्वतः बनवण्याऐवजी, कार्यालय तयार संच, एक सूची आणि एक बांधलेली वाट देते — नवीन शिक्षिकेला (एका team ला) काही मिनिटांत वर्ग (एक service) मिळतो, आणि कार्यालय शिक्षिकांना आपले ग्राहक मानते. प्रत्येक धडा म्हणजे एक शाळेची गोष्ट, त्यासोबत हाताने काढलेली आकृती आणि एक lab — आणि कार्यालय repo मध्येच आहे: शुद्ध Python मधले deterministic models (idp/, शून्य dependencies), जे तुम्ही बदलू आणि मोडू शकता.

🧭 cognitive load🤝 platform हे एक product🛤️ सोनेरी वाटा📇 service catalog🧰 self-service + quotas🧪 preview environments🚚 बांधलेल्या pipelines🔑 secrets ही एक सेवा🛡️ policy as code🏅 scorecards📊 DORA · SPACE🏛️ developer portal

🧭 भाग 1 — का आणि काय (1–4)

  • तिकिटांचा ढीग 🧭
  • शिक्षिका याच ग्राहक 🤝
  • तयार वर्ग-संच 🛤️
  • वर्गखोल्यांची नोंदवही 📇

🧰 भाग 2 — SELF-SERVICE (5–8)

  • मर्यादांसह एक मेनू 🧰
  • चाचणी वर्गखोल्या 🧪
  • एकच दिनक्रम-कार्ड 🚚
  • किल्ल्यांचे कपाट 🔑

🛡️ भाग 3 — संरक्षक नियम आणि मोजमाप (9–12)

  • कारण सांगणारे नियम 🛡️
  • तयारी-कार्डे 🏅
  • याचा उपयोग होतोय का? 📊
  • एकच स्वागत कक्ष 🏛️
# the 60-second wow — the facilities office, in your terminal:
git clone https://github.com/BaluRaut/learn-platform-engineering-school.git && cd learn-platform-engineering-school
python3 idp/demo.py                # 12 lessons: tickets, templates, quotas, previews, guardrails, DORA
python3 idp/test_idp.py            # 12 checks across the lessons

तुम्हाला काय दिसायला हवे (छाटलेले — यश असे दिसते):

═══ why ═══
── to open one classroom (ship one service) a teacher's team must handle 14 concerns alone
   with the facilities office: the team keeps 4 (application code, tests, alerts, on-call for the service)
   the office offers 10 as ready kits (Dockerfile, CI pipeline, Terraform, IAM, DNS + TLS …) — still visible, still changeable
── the ticket queue: 5 requests a day, the office finishes 4 a day, for 20 working days
   finished 80 · still waiting 20 · average wait 2.0 days
   a ticket finished on day 1 waited 0 days · one finished on day 20 waited 4 days — the line grows by 1 every day
   'you build it, you run it' stays — the office removes the undifferentiated work, not the ownership

═══ product ═══
── Dipika (the facilities office) interviews 5 departments: hours lost per week, per pain
   1. waiting for a database     15 h/week across 3 teams
   2. writing CI YAML             7 h/week across 2 teams
   3. finding a service's owner   5 h/week across 4 teams
   4. preview environments        5 h/week across 2 teams
   5. rotating secrets            3 h/week across 2 teams
── the roadmap starts at the top: self-service databases first, not the tool the office finds most fun
   month 1:  20% of departments chose the paved path
   month 3:  60% of departments chose the paved path
   month 6:  80% of departments chose the paved path
   adoption is earned, not mandated: if a team leaves the path, ask why — it is product feedback

═══ goldenpath ═══
── create ('python-service', 'Exam Results!', 'science') → refused:
   • name 'Exam Results!' — use 3–31 lowercase letters, digits or dashes, starting with a letter, e.g. 'exam-results'
── create ('python-service', 'timetable', 'sciense') → refused:
   • name 'timetable' is taken — pick another, or ask its owner in the catalog
   • owner 'sciense' is not a known group — choose one of: facilities-office, library, maths, science
── create ('java-service', 'exam-results', 'science') → refused:
   • no template 'java-service' — choose one of: python-service, static-site
── Katrina creates 'exam-results' from python-service v3 → 8 files, ready to push:
   README.md
   src/app.py
   tests/test_app.py
   Dockerfile
   catalog-info.yaml
   .github/workflows/ci.yml
   deploy/values.yaml
   docs/index.md
   catalog-info.yaml:
     apiVersion: backstage.io/v1alpha1
     kind: Component
     metadata:
       name: exam-results
     spec:
       type: service
       lifecycle: experimental
       owner: science
   a golden path is the easy way, not the only way — teams may leave it, and then they own what they change

═══ catalog ═══
── the catalog holds 8 entries owned by groups ['science', 'maths', 'library', 'facilities-office']
   science            owns ['exam-results', 'results-db']
   maths              owns ['parent-portal', 'timetable']
   facilities-office  owns ['auth']
   orphans (no owner, or the owner group is gone): ['canteen-orders', 'fees']
   broken references: [('fees', 'payments-api'), ('library-search', 'search-index')]
── blast radius — if auth breaks, these depend on it: ['canteen-orders', 'exam-results', 'fees', 'parent-portal', 'timetable']
   if results-db breaks: ['exam-results', 'parent-portal']
   the catalog is only as good as its freshness: keep catalog-info.yaml in each repo, next to the code

═══ selfservice ═══
── science's quota: 2 databases, 3 buckets, 2 queues, 6 CPU — requests go to the office's catalogue, not a ticket
   postgres-medium results-db    → ready: science-results-db {'owner': 'science', 'managed-by': 'facilities-office'}
   postgres-small  lab-db        → ready: science-lab-db {'owner': 'science', 'managed-by': 'facilities-office'}
   postgres-small  extra-db      → refused: science already uses 2/2 databases — delete one or ask for a bigger quota
   mongodb         notes-db      → refused: 'mongodb' is not in the catalogue — offered: postgres-small, postgres-medium, bucket, queue (or ask the office to add it)
   bucket          lab-photos    → ready: science-lab-photos {'owner': 'science', 'managed-by': 'facilities-office'}
   queue           grade-events  → ready: science-grade-events {'owner': 'science', 'managed-by': 'facilities-office'}
   used now: {'databases': 2, 'buckets': 1, 'queues': 1, 'cpu': 6}
   quotas + a fixed menu make self-service safe; every refusal says what to do next

═══ previews ═══
── one preview environment per pull request · TTL 48 h (restarts on push) · at most 3 live
   h1    pr-101 created → pr-101.preview.school.test
   h5    pr-102 created → pr-102.preview.school.test
   h10   pr-103 created → pr-103.preview.school.test
   h20   pr-101 deleted (PR closed)
   h30   pr-104 created → pr-104.preview.school.test
   h40   pr-103 updated, TTL restarts
   h41   pr-105 refused — 3 previews already live; retry when one closes
   h53   pr-102 expired (TTL 48 h)
   h70   pr-103 deleted (PR closed)
   h78   pr-104 expired (TTL 48 h)
   h120  pr-106 created → pr-106.preview.school.test
   h168  pr-106 expired (TTL 48 h)
── after one week (168 h): 5 previews made · 223 environment-hours with cleanup · 674 if nobody ever deleted them
   still live at the end: [] · abandoned PRs cost nothing after their TTL

═══ pipelines ═══
── the office publishes pipeline templates v1.0.0, v2.0.0 (adds SBOM + image scan), v2.1.0 (adds a dependency cache)
   exam-results    uses @v2      → runs v2.1.0                7 steps, 15 min  (scans images)
   timetable       uses @v2.0.0  → runs v2.0.0                6 steps, 17 min  (scans images)
   library-search  uses @v1      → runs v1.0.0                4 steps, 14 min
   fees            uses @copy    → runs v1.0.0 (pasted copy)  4 steps, 14 min
   '@v2' picked up v2.1.0 by itself · '@v2.0.0' waits for a deliberate bump · '@v1' has no image scan · the pasted copy never changes
   one fix in the template reaches every service that follows it — pin exact versions (or commit SHAs) where you need control

═══ secrets ═══
── secrets live in the office's store, by path; a team reads its own paths only
   science reads teams/science/results-db-password → ok · teams/science/results-db-password v1 (22 characters, value hidden)
   science reads teams/maths/timetable-api-key     → denied · science may read teams/science/* only — ask the owner of teams/maths/timetable-api-key to share it
── rotation: the password is now v2; consumers still on the old version: ['exam-results', 'lab-worker']
   exam-results reloads → still stale: ['lab-worker'] · keep v1 valid until nobody uses it, then revoke
── config in layers (defaults → environment → service), each value explains where it came from:
   log_level           = info  (from defaults)
   replicas            = 3     (from production)
   feature_new_grades  = True  (from exam-results)

═══ policy ═══
── audit mode: exam-results → allowed with warnings (4 findings)
── enforce mode: exam-results → denied (4 findings)
   ✗ owner-label           no owner label → fix: add labels.owner: <your group> (the catalog uses it to page the right people)
   ✗ no-latest-tag         image tag is 'latest' or missing → fix: pin a version such as :1.4.2 (the paved pipeline tags every build)
   ✗ limits-set            no CPU/memory limits → fix: add limits: {cpu: 500m, memory: 256Mi} (the template's defaults)
   ✗ two-replicas-in-prod  1 replica in production → fix: set replicas: 2 or more so one restart is not an outage
── after the four fixes → allowed
   a guardrail that says 'no' and 'here is how' teaches; one that only says 'no' sends people around it

═══ scorecards ═══
── production readiness: 8 weighted checks (total weight 12) · gold ≥ 90 · silver ≥ 70 · bronze ≥ 50
   exam-results     92% gold      next: SLO written
   timetable        83% silver    next: has a runbook
   library-search   58% bronze    next: on-call rota set
   fees             50% bronze    next: has an owner
   canteen-orders   33% not ready next: has an owner
   a scorecard is a to-do list for a team, not a league table to shame them

═══ measure ═══
── the four DORA keys for the science department, 4 weeks each (teaching data):
   before (tickets)     1.0 deploys/week · lead time 150.0 h · change failure rate 50% · recovery 23.0 h
   after (paved path)   3.0 deploys/week · lead time   5.0 h · change failure rate  8% · recovery 2.0 h
── time to first deploy for a new team: 4 tickets in a row (repo, pipeline, database, DNS) × 2.0 days ≈ 8.0 days
   on the golden path: scaffold + self-service database + one pipeline run of 15 min — the same day
── weaponize the metric ('deploy more!'): count every re-run of the deploy job → 9.0 deploys/week, lead time 5.0 h
   the number tripled; the same 12 changes reached the students — nothing real improved (Goodhart's law)
   SPACE: Satisfaction, Performance, Activity, Communication, Efficiency — mix numbers with asking people; compare a team with itself

═══ portal ═══
── the portal page for exam-results (one place, gathered from every part of the office):
   owner science · lifecycle production · depends on results-db, auth
   depended on by parent-portal
   scorecard 92% (gold) · next: SLO written
   policy: allowed with warnings · bucket is public → set public_bucket: false and serve files through the CDN kit
   pipeline v2 → v2.1.0 · preview environments live: 1
   DORA: 3.0 deploys/week · lead time 5.0 h · failure rate 8% · recovery 2.0 h
── the whole picture: pains → a product roadmap → golden paths → a catalog → self-service → previews → paved pipelines
   → secrets as a service → guardrails that explain → scorecards → honest measures → one portal

✅ done — every teacher has a classroom
🎒 धडा 01 आधी: तुम्हाला फक्त Python 3 हवे — बाकी काहीही नाही. हा lab म्हणजे deterministic शिकवणी models चा संच आहे (package चे नाव idp/ आहे, platform/ नाही, कारण ते Python चे स्वतःचे platform module झाकून टाकेल); खरे platforms Backstage किंवा Port (portal आणि catalog), Crossplane किंवा Terraform (infrastructure), Argo CD (delivery), GitHub Actions किंवा GitLab CI (pipelines), Vault किंवा cloud secrets manager (secrets) आणि OPA Gatekeeper किंवा Kyverno (policy) यांपासून बनतात. ही शाळा कुठे बसते: CI/CD शाळा एक pipeline बांधते आणि Argo CD शाळा ती deliver करते; ही शाळा त्यांना प्रत्येक team साठी एक बांधलेला रस्ता बनवते.

🗺️ संपूर्ण चित्र — एक आकृती, पूर्ण कोर्स

संपूर्ण कोर्स एका कॅनव्हासवर. 4K आवृत्तीसाठी क्लिक करा.

The big picture: why and what (why platforms, platform as a product, golden paths, service catalog), self-service (infrastructure with quotas, preview environments, paved pipelines, secrets and config) and guardrails and measuring (policy as code, scorecards, DORA and SPACE, the developer portal)

🧭 भाग 1 — का आणि काय (धडे 1–4)

एक git branch = एक कल्पना; branch 04 मध्ये धडे 01–04 आहेत. idp/ प्रत्येक वेळी चालवल्यावर तेच आकडे छापते.

1

🧭 platforms का हवेत

प्रत्येक शिक्षिका स्वतःचा वर्ग-संच बनवते — cognitive load, तिकिटांची रांग आणि 'you build it, you run it' चा थकवा.lesson-01-why-platformsधडा वाचा →आकृती पहा ↗
2

🤝 platform हे एक product

शिक्षिका या कार्यालयाच्या ग्राहक आहेत — मुलाखती, त्रासानुसार क्रम लावलेला roadmap, सक्तीऐवजी स्वेच्छेने स्वीकार.lesson-02-platform-as-productधडा वाचा →आकृती पहा ↗
3

🛤️ सोनेरी वाटा आणि templates

तयार वर्ग-संच — versioned template मधून service चा सांगाडा बनवणारा scaffolder.lesson-03-golden-pathsधडा वाचा →आकृती पहा ↗
4

📇 service catalog

प्रत्येक वर्गखोलीची नोंदवही — मालक, dependencies, अनाथ services आणि blast radius.lesson-04-service-catalogधडा वाचा →आकृती पहा ↗

🧰 भाग 2 — self-service (धडे 5–8)

teams स्वतःची मदत स्वतः करतात: quotas मधले resources, आपोआप साफ होणारी environments, सामायिक pipelines, rotation असलेली secrets.

5

🧰 self-service infrastructure

कार्यालयाकडे मागा, लगेच मिळवा — प्रत्येक team च्या quota मध्ये resources चा ठरलेला मेनू.lesson-05-self-service-infraधडा वाचा →आकृती पहा ↗
6

🧪 मागणीनुसार environments

प्रत्येक बदलासाठी एक चाचणी वर्गखोली — प्रत्येक pull request साठी preview environments, time-to-live नंतर साफ केली जातात.lesson-06-preview-environmentsधडा वाचा →आकृती पहा ↗
7

🚚 बांधलेला CI/CD रस्ता

production कडे जाणारा एकच सामायिक रस्ता — पुन्हा वापरता येणारे, versioned pipeline templates आणि pinning म्हणजे काय.lesson-07-paved-pipelinesधडा वाचा →आकृती पहा ↗
8

🔑 secrets आणि config ही एक सेवा

किल्ल्यांचे कपाट — प्रत्येक team ची secrets, versions आणि rotation सह; config स्पष्ट केलेल्या थरांमध्ये.lesson-08-secrets-configधडा वाचा →आकृती पहा ↗

🛡️ भाग 3 — संरक्षक नियम आणि मोजमाप (धडे 9–12)

'नाही' ची भिंत न उभारता self-service सुरक्षित ठेवणे, आणि कार्यालयाचा उपयोग होतोय का हे प्रामाणिकपणे दाखवणे.

9

🛡️ policy as code आणि संरक्षक नियम

फक्त 'नाही' न म्हणता दुरुस्ती कशी करायची ते सांगणारे सुरक्षा नियम — audit आणि enforce modes मधले policy as code.lesson-09-policy-guardrailsधडा वाचा →आकृती पहा ↗
10

🏅 scorecards आणि परिपक्वता

प्रत्येक वर्गखोलीसाठी तयारीची तपासणी-यादी — वजन असलेल्या तपासण्या, स्तर, आणि पुढे काय दुरुस्त करायचे.lesson-10-scorecardsधडा वाचा →आकृती पहा ↗
11

📊 platform चे मोजमाप

कार्यालयाचा उपयोग होतोय का? DORA च्या चार keys, पहिल्या deploy पर्यंतचा वेळ, SPACE, आणि आकड्यांचा शस्त्र म्हणून वापर न करणे.lesson-11-measuringधडा वाचा →आकृती पहा ↗
12

🏛️ developer portal आणि संपूर्ण चित्र

स्वागत कक्ष — प्रत्येक service साठी Backstage-पद्धतीचे portal पान, आणि कार्यालयाचा संपूर्ण नकाशा.lesson-12-developer-portalधडा वाचा →आकृती पहा ↗
🗣️ धडा 12 नंतर हे मोठ्याने समजावून सांगा: (1) मागण्या क्षमतेपेक्षा दिवसाला एकने जास्त असल्या तर तिकिटांची रांग कायम का वाढत राहते? (2) स्वीकार सक्तीने न होता कमावून का व्हायला हवा? (3) सोनेरी वाट नवीन service ला पहिल्या दिवशी काय देते — आणि दुसऱ्या दिवशी काय देत नाही? (4) सामायिक service चा blast radius म्हणजे काय, आणि catalog तो कसा शोधतो? (5) quotas मुळे self-service सुरक्षित का होते? (6) preview environments ना TTL का हवा? (7) @v2, @v2.0.0 आणि चिकटवलेली प्रत यांत फरक काय? (8) जुने secret रद्द करण्याआधी ते rotate का करावे? (9) संरक्षक नियम अडवण्याऐवजी शिकवतो तो कशामुळे? (10) DORA चे आकडे कधीही लक्ष्य का बनू नयेत?
🎓 याच शाळेतून: CI/CD · Argo CD · Kubernetes · Observability · Security — तेच उपमांचे विश्व, तीच branch-दर-branch पद्धत.

📐 धड्यांच्या आकृत्या — क्रमांक अनुसरा

प्रत्येक धडा एका क्रमांकित बॉक्स-आणि-बाण आकृतीत — स्वतंत्र पानावरही.

1 🧭 platforms का हवेत

प्रत्येक शिक्षिका स्वतःचा वर्ग-संच बनवते — cognitive load, तिकिटांची रांग आणि 'you build it, you run it' चा थकवा.

🧒 सोप्या शब्दांत

कतरिना नवी science शिक्षिका आहे, आणि तिला एक वर्ग हवा आहे. बाकडी, कुलूप, socket आणि first-aid box तिला स्वतः शोधावे लागतात. इतर शिक्षिका दीपिकाच्या office ला अर्ज लिहितात. रोज 5 अर्ज येतात, आणि दीपिका फक्त 4 पूर्ण करू शकते. म्हणून ढीग रोज 1 ने वाढतो. मग office एका कपाटावर तयार kits ठेवते, आणि कतरिना एक kit घेते.

📖 नवे शब्दplatform team — इतर teams ना शून्यापासून सुरुवात करावी लागू नये म्हणून तयार kits बनवणारे मदतनीसcognitive load — एका व्यक्तीला एकाच वेळी डोक्यात ठेवाव्या लागणाऱ्या गोष्टी, जसे 14 कामेticket queue — कोणीतरी हाताने करायची वाट पाहणारी लेखी विनंत्यांची रांग
1😩 आधी — कतरिना सगळ्या 14 जबाबदाऱ्या स्वतःच सांभाळतेKatrinaनवीन scienceशिक्षकएक service =14 कामेapplication codetestsDockerfileCI pipelineKubernetes manifestsdatabase साठी TerraformIAM rolessecretsDNS + TLSlogs + dashboardsalertsbackupscost tagsservice साठी on-call2🛤️ नंतर — ती 4 ठेवते, कार्यालय 10 संच देतेKatrinaapplication codetestsalertsservice साठी on-callतिची: code, tests,alerts, on-callसुविधा कार्यालयाचे संचांचे कपाटDockerfileCI pipelineKubernetes manifestsयासाठी Terraform:databaseIAM rolessecretsDNS + TLSlogs + dashboardsbackupscost tagsकाचेची झाकणे: अजूनही दिसतात,अजूनही बदलता येतात3📥 कार्यालयातील तिकिटांचा ढीग — दिवसाला 5 मागण्या येतात, दीपिका दिवसाला 4 पूर्ण करते, 20 कामकाजाच्या दिवसांसाठीDipikaएकच कारकून📥 5 आत/दिवस📤 4 बाहेर/दिवसदिवसाअखेरीस अजूनही ढिगात असलेले अर्ज11223344556677889910101111121213131414151516161717181819192020दिवसयांची प्रतीक्षा:दिवसाचे शेवटचे ticket0d0d0d0d1d1d1d1d1d2d2d2d2d2d3d3d3d3d3d4dपूर्ण 80 · अजून वाट पाहत 20 · सरासरी प्रतीक्षा 2.0 दिवसदिवस 1: 0 दिवस वाट · दिवस 20: 4 दिवस वाट — रांग रोज 1 ने वाढतेरोज +1 फॉर्म, कधीच परत 0 वर नाही
⏪ आधी

प्रत्येक शिक्षिका आपला classroom kit स्वतः बनवत असे, किंवा facilities office च्या ढिगात विनंती लिहून वाट पाहत असे.

💡 काय

एक service चालू करायला team ला 14 कामे एकटीने करावी लागत; office मुळे ती 4 ठेवते आणि 10 तयार kits म्हणून घेते.

⚙️ कसे

रोज 5 विनंत्या येतात आणि दीपिका 4 पूर्ण करते: 20 दिवसांनी 80 पूर्ण, 20 अजून रांगेत, सरासरी वाट 2.0 दिवस.

🎯 का

ढीग रोज 1 ने वाढतो: पहिल्या दिवशी 0 दिवस वाट, 20 व्या दिवशी 4 दिवस. नुसत्या जास्त मेहनतीने रांग कधीच संपत नाही.

🚀 पुढे

पुढच्या धड्यात शिक्षिका ग्राहक बनतात: त्यांना विचारा, त्रास क्रमाने लावा, आणि सर्वात मोठा त्रास आधी सोडवा.

🧪 इथे करून पाहा — दीपिकाचा tickets चा ढीग — किती येतात, ती किती पूर्ण करते आणि कार्यालय किती kits देते ते बदला
542010

पूर्ण धडा 01 वाचा →

2 🤝 Platform म्हणजे एक product

शिक्षिका या कार्यालयाच्या ग्राहक आहेत — मुलाखती, त्रासानुसार क्रम लावलेला roadmap, सक्तीऐवजी स्वेच्छेने स्वीकार.

🧒 सोप्या शब्दांत

दीपिका या महिन्यात एक नवा kit बनवू शकते. ती चमकदार smart board बनवू शकली असती, कारण ते मजेदार आहे. त्याऐवजी ती प्रत्येक विभागाला विचारते की त्यांचा वेळ कशात वाया जातो. Database ची वाट पाहण्यात आठवड्याला 15 तास जातात. म्हणून तो kit आधी. ती कोणालाही तो वापरायची सक्ती करत नाही. Arts विभाग नको म्हणतो, तेव्हा ती का ते विचारते.

📖 नवे शब्दplatform as a product — platform वापरणाऱ्या teams ना जिंकायचे ग्राहक मानणेroadmap — पुढे काय बनवायचे त्याची यादी, सर्वात मोठा त्रास आधीadoption — किती teams नी ते वापरायचे ठरवले, जसे सहाव्या महिन्यापर्यंत 80%
1🗒️ दीपिका 5 विभागांच्या मुलाखती घेतेDipikaदर आठवड्याला, प्रत्येक त्रासामुळे वाया गेलेले तासsciencedatabase ची वाट — 6 hCI YAML लिहिणे — 3 hservice चा मालक शोधणे — 1 hmathsdatabase ची वाट — 4 hpreview environments — 3 hservice चा मालक शोधणे — 1 hlibraryCI YAML लिहिणे — 4 hsecrets बदलणे (rotate) — 2 hक्रीडाdatabase ची वाट — 5 hpreview environments — 2 hservice चा मालक शोधणे — 1 hकलाsecrets बदलणे (rotate) — 1 hservice चा मालक शोधणे — 2 h2📊 बेरीज करा, वाया गेलेल्या तासांनुसार क्रम लावा → हाच roadmap0 h5 h10 h15 h1. database ची वाट3 teams64515 h/आठवडा2. CI YAML लिहिणे2 teams347 h/आठवडा3. service चा मालक शोधणे4 teams11125 h/आठवडा4. preview environments2 teams325 h/आठवडा5. secrets बदलणे (rotate)2 teams213 h/आठवडाroadmap #1sciencemathslibraryक्रीडाकला🖥️ smart-board kitसर्वात मजेदार — पण पहिले नाही3📈 स्वीकार कमवावा लागतो, सक्ती करून मिळत नाही — बांधलेली वाट कोणी स्वतःहून निवडलीमहिना 120%sciencemathslibraryक्रीडाकला5 पैकी 1 विभागमहिना 360%sciencemathslibraryक्रीडाकला5 पैकी 3 विभागमहिना 680%sciencemathslibraryक्रीडाकला5 पैकी 4 विभागकला: "नको, धन्यवाद"कला विभागाने वाट सोडली → दीपिका का ते विचारते — ते उत्तर म्हणजेच तिची पुढची मुलाखत
⏪ आधी

मध्यवर्ती team ला आवडलेले tool ती निवडत असे, आणि मग ठरलेल्या तारखेपर्यंत प्रत्येक विभागाला ते वापरायला सांगत असे.

💡 काय

Platform as a product: दीपिका 5 विभागांशी बोलते आणि दर आठवड्याला वाया जाणाऱ्या तासांनुसार त्रास क्रमाने लावते.

⚙️ कसे

Database ची वाट 3 teams मध्ये 15 h/week खाते, CI YAML 7 h, owner शोधणे 5 h: म्हणून databases पहिल्यांदा.

🎯 का

Adoption मिळवावा लागतो: पहिल्या महिन्यात 20%, तिसऱ्यात 60%, सहाव्यात 80%. दूर राहणारी team म्हणजे feedback.

🚀 पुढे

पुढच्या धड्यात लोकांनी मागितलेला पहिला kit बनतो: मिनिटांत नवी service बनवणारा golden-path template.

🧪 इथे करून पाहा — दीपिकाची वही — विभागाचे वाया जाणारे तास आणि बांधलेली वाट कोणी निवडली ते बदला
6

पूर्ण धडा 02 वाचा →

3 🛤️ सोनेरी वाटा आणि templates

तयार वर्ग-संच — versioned template मधून service चा सांगाडा बनवणारा scaffolder.

🧒 सोप्या शब्दांत

कतरिना office कडे exam-results नावाचा नवा classroom kit मागते. दीपिका कपाटातून एक box काढते: python-service, version 3. आत एकमेकांना जुळणाऱ्या 8 गोष्टी आहेत. एका मैत्रिणीने आधी 'Exam Results!' हे नाव वापरून पाहिले. दीपिकाने फक्त नाही म्हटले नाही. ती म्हणाली: लहान अक्षरे आणि dash वापरा, जसे exam-results. Kit हा सोपा मार्ग आहे, एकमेव नाही.

📖 नवे शब्दgolden path — एखादी गोष्ट बनवण्याचा सोपा, आधार असलेला मार्ग, ज्यात चांगले निर्णय आधीच घेतलेले असतातtemplate — दरवेळी तशाच सुरुवातीच्या files बनवणारा तयार नमुनाscaffolder — template मध्ये तुमचे नाव आणि owner भरणारे, किंवा काय दुरुस्त करायचे ते सांगणारे tool
1🙅 तीन विनंत्या नाकारल्या — आणि प्रत्येक नकार ते कसे दुरुस्त करायचे ते सांगतोनवीन service मागाtemplate:python-servicename:Exam Results!owner:scienceनाकारले• नाव 'Exam Results!' — 3–31 lowercase अक्षरे, अंक किंवाdashes वापरा, सुरुवात अक्षराने, उदा. 'exam-results'नवीन service मागाtemplate:python-servicename:वेळापत्रकowner:scienseनाकारले• नाव 'timetable' आधीच घेतले आहे — दुसरे निवडा, किंवा त्याच्या मालकालाcatalog मध्ये विचारा• owner 'sciense' हा ओळखीचा group नाही — यापैकी एक निवडा:facilities-office, library, maths, scienceनवीन service मागाtemplate:java-servicename:exam-resultsowner:scienceनाकारले• 'java-service' नावाचे template नाही — यापैकी एक निवडा: python-service,static-siteफक्त कोरडे "नाही" नाही: काय चुकले, आणि ते बरोबर करण्याचा एक मार्ग2📦 कतरिना python-service v3 kit उघडते → 8 files, push साठी तयारKatrinapython-serviceversion 3name: exam-resultsowner: scienceREADME.md🪧 स्वागताचा फलकsrc/app.py🪑 बाके (code)tests/test_app.py🚨 धुराचा alarm (tests)Dockerfile🚪 कुलूप असलेले दारcatalog-info.yaml📇 नोंदवहीसाठी नावाचे कार्ड.github/workflows/ci.yml🗓️ वेळापत्रकातील तास (pipeline)बांधलेली pipeline @v2 वापरतेdeploy/values.yaml📐 खोलीचा आराखडाreplicas 2 · limits 500m / 256Midocs/index.md📌 सूचना फलकचांगले defaultsपहिल्या मिनिटापासून🚀 push → बांधलेलीpipeline चालते3📇 नावाचे कार्ड, आणि फाटाapiVersion: backstage.io/v1alpha1kind: Componentmetadata: name: exam-resultsspec: type: service lifecycle: experimental owner: sciencecatalog (धडा 04) ही file वाचतोसोनेरी वाटसोपा मार्गती सोडा →जे बदलालत्याची जबाबदारी तुमचीसोपा मार्ग, एकमेव मार्ग नाही:
⏪ आधी

प्रत्येक नवी service रिकाम्या repo मधून सुरू होत असे, किंवा जवळ असलेल्या जुन्या repo ची copy करून.

💡 काय

Golden path म्हणजे version असलेला template: python-service v3 src/app.py पासून catalog-info.yaml पर्यंत 8 files बनवतो.

⚙️ कसे

Scaffolder नावाचा नियम, मोकळे नाव, ओळखीचा owner आणि template तपासतो, आणि प्रत्येक नकारात दुरुस्ती सांगतो.

🎯 का

'Exam Results!' ला 'exam-results वापरा' आणि 'sciense' ला खरे 4 groups सांगितले जातात: शिकवणारा नकार, भिंत नाही.

🚀 पुढे

पुढचा धडा प्रत्येक service बरोबर येणारी catalog-info.yaml वाचून शाळेची services ची नोंदवही बनवतो.

🧪 इथे करून पाहा — कार्यालयाकडे नवीन service मागा — चुकीची नावे, अनोळखी मालक आणि नसलेले templates वापरून पाहा

पूर्ण धडा 03 वाचा →

4 📇 Service catalog

प्रत्येक वर्गखोलीची नोंदवही — मालक, dependencies, अनाथ services आणि blast radius.

🧒 सोप्या शब्दांत

Office प्रत्येक खोलीची नोंदवही ठेवते: ती कोणाची आहे आणि तिला काय लागते. एका सकाळी sign-in system, auth, बंद पडते. दीपिका बाण उलटे फिरून पाहते आणि तिला 5 खोल्या अडचणीत दिसतात. तिला कोणाच्याच मालकीच्या नसलेल्या खोल्याही सापडतात: canteen-orders आणि fees. त्या बंद पडल्या तर कोणालाच फोन जात नाही. म्हणून प्रत्येक खोलीला नाव असलेला owner हवा.

📖 नवे शब्दservice catalog — प्रत्येक service, तिचा owner आणि तिला काय लागते याची नोंदवहीorphan — अजून वापरात असलेली पण कोणतीच team न सांभाळणारी serviceblast radius — एक गोष्ट बंद पडली की बंद पडणारे सगळे, जसे auth बंद पडल्यावर 5 services
1🗺️ नोंदवहीतील बाण — 'auth बिघडते' तेव्हा ज्यांना त्याची गरज आहे ते सगळे उजळतातparent-portalmathsexam-resultsscienceवेळापत्रकmathsresults-dbscienceauthfacilities-officecanteen-ordersteam-2019-hackathon!feesमालक नाही!library-searchlibrary❓ payments-apiनोंदवहीत नाही❓ search-indexनोंदवहीत नाही💥 auth बिघडतेauth चा blast radius: 5 servicesबाण = "गरज आहे" · त्यांवरून उलट चाला2📇 नोंदवही — 8 नोंदीमालक → तो कशाची काळजी घेतोscience· exam-results· results-dbmaths· parent-portal· वेळापत्रकlibrary· library-searchfacilities-office· auth⚠️ अनाथ — call कोणालाच येत नाहीcanteen-ordersowner: team-2019-hackathon (group अस्तित्वात नाही)feesowner: none❓ तुटलेले संदर्भfees → payments-apilibrary-search → search-index3🔎 results-db बिघडले तर — बाणांवरून उलट जा, साखळ्यांमधून: 2 servicesresults-dbविज्ञान · बिघडतेexam-resultsविज्ञान · results-db लागतोstep 1parent-portalगणित · exam-results लागतोstep 2timetable, auth, fees … सुरक्षित आहेतcatalog-info.yaml प्रत्येकrepo मध्ये code शेजारीच ठेवा — जुनी झालेलीनोंदवही खोटं सांगते
⏪ आधी

Service बंद पडेपर्यंत तिचा owner कोण हे कोणालाच माहीत नसे; लोक chat मध्ये विचारत, आणि काही उत्तरे वर्षांपूर्वीची असत.

💡 काय

Service catalog म्हणजे नोंदवही: 8 नोंदी, प्रत्येकीला owner, lifecycle आणि ती कशावर अवलंबून आहे याची माहिती.

⚙️ कसे

बाण उलटे फिरा: auth बंद पडले तर 5 services अडतात; results-db बंद पडले तर exam-results आणि parent-portal.

🎯 का

ती 2 orphans (canteen-orders, fees) आणि 2 तुटलेले संदर्भ दाखवते: ते बंद पडले तर कोणालाच फोन जात नाही.

🚀 पुढे

पुढच्या धड्यात teams स्वतःची मदत करतात: menu मधून database मागवा, स्वतःच्या quota च्या आत.

🧪 इथे करून पाहा — नोंदवही — service बिघडवून तिचा blast radius पाहा, team विसर्जित करून अनाथ services तयार करा

पूर्ण धडा 04 वाचा →

5 🧰 स्वतः-सेवा infrastructure

कार्यालयाकडे मागा, लगेच मिळवा — प्रत्येक team च्या quota मध्ये resources चा ठरलेला मेनू.

🧒 सोप्या शब्दांत

आता office च्या भिंतीवर एक menu आहे: लहान कपाट, मोठे कपाट, एक box आणि कप्प्यांचा rack. Science ला ठरावीक मर्यादा आहे: 2 कपाटे आणि 6 फरश्या. कतरिना एक मोठे आणि एक लहान कपाट मागवते, आणि ती लगेच मिळतात. तिसऱ्या कपाटाला नकार मिळतो, आणि काय करायचे याची चिठ्ठीही. आता कोणीच ढिगात वाट पाहत नाही.

📖 नवे शब्दself-service — एखाद्या व्यक्तीची वाट न पाहता menu मधून स्वतः हवे ते घेणेquota — एका team ला जास्तीत जास्त किती मिळू शकते ती मर्यादा, जसे 2 databases आणि 6 CPUtag — resource वरचे लेबल, ते कोणाचे आहे आणि कोण सांभाळते ते सांगणारे
1📋 भिंतीवरचा कार्यालयाचा मेनूpostgres-smallलहान कपाट · 2 CPUpostgres-mediumमोठं कपाट · 4 CPUbucketएक खोका · 0 CPUरांगकप्प्यांची मांडणी · 0 CPUमेनूवर नाही? कार्यालयाला ते जोडायला सांगा2📏 सहा मागण्यांनंतर विज्ञानाचा वाटा (quota)databases2 पैकी 2 वापरलेresults-dbpostgres-mediumlab-dbpostgres-smallbuckets3 पैकी 1 वापरलेlab-photosbucketमोफतमोफतqueues2 पैकी 1 वापरलेgrade-eventsरांगमोफतCPU6 पैकी 6 वापरलेresults-db: 4lab-db: 2← मजला भरला आहे3🧾 मेनूकडे सहा मागण्या — ticket नाही, लगेच उत्तर (याच क्रमाने)1postgres-mediumresults-dbREADYलगेच तयार:science-results-dbtagsowner=sciencemanaged-by=facilities-office2postgres-smalllab-dbREADYलगेच तयार:science-lab-dbtagsowner=sciencemanaged-by=facilities-office3postgres-smallextra-dbनाकारलेविज्ञान आधीच 2/2 वापरतेdatabases — एक delete करा किंवामोठा quota मागा4mongodbnotes-dbनाकारले'mongodb' याcatalogue मध्ये नाही — उपलब्ध:postgres-small,postgres-medium, bucket,queue (किंवा कार्यालयालाते जोडायला सांगा)5bucketlab-photosREADYलगेच तयार:science-lab-photostagsowner=sciencemanaged-by=facilities-office6रांगgrade-eventsREADYलगेच तयार:science-grade-eventstagsowner=sciencemanaged-by=facilities-office
⏪ आधी

Database म्हणजे ticket, office च्या रांगेत वाट, आणि दरवेळी थोडा वेगळा बनलेला निकाल.

💡 काय

Self-service infrastructure: ठरलेला menu (postgres-small, postgres-medium, bucket, queue) आणि प्रत्येक team ला quota.

⚙️ कसे

Science ला 2 databases आणि 6 CPU मिळतात: results-db (4 CPU) आणि lab-db (2 CPU) लगेच तयार, extra-db ला नकार.

🎯 का

Quota मुळे एक team संपूर्ण शाळा भरू शकत नाही, आणि प्रत्येक resource ला owner=science, managed-by=facilities-office tag असतो.

🚀 पुढे

पुढचा धडा मागणीनुसार संपूर्ण environments देतो: प्रत्येक pull request ला एक trial classroom, TTL ने साफ होणारा.

🧪 इथे करून पाहा — विज्ञानाचा वाटा — quota बदला, मग मेनूमधून मागवा
2326

पूर्ण धडा 05 वाचा →

6 🧪 मागणीनुसार environments

प्रत्येक बदलासाठी एक चाचणी वर्गखोली — प्रत्येक pull request साठी preview environments, time-to-live नंतर साफ केली जातात.

🧒 सोप्या शब्दांत

कतरिना खरी lab बदलण्याआधी नवी मांडणी करून पाहू इच्छिते. Office तिला pr-101 नावाची trial खोली देते. तिने 'झाले' म्हटले की खोली रिकामी केली जाते. 48 तास कोणीच हात लावला नाही तरीही ती रिकामी केली जाते. फक्त 3 trial खोल्या आहेत. एका आठवड्यात 674 ऐवजी फक्त 223 तास दिवे लागले.

📖 नवे शब्दpreview environment — एका pull request साठी बनवलेली app ची थोड्या काळाची copyTTL — time to live: न वापरता किती वेळ राहू शकते ते, नंतर साफ केले जाते, जसे 48 hpull request — merge होण्याआधी इतर जण पाहतात असा सुचवलेला बदल
1🧪 प्रत्येक pull request साठी एक प्रयोग-वर्ग — pr-101 … pr-106 चा एक आठवडा (168 h)h0h24h48h72h96h120h144h168तासpr-101h20 PR बंद → delete झालाh1pr-102h53 मुदत संपली48 h एकही push नाहीh5pr-103h70 PR बंद → delete झालाpush h40: TTL पुन्हा सुरूh10pr-104h78 मुदत संपली48 h एकही push नाहीh30pr-105h41 नाकारले — 3 प्रयोग-वर्ग आधीच चालू; एक बंद झाल्यावर पुन्हा प्रयत्न कराpr-106h168 मुदत संपली (आठवडा संपतो)48 h एकही push नाहीh120मर्यादा: 3 चालूliveवर्ग2💡 दिवे चालूच राहिले — एका आठवड्यातले environment-ताससाफसफाईसह48604848223 hकोणीच delete करत नाही16716315813848674 hpr-101pr-102pr-103pr-104pr-1065 previews तयार झाले3🚪 प्रयोग-वर्गाचे नियमpr-101प्रयोग आराखडा🧹PR बंद → delete⏰TTL 48 h, push झाल्यावर पुन्हा सुरू🔢जास्तीत जास्त 3 चालू🌐pr-101.preview.school.testशेवटी अजून चालू: []
⏪ आधी

Teams एकच staging environment वाटून घेत, ते वापरायला रांग लावत, आणि कोणालाही आठवत नसलेल्या test copies चालू ठेवत.

💡 काय

प्रत्येक pull request ला एक preview environment, जसे pr-101.preview.school.test: TTL 48 h, प्रत्येक push ने पुन्हा सुरू.

⚙️ कसे

PR बंद झाला की room हटते, 48 h push नाही तर ती expire होते, आणि जास्तीत जास्त 3 चालू: h41 ला pr-105 ला नकार.

🎯 का

एका आठवड्यात 5 previews cleanup सह 223 environment-hours वापरतात, कोणीच न हटवल्यास 674 वापरले असते.

🚀 पुढे

पुढचा धडा production पर्यंतचा रस्ता बांधतो: प्रत्येक service वापरू शकेल असा एक सामायिक, version असलेला pipeline template.

🧪 इथे करून पाहा — प्रत्येक pull request साठी एक प्रयोग-वर्ग — time-to-live आणि मर्यादा बदला
483

पूर्ण धडा 06 वाचा →

7 🚚 पक्की CI/CD वाट

production कडे जाणारा एकच सामायिक रस्ता — पुन्हा वापरता येणारे, versioned pipeline templates आणि pinning म्हणजे काय.

🧒 सोप्या शब्दांत

प्रत्येक वर्गाला सकाळी तेच काम करावे लागते: कुलूप उघडणे, fire exit तपासणे, दिवे लावणे. Office एक routine card लिहिते आणि त्याला version 2 म्हणते. त्यात smoke-alarm ची पायरी जोडली की कतरिनाला ती दुसऱ्या सकाळी मिळते, कारण तिने 'नवीनतम version 2' म्हटले होते. ऐश्वर्याने 'नेमके 2.0' म्हटले, म्हणून ती वाट पाहते. Fees office ने वर्षांपूर्वी card 1 ची photocopy केली, आणि तिच्यापर्यंत काहीच पोहोचत नाही.

📖 नवे शब्दpipeline template — अनेक services follow करतात अशी build आणि deploy पायऱ्यांची एक सामायिक यादीmoving tag — @v2 सारखे नाव जे नेहमी नवीनतम v2.x कडे निर्देश करतेpin — एक नेमके version निवडणे, जसे @v2.0.0, म्हणजे तुम्ही ठरवेपर्यंत काहीच बदलत नाही
1📌 शिक्षक-खोलीत लावलेली कार्यालयाची नित्यक्रम-कार्डे — तीन releasesv1.0.04 steps · 14 mincheckout1 mintest6 minbuild image4 mindeploy3 minv2.0.06 steps · 17 mincheckout1 mintest6 minbuild image4 minSBOM1 minnewscan image2 minnewdeploy3 minv2.1.07 steps · 15 mincheckout1 minrestore cache1 minnewtest3 minbuild image4 minSBOM1 minscan image2 mindeploy3 min@v2हलता major tag:आपोआप सर्वात नवीन v2.x@v2.0.0नेमका pin:जाणीवपूर्वक bump ची वाट पाहतो@v1जुना major:SBOM नाही, image scan नाहीप्रतv1 ची झेरॉक्स प्रत:मूळाशी दुवा नाही, कधीच बदलत नाही2🚚 चार services, चार references — प्रत्येक खरंच काय चालवते (पट्टी = प्रत्येक step ची मिनिटे)0 min3 min6 min9 min12 min15 min18 minexam-results@v2→ v2.1.0testbuild imagescandeploy7 steps, 15 min🔍 images scan करतेवेळापत्रक@v2.0.0→ v2.0.0testbuild imagescandeploy6 steps, 17 min🔍 images scan करतेlibrary-search@v1→ v1.0.0testbuild imagedeploy4 steps, 14 min⚠️ image scan नाहीfees@copy→ v1.0.0 (चिकटवलेली प्रत)testbuild imagedeploy4 steps, 14 min📄 प्रत कधीच बदलत नाहीtemplate मधली एक दुरुस्ती तो वापरणाऱ्या प्रत्येक service पर्यंत पोहोचते — जिथे नियंत्रण हवे तिथे नेमक्या versions (किंवा commit SHAs) pin करा
⏪ आधी

प्रत्येक repo ची स्वतःची pipeline file होती, एकदा copy केलेली आणि वर्षानुवर्षे हाताने बदललेली, म्हणून दोन सारख्या नव्हत्या.

💡 काय

Office pipeline templates प्रकाशित करते: v1.0.0, v2.0.0 (SBOM आणि image scan जोडतो) आणि v2.1.0 (cache जोडतो).

⚙️ कसे

@v2 15 min मध्ये v2.1.0 चालवतो, @v2.0.0 17 min मध्ये v2.0.0, @v1 मध्ये image scan नाही, आणि pasted copy कधीच बदलत नाही.

🎯 का

Template मधील एक दुरुस्ती त्याला follow करणाऱ्या प्रत्येक service पर्यंत पोहोचते; नियंत्रण हवे तिथे exact version किंवा SHA pin करा.

🚀 पुढे

पुढचा धडा किल्ल्यांचे कपाट उघडतो: प्रत्येक team चे secrets, versions आणि rotation सह, आणि स्पष्ट layers मधील settings.

🧪 इथे करून पाहा — प्रत्येक service खरंच काय चालवते — तिचा reference बदला, किंवा नवीन template release करा

पूर्ण धडा 07 वाचा →

8 🔑 Secrets आणि config एक सेवा म्हणून

किल्ल्यांचे कपाट — प्रत्येक team ची secrets, versions आणि rotation सह; config स्पष्ट केलेल्या थरांमध्ये.

🧒 सोप्या शब्दांत

Office कडे प्रत्येक विभागासाठी एक खुंटी असलेले किल्ल्यांचे कपाट आहे. कतरिना science ची किल्ली घेते, पण maths ची किल्ली तिची नाही. मग दीपिका कुलूप बदलते आणि किल्ली version 2 टांगते. exam-results ची लिपिक आपली किल्ली बदलते, पण lab worker अजून परत आलेली नाही. म्हणून सगळ्यांकडे नवी किल्ली येईपर्यंत दीपिका जुने कुलूप चालू ठेवते.

📖 नवे शब्दsecret — program ला लागणारा password किंवा key, नजरेआड ठेवलेलाrotation — secret च्या जागी नवे version आणणे, जसे v1 वरून v2config layers — क्रमाने रचलेल्या settings, ज्यात नंतरचा layer जिंकतो, जसे production मधून replicas 3
1🔑 किल्ल्यांचे कपाट — प्रत्येक team साठी एक खुंटी, path नुसारteams/science/v2 (नवा)v1results-db-passwordv1 वाचले: 22 अक्षरे, value लपवलेलीteams/maths/timetable-api-keyscience✅ स्वतःचा path❌ नाकारले — science फक्त हे वाचू शकतेफक्त teams/science/* — याच्या मालकिणीला विचाराteams/maths/timetable-api-key share करण्यासाठी2🔄 कुलूप बदला (rotate) — कोणाकडेही उरत नाही तोपर्यंत v1 ठेवा1दोघेही v1 वाचतातstore:v1v1exam-resultsv1lab-workerजुने (stale):कोणीही नाही2rotate → v2store:v1v2v1exam-resultsv1lab-workerजुने (stale):2 consumers3exam-results reload होतेstore:v1v2v2exam-resultsv1lab-workerजुने (stale):lab-worker4मग v1 रद्द (revoke) कराstore:v1v2v2exam-resultsv2lab-workerजुने (stale):कोणीही नाही3📄 थरांमधील settings पत्रक — नंतरचे थर जिंकतात, आणि प्रत्येक value ती कुठून आली ते सांगते1. defaultslog_level: inforeplicas: 2feature_new_grades: False+2. productionreplicas: 3+3. exam-resultsfeature_new_grades: Trueराखाडी, खोडलेले = नंतरच्या थराने बदललेले (override)exam-results साठी निकालlog_level = infodefaults मधूनreplicas = 3production मधूनfeature_new_grades = Trueexam-results मधूनreplicas = 3 कुठून आले याचा अंदाज लावावा लागत नाही
⏪ आधी

Passwords wiki pages आणि .env files मध्ये पडलेले असत; एक बदलला की जुने value वापरणारे सगळे बंद पडत.

💡 काय

Office चा secret store path नुसार चालतो: science फक्त teams/science/* वाचू शकते; teams/maths/* ला नकार.

⚙️ कसे

v2 वर rotate करा: exam-results आणि lab-worker stale आहेत; exam-results reload करते, आणि फक्त lab-worker v1 वर राहते.

🎯 का

कोणीच वापरत नाही तोपर्यंत v1 चालू ठेवा, मग revoke करा; config layers दाखवतात की replicas = 3 production मधून आले.

🚀 पुढे

पुढचा धडा सुरक्षेचे नियम code मध्ये लिहितो: काय चुकले आणि कसे दुरुस्त करायचे हे सांगणारे guardrails.

🧪 इथे करून पहा — किल्ल्यांचे कपाट — team म्हणून paths वाचा, password बदला (rotate), consumers reload करा, v1 रद्द करून पहा

पूर्ण धडा 08 वाचा →

9 🛡️ Policy as code आणि guardrails

फक्त 'नाही' न म्हणता दुरुस्ती कशी करायची ते सांगणारे सुरक्षा नियम — audit आणि enforce modes मधले policy as code.

🧒 सोप्या शब्दांत

शाळेचे खोल्यांसाठी सुरक्षेचे नियम आहेत: नाव असलेला owner, पुरेसे दरवाजे, कुलूपबंद कपाटे. आधीचा तपासणीस फक्त FAILED म्हणून निघून जात असे. आता checklist लिहिलेली आहे आणि प्रत्येक बदलावर चालते. प्रत्येक अडचणीसाठी ती काय चुकले आणि कसे दुरुस्त करायचे ते सांगते. सुरुवातीला ती फक्त इशारा देते. कतरिनाच्या खोलीत 4 अडचणी होत्या, तिने चारही दुरुस्त केल्या, आणि खोली उघडली.

📖 नवे शब्दpolicy as code — प्रत्येक बदल आपोआप तपासणारे program म्हणून लिहिलेले नियमguardrail — तुम्हाला सुरक्षित ठेवणारा आणि अडचण कशी सोडवायची ते सांगणारा नियमaudit mode — नियम फक्त इशारा देतात, अजून काहीच अडवले जात नाहीenforce mode — दुरुस्त होईपर्यंत नियम बदल अडवतात
1📄 exam-results, कतरिनाने लिहिले तसेname: exam-resultslabels: {}image: exam-results:latestlimits: {cpu: 500m}env: productionreplicas: 1public_bucket: false5 पैकी 4 नियम fail होतातजुनी पद्धत: निरीक्षक म्हणतोFAILED… आणि निघून जातो:काय चुकले नाही, कसे दुरुस्त करायचे नाहीत्याऐवजी ही checklist प्रत्येक बदलावर चालते2🛡️ code स्वरूपातील checklist — 5 नियम, दोन modesowner-labelowner label नाहीno-latest-tagimage tag 'latest' आहे किंवा नाहीचlimits-setCPU/memory limits नाहीतtwo-replicas-in-prodproduction मध्ये 1 replicano-public-bucketठीकaudit mode (पहिला महिना)enforce mode (बहुतेक pass झाल्यावर)इशाऱ्यांसह परवानगी4 त्रुटी — खोली उघडी राहते!!!!नाकारले4 त्रुटी — आधी दुरुस्त करा, मग उघडा3💬 प्रत्येक त्रुटी काय चुकले आणि ते कसे दुरुस्त करायचे दोन्ही सांगते — कतरिना फक्त messages वाचून चारही दुरुस्त करतेowner-labelowner label नाही→ दुरुस्ती:labels.owner: <your group> जोडा (योग्य लोकांना page करण्यासाठी catalogलोक)no-latest-tagimage tag 'latest' आहे किंवा नाहीच→ दुरुस्ती::1.4.2 सारखी version निश्चित करा (तयार pipeline प्रत्येक build ला tag लावते)limits-setCPU/memory limits नाहीत→ दुरुस्ती:limits जोडा: {cpu: 500m, memory:256Mi} (template चे defaults)two-replicas-in-prodproduction मध्ये 1 replica→ दुरुस्ती:replicas: 2 किंवा जास्त ठेवा, म्हणजे एकrestart म्हणजे outage ठरत नाहीचार दुरुस्त्यांनंतरlabels: {owner: science}image: …:1.4.2limits: {cpu, memory}replicas: 2✅ परवानगीenforce mode
⏪ आधी

एक व्यक्ती लिहिलेल्या यादीशी बदल तपासत असे आणि कारण न सांगता 'failed' म्हणत असे, किंवा कोणी तपासतच नसे.

💡 काय

Policy as code: प्रत्येक बदलावर 5 नियम चालतात, प्रत्येकात message आणि दुरुस्ती, audit किंवा enforce mode मध्ये.

⚙️ कसे

exam-results 4 नियमांत नापास: audit warnings सह परवानगी देतो, enforce नकार देतो; चार दुरुस्त्यांनंतर परवानगी मिळते.

🎯 का

'नाही' आणि 'असे करा' सांगणारा guardrail शिकवतो; फक्त 'नाही' म्हणणारा लोकांना त्याला वळसा घालायला लावतो.

🚀 पुढे

पुढचा धडा 'करायला हवे' ची यादी जोडतो: प्रत्येक service चे weighted checks आणि एक पुढची पायरी असलेले readiness scorecard.

🧪 इथे करून पहा — exam-results चे manifest checklist विरुद्ध — गोष्टी दुरुस्त करा, audit ↔ enforce बदला
1

पूर्ण धडा 09 वाचा →

10 🏅 Scorecards आणि परिपक्वता

प्रत्येक वर्गखोलीसाठी तयारीची तपासणी-यादी — वजन असलेल्या तपासण्या, स्तर, आणि पुढे काय दुरुस्त करायचे.

🧒 सोप्या शब्दांत

Office प्रत्येक वर्गासाठी 8 तपासण्या असलेले readiness card ठेवते. महत्त्वाच्या तपासण्या दुप्पट मोजल्या जातात, जसे owner असणे. Exam खोलीला 92% मिळतात आणि gold मिळते. Canteen खोलीला 33% मिळतात आणि ती अजून तयार नाही. कोणालाही लाजवण्यासाठी गुण भिंतीवर लावले जात नाहीत. प्रत्येक शिक्षिका फक्त आपले card आणि पुढची एक पायरी पाहते.

📖 नवे शब्दscorecard — एका service साठी तपासण्यांचे card, गुण आणि level सहweighted check — जास्त महत्त्वाची म्हणून जास्त मोजली जाणारी तपासणी, जसे owner ×2maturity level — गुणांसाठी बिल्ला: gold 90, silver 70, bronze 50
1🏅 तयारी कार्ड — 8 तपासण्या, एकूण वजन 12exam-resultsवेळापत्रकlibrary-searchfeescanteen-ordersमालकीण आहे×2runbook आहे×1on-call rota ठरलेला×2alerts ठरवलेले×2pipeline v2.x वर×1SLO लिहिलेले×1critical CVEs नाहीत×2dependencies जाहीर केलेल्या×1भारित गुण (weighted score)level92%★सुवर्ण83%★रौप्य58%★कांस्य50%★कांस्य33%✗तयार नाही2🧭 पातळ्या, आणि पुढची एकच पायरी0507090100exam-results · 92% सुवर्णपुढे: SLO लिहिणेtimetable · 83% रौप्यपुढे: runbook असणेlibrary-search · 58% कांस्यपुढे: on-call rota ठरवणेfees · 50% कांस्यपुढे: मालकीण असणेcanteen-orders · 33% तयार नाहीपुढे: मालकीण असणे3🪜 fees एका वेळी पुढची एक पायरी दुरुस्त करते — स्वतःचे कार्ड, क्रमवारीचा तक्ता नाही50% कांस्य★67% कांस्य★+ मालकीण आहे83% रौप्य★+ on-call rota ठरलेला100% सुवर्ण★+ critical CVEs नाहीत
⏪ आधी

Production readiness कोणाच्या तरी डोक्यात किंवा लांबलचक wiki checklist मध्ये असे, जी कोणी पूर्ण किंवा अद्ययावत करत नसे.

💡 काय

Scorecard: 8 weighted checks, एकूण weight 12, आणि levels gold 90, silver 70, bronze 50.

⚙️ कसे

exam-results 92% gold, timetable 83% silver, library-search 58%, fees 50% bronze, canteen-orders 33% not ready.

🎯 का

प्रत्येक team ला एक पुढची पायरी दिसते: fees आधी owner, मग on-call, मग CVEs जोडते आणि 50 → 67 → 83 → 100% चढते.

🚀 पुढे

पुढचा धडा कठीण प्रश्न विचारतो: office खरेच मदत करते का? DORA च्या चार keys, SPACE आणि प्रामाणिक आकडे.

🧪 इथे करून पहा — तयारी कार्ड — एक service निवडा, तिच्याकडे काय आहे ते tick करा, तिचे गुण, पातळी आणि पुढची पायरी पहा

पूर्ण धडा 10 वाचा →

11 📊 platform मोजणे

कार्यालयाचा उपयोग होतोय का? DORA च्या चार keys, पहिल्या deploy पर्यंतचा वेळ, SPACE, आणि आकड्यांचा शस्त्र म्हणून वापर न करणे.

🧒 सोप्या शब्दांत

मुख्याध्यापिका दीपिकाला विचारतात: office ची मदत झाली का? दीपिका science चे बदल तपासते. Kits आधी: आठवड्याला 1 बदल, कल्पनेपासून चालू होईपर्यंत 150 तास. नंतर: आठवड्याला 3, फक्त 5 तास. मग कोणीतरी आठवड्याला 9 बदलांचा आदेश देते, आणि एक विभाग तोच बदल तीनदा मोजतो. आकडा वाढला, पण काहीच सुधारले नाही. म्हणून दीपिका शिक्षिकांनाही विचारते.

📖 नवे शब्दDORA metrics — चार आकडे: किती वेळा, किती लवकर, किती वेळा बिघडते, किती लवकर दुरुस्त होतेlead time — बदल लिहिल्यापासून तो चालू होईपर्यंतचे तास, जसे 5 hGoodhart's law — आकडा ध्येय बनला की लोक काम सुधारण्याऐवजी आकडा वाकवतातSPACE — productivity पाहण्याचे पाच मार्ग, आकडे आणि लोकांना विचारणे एकत्र
1📊 science साठी DORA च्या चार किल्ल्या — kits पूर्वीचे 4 आठवडे विरुद्ध नंतरचे 4 आठवडेdeploys / आठवडाजास्त तितके चांगले1.0आधी3.0नंतर✓lead time (median)कल्पना → live150.0 hआधी5.0 hनंतर✓change failure rateबिघडलेले बदल50%आधी8%नंतर✓recovery (median)बिघाड → दुरुस्त23.0 hआधी2.0 hनंतर✓2🚀 आकड्यांमागचे deployments — commit ━ deploy, ✗ = बिघडले, ━ लाल = दुरुस्त होईपर्यंत (672 h = 4 आठवडे)h0आठवडा 1आठवडा 2आठवडा 3आठवडा 4आधी24 h22 h4नंतर2 h123🗓️ नव्या team ला पहिला deploy करायला लागणारा वेळदिवस 1दिवस 2दिवस 3दिवस 4दिवस 5दिवस 6दिवस 7दिवस 8🎫 repo · 2.0 दि🎫 pipeline · 2.0 दि🎫 database · 2.0 दि🎫 DNS · 2.0 दिtickets: एकामागून एक 4 × 2.0 दिवस ≈ 8.0 दिवसदिवस 1scaffoldself-service dbpipeline 15 minसोनेरी वाट: त्याच दिवशी4🎯 आकड्यालाच लक्ष्य बनवा → Goodhart चा नियमतेच 12 खरे बदल3.0/आठवडाप्रामाणिकपणे मोजले9.0/आठवडाप्रत्येक re-run ×3 मोजाlead time 5.0 h च राहतो — खरे काहीच सुधारले नाहीSसमाधान (Satisfaction)Pकामगिरी (Performance)Aहालचाल (Activity)Cसंवाद (Communication)Eकार्यक्षमता (Efficiency)SPACE: आकड्यांसोबत लोकांनाही विचारा; team ची तुलना तिच्या स्वतःशीच करा
⏪ आधी

Platform ची किंमत भावनेवरून, किंवा office दर महिन्याला किती tickets बंद करते यावरून ठरवली जात असे.

💡 काय

DORA च्या चार keys: दर आठवड्याचे deploys, lead time, change failure rate आणि recovery time, आणि लोकांना विचारणे (SPACE).

⚙️ कसे

Science 1.0 वरून 3.0 deploys/week, lead time 150 h वरून 5 h, failures 50% वरून 8%, आणि recovery 23 h वरून 2 h वर आली.

🎯 का

Re-runs मोजले तर त्याच 12 बदलांसाठी 9.0 deploys/week दिसतात: आकडा वाढतो पण काहीच सुधारत नाही.

🚀 पुढे

पुढचा धडा सगळे एका पानावर आणतो: developer portal, office चे प्रत्येक काम एकत्र करणारा front desk.

🧪 इथे करून पाहा — खऱ्या deployments मधून चार keys — आणि एखादा आकडा लक्ष्य बनला की काय होते
142

पूर्ण धडा 11 वाचा →

12 🏛️ Developer portal आणि संपूर्ण चित्र

स्वागत कक्ष — प्रत्येक service साठी Backstage-पद्धतीचे portal पान, आणि कार्यालयाचा संपूर्ण नकाशा.

🧒 सोप्या शब्दांत

Office मोठे झाले आहे: kits, नोंदवही, menu, trial खोल्या, किल्ल्यांचे कपाट आणि checklist. नव्या शिक्षिकेला नकाशा लागेल. म्हणून दीपिका एक front desk उघडते. कतरिना exam-results म्हणते, आणि तिला एक पान मिळते: owner, gold गुण, एक इशारा आणि आठवड्याला 3 बदल. Desk स्वतः काम करत नाही. ते सगळे सहज सापडेल असे करते.

📖 नवे शब्दdeveloper portal — एक website जिथे team ला आपल्या services बद्दल सगळे सापडतेBackstage — developer portal आणि catalog बनवण्यासाठी लोकप्रिय open-source toolinternal developer platform — platform team देत असलेले kits, menus आणि नियमांचा संपूर्ण संच
1🏛️ स्वागत कक्ष — कतरिना 'exam-results' टाइप करते आणि तिला एकच page मिळतेportal.school.test/catalog/exam-resultsexam-resultsowner sciencelifecycle production📇 catalog · यावर अवलंबूनresults-dbauthयांचे अवलंबनparent-portal🏅 scorecard★92% (gold)पुढे: SLO लिहिणे🛡️ policy (audit): इशाऱ्यांसह परवानगी!bucket public आहे → public_bucket: false करा आणि files CDN kit मधून द्या🚚 pipelinev2 → v2.1.0🧪 preview environmentsचालू: 1प्रत्येक pull request साठी एक📊 DORA (मागील 4 आठवडे)3.0deploys/आठवडा5.0 hlead time8%failure rate2.0 hrecovery📇catalogधडा 04🛡️धोरणधडा 09📊DORAधडा 11🏅scorecardधडा 10🚚pipelineधडा 07🧪previewsधडा 06कक्ष फक्त वाचतो;काम kits करतात2🗺️ संपूर्ण चित्र — सुविधा कार्यालय, धड्यागणिक1🧭 अडचणी2🤝 roadmap3🛤️ सोनेरी वाटा4📇 catalog5🧰 self-service6🧪 previews7🚚 तयार (paved) pipelines8🔑 secrets9🛡️ guardrails10🏅 scorecards11📊 प्रामाणिक मोजमाप12🏛️ एकच portal
⏪ आधी

नव्या शिक्षिकेला kit shelf, नोंदवही, menu, किल्ल्यांचे कपाट आणि checklist शोधायला नकाशा लागत असे.

💡 काय

Developer portal म्हणजे front desk: प्रत्येक service चे एक पान, catalog, scorecard आणि policy मधून गोळा केलेले.

⚙️ कसे

exam-results चे पान owner science, 92% gold, एक policy warning, pipeline v2 → v2.1.0 आणि 3.0 deploys/week दाखवते.

🎯 का

Desk फक्त वाचते; kits, menu आणि कपाट काम करतात, आणि desk ते सगळे एका जागी सहज सापडतील असे करते.

🚀 पुढे

30 teams च्या शाळेसाठी office आखा: पहिले तीन kits, quotas, पाच guardrails आणि प्रामाणिक मोजमाप.

🧪 इथे करून पाहा — exam-results चे स्वागत कक्ष page — भाग बदला, आणि page ते कसे एकत्र करते ते पाहा
1

पूर्ण धडा 12 वाचा →

धडा 01 सुरू करा → 🗓️ अभ्यास योजना (4 आठवडे) 📐 सर्व 12 धड्यांच्या आकृत्या 🧪 प्रश्नमंजुषा (16 प्रश्न) ⏮️ आधी काय होते & फायदे-तोटे