İçeriğe geç
academia.sh

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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat