Ders 12 / 12
Platform Ölçütleri
Platformun işe yarayıp yaramadığının ölçülmesi: kırk ekip-yetenek çiftinden yalnız yirmi beşinin dolu olması, elli dört iş günlük iki yeteneğin en çok bir ekibe hizmet etmesi, dört teslimat ölçütündeki ham farkın %48-%77'sinin seçim yanlılığından gelmesi ve fark-farkının dördünde de grup içi yayılımdan küçük kalması, aynı 550 dakikalık kesintinin merkezî düzende 2.750 ekip-dakikaya çıkması ve benimsemeyi zorunlu kılmanın ölçütü %60 iyileştirirken kullanım başına işi %18 kötüleştirmesi.
İçindekiler
Önceki ders beş ekibi dalgalar hâlinde taşıdı ve geride kalanı adıyla saydı. Bu konu boyunca her ders platformun ne yaptığını saydı; hiçbiri bunların ekiplerin işini gerçekten hızlandırıp hızlandırmadığını sormadı.
Dört teslimat ölçütü M22/K01’de tanımlandı ve burada tekrarlanmaz, girdidir. Ölçülen şey ölçütler değil, ölçütteki farkın nereden geldiğidir. Through-line yine kurgu bölgesel ölçüm ağı ve onun beş kurgu ekibidir.
Benimsemeyi Bir Sayıya Bağlamak
PT37: sekiz yeteneğin her birinin kurulum işi, yıllık bakımı, kullanan ekip sayısı ve kullanım sayısı yazılıdır. PT38: beş ekibin dört teslimat ölçütü benimseme öncesi ve sonrası okunur. PT39: üç ekip benimsemiştir; sıra göç dalgasından gelir, yani engeli olmayan ekipler önce taşınmıştır. PT40: platform bir bağımlılıktır; on iki ayda kesintiler, süreleri, o an platformu kullanan ekip sayısı ve kaynağı yazılıdır. PT41: benimseme zorlanırsa her ekip-yetenek çifti bir uyum işi getirir ve zorlananların yalnız bir bölümü kullanım üretir. PT42: ekip başına yıllık destek isteği ve platform ekibinin kapasitesi yazılıdır.
Yetenekler, ölçütler ve kesintiler süreç içi bir modeldir; rastgelelik yoktur.
// olcut/veri.mjs — platform olcutleri modeli: gercek bir olcum hatti yok; yetenekler, ekip // olcutleri ve kesintiler bir veri yapisidir, rastgelelik yoktur. Olcut *tanimlari* M22/K01'de // kuruldu ve burada girdidir. Is gunleri kurgudur. export const EKIP = ["sayac-okuma", "dogrulama", "faturalama", "saha", "raporlama"]; export const BENIMSEYEN = [0, 1, 4]; // goc dalgasindan gelir: engeli olmayan ekipler once export const BENIMSEMEYEN = [2, 3]; // kritik donem ve uyumsuz gereksinim // yetenek: ad, kurulum isi, yillik bakim (is gunu), kullanan ekip, donemdeki kullanim export const YETENEK = [ ["istek uzerine ortam", 34, 7, 4, 60], ["iskelet uretimi", 22, 5, 5, 5], ["servis katalogu", 18, 6, 3, 5], ["politika kapisi", 27, 8, 5, 72], ["maliyet gorunurlugu", 15, 4, 3, 30], ["goc araci", 31, 3, 4, 4], ["gizli deger dondurme", 19, 5, 0, 0], ["ortak gosterge kitapligi", 24, 6, 1, 3], ]; // olcut: ad, birim, yon (+1 buyuk iyi, -1 kucuk iyi), benimseme oncesi, sonrasi (ekip sirasi) export const OLCUT = [ ["dagitim sikligi", "hafta", +1, [4.0, 3.5, 1.6, 1.1, 2.8], [8.4, 4.6, 2.4, 1.5, 5.9]], ["oncu sure", "saat", -1, [52, 61, 96, 120, 47], [18, 52, 84, 112, 12]], ["basarisizlik orani", "%", -1, [14, 11, 18, 21, 9], [6, 9.5, 15.5, 19, 4]], ["onarma suresi", "dk", -1, [190, 145, 240, 310, 160], [95, 130, 215, 300, 70]], ]; // kesinti: ay, sure (dk), o an platformu kullanan ekip sayisi, kaynak export const KESINTI = [[2, 45, 1, "platform"], [4, 120, 2, "alt katman"], [6, 25, 3, "platform"], [8, 210, 3, "platform"], [10, 60, 3, "alt katman"], [12, 90, 3, "platform"]]; export const ISTEK_EKIP = 34, KAPASITE = 90; // ekip basina yillik istek / platform kapasitesi export const UYUM_ISI = 4, ZORLA_KULLANAN = 4, ZORLA_KULLANIM = 3; // zorlamanin bedeli export const topla = (v) => v.reduce((a, b) => a + b, 0); const ort = (v) => topla(v) / v.length; const grup = (g, d, y) => ort(g.map((i) => d[i])) * y; // bir olcut icin ham fark, secim yanliligi, fark-farki ve benimseyen grubun kendi ici yayilimi export function ayir([, , yon, once, sonra]) { const d = (i) => (sonra[i] - once[i]) * yon; // iyilesme, isareti duzeltilmis const bd = BENIMSEYEN.map(d); return { sonraFark: grup(BENIMSEYEN, sonra, yon) - grup(BENIMSEMEYEN, sonra, yon), onceFark: grup(BENIMSEYEN, once, yon) - grup(BENIMSEMEYEN, once, yon), farkFarki: ort(bd) - ort(BENIMSEMEYEN.map(d)), yayilim: Math.max(...bd) - Math.min(...bd) }; }
// olcut/olc.mjs — benimseme dokumu, dort olcutun ayristirilmasi, platformun kendi olcutu ve // benimsemeyi zorunlu kilmanin olcute ne yaptigi. import { EKIP, BENIMSEYEN, YETENEK, OLCUT, KESINTI, ISTEK_EKIP, KAPASITE, UYUM_ISI, ZORLA_KULLANAN, ZORLA_KULLANIM, topla, ayir } from "./veri.mjs"; const yaz = (g, ...s) => console.log(s.map((v, i) => (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join("")); const t0 = process.hrtime.bigint(); const IS = topla(YETENEK.map((y) => y[1] + y[2])), KUL = topla(YETENEK.map((y) => y[4])); const cift = topla(YETENEK.map((y) => y[3])), tumCift = YETENEK.length * EKIP.length; console.log(`${EKIP.length} ekip, ${YETENEK.length} yetenek, ${BENIMSEYEN.length} benimseyen`); console.log("\n1. benimseme: yetenek basina ekip ve kullanim"); const A = [-26, 8, 8, 9, 11, 14]; yaz(A, "yetenek", "kurulum", "bakim", "ekip", "kullanim", "kullanim/is"); for (const [ad, k, b, e, u] of YETENEK) yaz(A, ad, k, b, `${e}/${EKIP.length}`, u, u ? ((k + b) / u).toFixed(2) : "-"); yaz(A, "toplam", topla(YETENEK.map((y) => y[1])), topla(YETENEK.map((y) => y[2])), `${cift}/${tumCift}`, KUL, (IS / KUL).toFixed(2)); const bos = YETENEK.filter((y) => y[3] <= 1), bosIs = topla(bos.map((y) => y[1] + y[2])); console.log(` benimseme %${(100 * cift / tumCift).toFixed(1)}, ` + `${(cift / YETENEK.length).toFixed(2)} ekip/yetenek; en az kullanilan ` + `${bos.length} yetenek ${bosIs} is gunu (%${(100 * bosIs / IS).toFixed(0)})`); console.log("\n2. dort teslimat olcutu: fark platformdan mi geliyor"); const B = [-24, 11, 17, 12, 10, 10]; yaz(B, "olcut", "ham fark", "secim yanliligi", "fark-farki", "yayilim", "ayrilir"); for (const o of OLCUT) { const r = ayir(o); yaz(B, `${o[0]} (${o[1]})`, r.sonraFark.toFixed(2), r.onceFark.toFixed(2), r.farkFarki.toFixed(2), r.yayilim.toFixed(2), Math.abs(r.farkFarki) > r.yayilim ? "evet" : "hayir"); } const p = OLCUT.map((o) => { const r = ayir(o); return 100 * r.onceFark / r.sonraFark; }); console.log(` secim yanliligi ham farkin %${Math.min(...p).toFixed(0)}-` + `%${Math.max(...p).toFixed(0)}'ini aciklar`); console.log(" fark-farki dordunde de yayilimdan kucuk: kalan pay ayrilamiyor"); console.log("\n3. platform bir bagimliliktir: ayni kesinti kac ekibi durduruyor"); const sure = topla(KESINTI.map((k) => k[1])); const gercek = topla(KESINTI.map((k) => k[1] * k[2])); const pk = KESINTI.filter((k) => k[3] === "platform"); console.log(` ${KESINTI.length} kesinti ${sure} dk; platform kaynakli ${pk.length} kesinti ` + `(${topla(pk.map((k) => k[1]))} dk), alt katman ${KESINTI.length - pk.length} kesinti`); const C = [-11, 14, 18, 15, 16]; yaz(C, "benimseyen", "dagitilmis", "merkezi ekip-dk", "destek istegi", "kapasite asimi"); for (const n of [1, 3, 5]) yaz(C, n, `${sure} ekip-dk`, n * sure, n * ISTEK_EKIP, n * ISTEK_EKIP > KAPASITE ? `%${(100 * (n * ISTEK_EKIP / KAPASITE - 1)).toFixed(0)}` : "-"); console.log(` gerceklesen ${gercek} ekip-dk (benimseme donem icinde buyudu), ` + `dagitilmisin ${(gercek / sure).toFixed(1)} kati`); console.log("\n4. benimsemeyi zorunlu kilmak olcute ne yapiyor"); const zorlanan = tumCift - cift, ekIs = zorlanan * UYUM_ISI; const ekKul = ZORLA_KULLANAN * ZORLA_KULLANIM; const D = [-22, 14, 13, 20]; yaz(D, "duzen", "benimseme", "kullanim", "kullanim basina is"); yaz(D, "gonullu", `%${(100 * cift / tumCift).toFixed(1)}`, KUL, (IS / KUL).toFixed(2)); yaz(D, "zorunlu", "%100.0", KUL + ekKul, ((IS + ekIs) / (KUL + ekKul)).toFixed(2)); const iyi = (100 * (tumCift / cift - 1)).toFixed(0); const kotu = (100 * ((IS + ekIs) / (KUL + ekKul) / (IS / KUL) - 1)).toFixed(0); const uretmez = zorlanan - ZORLA_KULLANAN; console.log(` zorlanan ${zorlanan} ciftin ${uretmez} tanesi kullanim uretmez`); console.log(` benimseme %${iyi} iyilesirken kullanim basina is %${kotu} kotulesiyor`); const ms = Number(process.hrtime.bigint() - t0) / 1e6; // ham olcum basilmaz, bant denetlenir console.log(`\ndort tablo 2000 ms bandinda: ${ms < 2000 ? "evet" : "hayir"}`);
5 ekip, 8 yetenek, 3 benimseyen 1. benimseme: yetenek basina ekip ve kullanim yetenek kurulum bakim ekip kullanim kullanim/is istek uzerine ortam 34 7 4/5 60 0.68 iskelet uretimi 22 5 5/5 5 5.40 servis katalogu 18 6 3/5 5 4.80 politika kapisi 27 8 5/5 72 0.49 maliyet gorunurlugu 15 4 3/5 30 0.63 goc araci 31 3 4/5 4 8.50 gizli deger dondurme 19 5 0/5 0 - ortak gosterge kitapligi 24 6 1/5 3 10.00 toplam 190 44 25/40 179 1.31 benimseme %62.5, 3.13 ekip/yetenek; en az kullanilan 2 yetenek 54 is gunu (%23) 2. dort teslimat olcutu: fark platformdan mi geliyor olcut ham fark secim yanliligi fark-farki yayilim ayrilir dagitim sikligi (hafta) 4.35 2.08 2.27 3.30 hayir oncu sure (saat) 70.67 54.67 16.00 26.00 hayir basarisizlik orani (%) 10.75 8.17 2.58 6.50 hayir onarma suresi (dk) 159.17 110.00 49.17 80.00 hayir secim yanliligi ham farkin %48-%77'ini aciklar fark-farki dordunde de yayilimdan kucuk: kalan pay ayrilamiyor 3. platform bir bagimliliktir: ayni kesinti kac ekibi durduruyor 6 kesinti 550 dk; platform kaynakli 4 kesinti (370 dk), alt katman 2 kesinti benimseyen dagitilmis merkezi ekip-dk destek istegi kapasite asimi 1 550 ekip-dk 550 34 - 3 550 ekip-dk 1650 102 %13 5 550 ekip-dk 2750 170 %89 gerceklesen 1440 ekip-dk (benimseme donem icinde buyudu), dagitilmisin 2.6 kati 4. benimsemeyi zorunlu kilmak olcute ne yapiyor duzen benimseme kullanim kullanim basina is gonullu %62.5 179 1.31 zorunlu %100.0 191 1.54 zorlanan 15 ciftin 11 tanesi kullanim uretmez benimseme %60 iyilesirken kullanim basina is %18 kotulesiyor dort tablo 2000 ms bandinda: evet
Sayılar ölçüm sınıfındadır; girdileri yukarıdaki varsayımlardır.
Benimseme Üç Sayıdır, Bir Değil
Kırk ekip-yetenek çiftinin yirmi beşi doludur (%62,5) ve yetenek başına 3,13 ekip düşer.
Üçüncü sütun tabloyu değiştirir: kullanım başına iş politika kapisi yeteneğinde 0,49 iş günü,
ortak gosterge kitapligi yeteneğinde 10,00 iş günü tutar — yirmi kat fark.
İki yetenek karşılıksızdır. gizli deger dondurme hiç kullanılmaz: 19 iş günü kurulum, 5 iş
günü bakım, sıfır kullanım. ortak gosterge kitapligi tek ekibe hizmet eder. İkisi birlikte
54 iş günü, toplam yatırımın %23’ü — platformun kazandırmadığı durum burada bir sütunda
okunur: iş yapılmış, karşılığı doğmamıştır.
Fark Platformdan mı Geliyor
Ham fark iki grubun benimseme sonrasındaki farkıdır ve dört ölçütte de büyüktür: haftada 4,35 dağıtım, 70,67 saat öncü süre, 10,75 puan başarısızlık oranı, 159,17 dakika onarma süresi.
İkinci sütun bu farkın ne kadarının benimsemeden önce de var olduğunu yazar: öncü sürede 70,67 saatlik farkın 54,67’si, başarısızlık oranında 10,75 puanın 8,17’si. Karıştırıcı etkenin adı seçim yanlılığıdır ve nedeni önceki derste ölçüldü — platforma ilk taşınan ekipler engeli olmayanlardı, zaten daha hızlıydılar. Ham farkın %48 ile %77’sini açıklar.
Üçüncü sütun ikisinin farkını alır. Fark-farkı, benimsemeyen grubun aynı dönemdeki kendi iyileşmesini de düşer — ikinci karıştırıcı etken olan ortak eğilimi temizler. Geriye dağıtım sıklığında 2,27, öncü sürede 16,00 saat kalır.
Dördüncü sütun kalanı da çürütür. Benimseyen üç ekibin kendi aralarındaki yayılım dağıtım
sıklığında 3,30, öncü sürede 26,00’dır; her ölçütte fark-farkından büyüktür ve son sütun
dördünde de hayır yazar: fark vardır ama nereden geldiği ayrılamaz.
Platform Bir Bağımlılıktır
Üçüncü tablo platformun kendi ölçütünü sayar: on iki ayda altı kesinti ve 550 dakika, dördü platform kaynaklı (370 dakika). Asıl sayı süre değil, ekip-dakikadır. Dağıtılmış düzende bir arıza bir ekibi durdurur: 550 ekip-dakika. Merkezî düzende aynı 550 dakika benimseyen ekip sayısıyla çarpılır — beş ekipte 2.750 ekip-dakika. Gerçekleşen 1.440’tır, dağıtılmışın 2,6 katı.
Soyutlamanın sızdığı yer budur: tek bir katman gizlendiği için tek bir arıza beş ekibi birden durdurur. Platform ne kadar başarılıysa bir kesintisi o kadar pahalıdır. Destek isteği de kapasiteyi beş ekipte %89 aşar.
Ölçütün Yanlış Yönlendirdiği Yer
Dördüncü tablo benimseme oranını hedef almanın sonucudur. Zorunlu kılınca oran %62,5’ten %100’e çıkar; zorlanan on beş çift 60 iş günü uyum işi getirir ve on biri hiç kullanım üretmez. Ölçüt %60 iyileşirken kullanım başına iş 1,31’den 1,54’e, %18 kötüleşir — ölçüt hareket eder, ölçmesi gereken şey etmez.
İkinci yanlış yönlendirme ikinci tablodadır. Kolay ekipleri önce taşımak göç programı için doğru karardır, ama aynı karar teslimat ölçütlerindeki farkın %48 ile %77’sini üretir: sıralama bir yerde verimlilik, başka bir yerde yanlılıktır.
Özet
- Kırk ekip-yetenek çiftinin 25’i doludur (%62,5); kullanım başına iş 0,49 ile 10,00 iş günü arasında değişir ve en az kullanılan iki yetenek yatırımın %23’ünü (54 iş günü) tutar.
- Dört teslimat ölçütünde ham farkın %48-%77’si seçim yanlılığından gelir; fark-farkı ortak eğilimi de temizler ama dördünde de grup içi yayılımdan küçük kalır — farkın nereden geldiği ayrılamaz.
- Aynı 550 dakikalık kesinti dağıtılmış düzende 550, beş ekipte 2.750 ekip-dakikadır; gerçekleşen 1.440, dağıtılmışın 2,6 katı ve destek isteği kapasiteyi %89 aşar.
- Benimsemeyi zorunlu kılmak oranı %100’e çıkarır ve zorlanan 15 çiftin 11’i hiç kullanım üretmez; kullanım başına iş %18 kötüleşir.
Kurs Kapanışı
| Ders | Gizlenen katman | Kaç ekip, ne kadar kazanç | Sızma ya da dışına çıkma |
|---|---|---|---|
| Platform Mühendisliği Nedir | 18 kalem, 666 iş günü | eşik 7 ekip; 5’te −121 gün | artık %30,6; 9/18’de muafiyet |
| Ürün Olarak Platform | istek→ihtiyaç, 20→14 yetenek | 5 ekip, 132 iş günü | ürün ekiplerine 128 gün (%97) |
| Altın Yollar | 10 destek kalemi, üç eksen | 64 iş günü/yıl; 1/5 sığar | saha on kalemi de kaybeder |
| Standart ve Özerklik Dengesi | kip seçimi, 80 iş günü | karma düzen +10 iş günü | duvar 10 meşru gereksinimi tutar |
| Kendi Kendine Hizmet | talep kuyruğu, 1.551 istek | 6/12 tür, 79 iş günü | bolge tasima −32 iş günü |
| İstek Üzerine Ortam Sağlama | ortam kurulum adımları | 336 insan-saat; eşik 5 ekip | havuz 16/90 gün dolu; saha dışarıda |
| Şablon ve İskelet Üretimi | 19 karar, 3 cevaba iner | 5 servis, 95→15 cevap | sürüm 2’de 4/5 servis geride |
| Geliştirici Portalı ve Servis Kataloğu | ters kenar ve sahiplik | 32→28,8 dk; eşik 2 olay | 6/12 kayıt uyuşmaz |
| Politika ve Uyumluluk Otomasyonu | 6 kuralın metni | 5 ekip, 830→152 dk | 4 muafiyet, ömrü 3,2 kat |
| Maliyet Görünürlüğü | fatura ve muhasebe hattı | 85 br/gün; eşik 3 ekip | 408 br/gün denetim dışı |
| Göç Stratejileri | göçün 14 adımından 10’u | dalga=1’de 4 ekip, 40 adım | 1–3 ekip geride, eski düzen süresiz |
| Platform Ölçütleri | ölçüm hattının kendisi | 3 ekip, 25/40 çift (%62,5) | 1.440 ekip-dk kesinti |
On iki satırın hiçbirinde üçüncü sütun dördüncüsüz değildir. Kazanç her derste bir sayıya bağlandı ve yanında bir bedel durdu: soyutlama gizlediği katmanı ortadan kaldırmaz — kazancını ekip sayısıyla çarpar, bedelini sızma ve dışına çıkmayla ödetir. Eşik üç derste açıkça çıktı (7, 5 ve 3 ekip) ve üçünde de altında kalmak platformu zararlı yaptı.
| Kurs | Ölçü ekseni | Ölçü birimi |
|---|---|---|
| K01 DevOps Kültürü ve Temelleri | fark nerede saklı | fark kalemi |
| K02 Konteynerler | yalıtım bir bütçedir | bayt, katman, kaynak |
| K03 Konteyner Orkestrasyonu | kararı devretmenin bedeli | bilgi kalemi |
| K04 Sürekli Tümleştirme ve Teslimat | her kapı neyi tutar, neyi kaçırır | marjinal kapı değeri |
| K05 Kod Olarak Altyapı | kayıt ile gerçek arasındaki fark | kayıt kalemi |
| K06 Gözlemlenebilirlik ve İşletim | veri değil, soru | soru başına maliyet |
| K07 Sunucu, Ağ ve Sertleştirme | varsayılanın kendisi | açık yüzey kalemi |
| K08 Platform Mühendisliği | soyutlamanın bedeli | gizlenen katman |
Sekiz kurs sekiz ayrı konu anlattı ama tek bir biçimde ölçtü. Fark kalemi de, açık yüzey kalemi de, gizlenen katman da aynı üç şeyi soruyordu: bir karar, bir sayı ve o sayının karşılığında ödenen bedel. K02’de yalıtımın bedeli baytla, K04’te bir kapının değeri yakaladığı ihlalle, K08’de soyutlamanın değeri kurtardığı ekip sayısıyla ölçüldü. Hiçbirinde “iyidir” tek başına karar taşımadı.
Ölçmenin kendisi de bedelsiz değildi: K06 ölçen tarafın faturada ayrı bir kalem olduğunu saydı, K08 ölçüm yatırımının %23’ünün karşılıksız kaldığını gösterdi. Ölçülemeyeni ölçülmüş gibi yazmamak da bir ölçüm kararıdır — ve bu müfredatın son satırı odur.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.