Ders 15 / 22
Çıkarılan Dersler
İncelemenin kanıt ve kapsam ekseninde ölçülmesi: on altı sorudan on birinin dokuz kayıt kaynağıyla yanıtlanması, beş sorunun üç ayrı nedenle yanıtsız kalması, on iki iyileştirme kaleminin beşinin doğrudan bir eksik kayda dayanması, yalnız kayıt iyileştirmelerinin 136 kişi-saatle yanıtlı soruyu 16'ya çıkarıp zincirden 22 dakika düşürmesi, hazırlık ve süreç iyileştirmelerinin 103 kişi-saatle 55 dakika kazandırıp hiçbir soru açmaması.
İçindekiler
Önceki ders hizmeti geri getirdi ve üretime geçen tutunma noktası beklentisini 0,10’a indirdi. Olay kapandı. Geriye olayın kendisinin yeniden kurulması kaldı: ne oldu, ne zaman başladı, hangi karar hangi dakikada verildi ve hangi kalem farklı olsaydı süre kısalırdı.
Bu dersin ölçüsü incelemenin çıktısı değil, incelemenin kanıt tabanıdır. Eylem maddesinin açılması, kapanması ve izlenmesi DevOps ve Gözlemlenebilirlik kursunda ölçüldü; burada ondan önceki adım sayılır. Bir soru kümesi kurulur, her sorunun yanıtlanması için gereken kayıt kaynakları yazılır ve şu üç sayı çıkarılır: kaç soru yanıtlanıyor, kaç soru kayıt olmadığı için yanıtsız kalıyor ve açılan iyileştirme kalemlerinin kaçı doğrudan bir eksik kayda dayanıyor.
Soru Kümesi ve Kayıt Kaynakları
OM34: İnceleme olaydan on iki gün sonra yapılır; ilk tutunma dokuz gün öncedir. OM35: On altı soru vardır; her soru bir ya da iki kayıt kaynağı ister ve kaçıncı güne bakması gerektiği bellidir. OM36: Dokuz kayıt kaynağının her birinin üç özelliği vardır — var mı, saklama süresi kaç gün ve sınırlama ile kurtarmadan sonra duruyor mu. OM37: Bir soru, gerektirdiği kaynakların hepsi kullanılabilir olduğunda yanıtlanır; kaynak yoksa, saklama süresi sorunun baktığı günü kapsamıyorsa ya da kaynak sınırlamada silinmişse soru yanıtsız kalır. OM38: On iki iyileştirme kalemi vardır; her biri ya doğrudan bir eksik kayda dayanır, ya bir hazırlık kalemini tazeler, ya da bir süreç adımını bağlar. OM39: Her kalemin yıllık kişi-saat bedeli ve karar zincirinden düşürdüğü dakika bir veridir; dakika değerleri zincirin yeniden koşturulmasından gelir. OM40: Karar zincirinin başlangıç değeri birinci dersteki tam hazırlık değeridir: 182 dakika.
// dersler/model.mjs — cikarilan dersler modeli: gercek bir olay kaydi ya da inceleme yok. // Soru kumesi, kayit kaynaklari ve iyilestirme kalemleri veri yapisidir. export const OLAY_YAS = 12, ILK_TUTUNMA = 9; // inceleme gunu; ilk tutunma kac gun once // kayit kaynagi: ad -> { var mi, saklama gunu, sinirlama ve kurtarmadan sonra duruyor mu } export const KAYNAK = { surec: { ad: "surec olusturma kaydi", var: true, saklama: 14, kalici: true }, kimlik: { ad: "kimlik dogrulama gunlugu", var: true, saklama: 90, kalici: true }, ag: { ad: "ag akis verisi", var: true, saklama: 30, kalici: true }, uygulama: { ad: "uygulama denetim kaydi", var: true, saklama: 7, kalici: true }, tespit: { ad: "tespit hatti kaydi", var: true, saklama: 30, kalici: true }, mudahale: { ad: "mudahale kutugu", var: true, saklama: 365, kalici: true }, dosya: { ad: "dosya butunlugu izleme", var: false, saklama: 0, kalici: false }, veri: { ad: "veri erisim kaydi", var: false, saklama: 0, kalici: false }, bellek: { ad: "bellek dokumu", var: true, saklama: 365, kalici: false }, }; // soru: metin, gerekli kaynaklar, sorunun bakmasi gereken gun (kac gun once) export const SORU = [ ["ilk calistirma hangi varlikta ve ne zaman", ["surec"], 9], ["ilk erisim hangi kimlikle saglandi", ["kimlik"], 9], ["hizmet hesabi hangi varliklarda kullanildi", ["kimlik", "ag"], 9], ["toplayici-07 ve -11 gercekten etkilendi mi", ["surec"], 0], ["disari hangi hacimde veri aktarildi", ["ag"], 0], ["fatura arsivini hangi hesap okudu", ["uygulama"], 9], ["son gunun uygulama erisimleri neydi", ["uygulama"], 3], ["kalicilik noktalari ne zaman kuruldu", ["dosya"], 9], ["yapilandirma kancalari hangi anda eklendi", ["bellek", "dosya"], 9], ["uyari neden 186. dakikada dustu", ["tespit"], 0], ["daha erken dusebilecek bir kural var miydi", ["tespit", "surec"], 0], ["kapsam karari hangi veriye dayandi", ["mudahale"], 0], ["sinirlama hangi dakikada uygulandi", ["mudahale"], 0], ["kesilen mesru is ne kadar surdu", ["mudahale", "uygulama"], 0], ["kacirilan noktalar ne zaman kuruldu", ["bellek", "dosya"], 9], ["hangi abone kayitlari okundu", ["veri"], 9], ]; // bir kaynagin soruyu yanitlayamama nedeni export function neden(k, gun) { const s = KAYNAK[k]; if (!s.var) return "kaynak yok"; if (!s.kalici) return "sinirlamada silindi"; if (gun > s.saklama) return "saklama yetmedi"; return null; } export function yanit(soru, eklenen = []) { const [, gerekli, gun] = soru; const eksik = gerekli.filter((k) => !eklenen.includes(k) && neden(k, gun)); return { yanitli: eksik.length === 0, nedenler: eksik.map((k) => `${k}: ${neden(k, gun)}`) }; } export const yanitli = (eklenen = []) => SORU.filter((s) => yanit(s, eklenen).yanitli).length; // iyilestirme kalemi: ad, dayandigi eksik (kaynak anahtari ya da hazirlik kalemi), // tur, yillik kisi-saat, karar zincirinden dusurdugu dakika export const IYILESTIRME = [ ["dosya butunlugu izlemeyi acma", "dosya", "kayit", 34, 0], ["veri erisim kaydini acma", "veri", "kayit", 46, 0], ["uygulama saklamasini 30 gune cikarma", "uygulama", "kayit", 12, 0], ["sinirlamadan once bellek alma", "bellek", "kayit", 18, 0], ["toplayici-07..12'ye surec kaydi", "surec", "kayit", 26, 22], ["varlik envanterini guncel tutma", "-", "hazirlik", 24, 10], ["iletisim agacini tazeleme", "-", "hazirlik", 6, 6], ["yetki matrisini tazeleme", "-", "hazirlik", 8, 8], ["kayit kaynagi haritasini cikarma", "-", "hazirlik", 12, 7], ["ceyrekte bir masa basi tatbikati", "-", "hazirlik", 30, 9], ["sinirlama eylemlerini yordama baglama", "-", "surec", 14, 8], ["kapsam olcutunu gostergeye cevirme", "-", "surec", 9, 7], ]; export const ZINCIR_TABAN = 182, UYARI = 186; // birinci dersteki tam hazirlik zinciri // erisim egrisi: [dakika, varlik] (onceki derslerle ayni veri) export const ERISIM = [[0, "toplayici-03"], [26, "toplayici-03"], [58, "dogrulayici-01"], [95, "toplayici-07"], [134, "toplayici-11"], [171, "dogrulayici-02"], [214, "faturalama-01"], [263, "portal-01"], [318, "isemri-01"], [372, "uc-01"], [441, "depo-01"], [505, "faturalama-01"], [588, "toplayici-09"], [676, "konsol-01"], [762, "portal-02"], [845, "depo-01"], [951, "faturalama-02"], [1088, "konsol-01"]]; export const kalem = (dk) => ERISIM.filter(([t]) => t <= dk).length; // secilen iyilestirme kumesi: yanitli soru, zincir dakikasi, sinirlama ani, erisilen kalem export function uygula(secili) { const k = IYILESTIRME.filter(([ad]) => secili.includes(ad)); const eklenen = k.filter((x) => x[2] === "kayit").map((x) => x[1]); const zincir = ZINCIR_TABAN - k.reduce((s, x) => s + x[4], 0); return { kalem: k.length, yanit: yanitli(eklenen), zincir, sinirlama: UYARI + zincir, erisilen: kalem(UYARI + zincir), saat: k.reduce((s, x) => s + x[3], 0) }; }
Ölçüm dosyası önce kaynakları ve soruları eşleştirir, sonra iyileştirme kümelerini uygulayıp yanıtlı soru sayısıyla zincir dakikasını birlikte çıkarır.
// dersler/olc.mjs — hangi soru kayit olmadigi icin yanitsiz kaliyor, yanitsizligin nedeni // ne ve acilan iyilestirme kalemlerinin kaci dogrudan bir eksik kayda dayaniyor. import { OLAY_YAS, KAYNAK, SORU, IYILESTIRME, ZINCIR_TABAN, neden, yanit, yanitli, uygula } from "./model.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(); console.log(`inceleme olaydan ${OLAY_YAS} gun sonra yapiliyor; ${SORU.length} soru, ` + `${Object.keys(KAYNAK).length} kayit kaynagi`); console.log("\n1. kayit kaynaklari"); const A = [-26, 7, 10, 9, 10, 12]; yaz(A, "kaynak", "var", "saklama", "kalici", "gerekli", "engelledigi"); for (const [k, s] of Object.entries(KAYNAK)) { const gerekli = SORU.filter(([, g]) => g.includes(k)); const engel = gerekli.filter(([, , gun]) => neden(k, gun)); yaz(A, s.ad, s.var ? "evet" : "hayir", s.var ? s.saklama + " gun" : "-", s.kalici ? "evet" : "hayir", gerekli.length, engel.length); } console.log("\n2. yanitsiz sorular ve nedeni"); const B = [-4, -42, -34]; for (const s of SORU) { const y = yanit(s); if (!y.yanitli) yaz(B, "", s[0], y.nedenler.join("; ")); } console.log(` yanitli ${yanitli()}/${SORU.length}`); console.log("\n3. iyilestirme kalemleri"); const C = [-38, 10, 17, 12, 11]; yaz(C, "kalem", "tur", "dayandigi eksik", "yil s-saat", "zincir dk"); for (const [ad, eksik, tur, saat, dk] of IYILESTIRME) yaz(C, ad, tur, eksik === "-" ? "-" : KAYNAK[eksik].ad.split(" ")[0], saat, dk || "-"); const kayitKalem = IYILESTIRME.filter((x) => x[2] === "kayit").length; console.log(` dogrudan bir eksik kayda dayanan kalem: ${kayitKalem}/${IYILESTIRME.length}`); console.log("\n4. iyilestirme kumeleri uygulandiginda"); const D = [-24, 8, 10, 11, 12, 11, 12]; yaz(D, "kume", "kalem", "yanitli", "zincir dk", "sinirlama", "erisilen", "yil s-saat"); const ad = (t) => IYILESTIRME.filter((x) => t.includes(x[2])).map((x) => x[0]); const KUME = { "hicbiri": [], "yalniz kayit": ad(["kayit"]), "hazirlik + surec": ad(["hazirlik", "surec"]), "hepsi": ad(["kayit", "hazirlik", "surec"]) }; for (const [k, secili] of Object.entries(KUME)) { const r = uygula(secili); yaz(D, k, r.kalem, `${r.yanit}/${SORU.length}`, r.zincir, r.sinirlama, `${r.erisilen}/18`, r.saat); } console.log("\n5. iki eksenin birbirine cevrilemedigi yer"); const kayitR = uygula(KUME["yalniz kayit"]), hazirR = uygula(KUME["hazirlik + surec"]); const E = [-20, 12, 14, 15, -22]; yaz(E, "kume", "yil s-saat", "acilan soru", "kazanilan dk", " birim basina s-saat"); yaz(E, "yalniz kayit", kayitR.saat, kayitR.yanit - yanitli(), ZINCIR_TABAN - kayitR.zincir, ` ${(kayitR.saat / (kayitR.yanit - yanitli())).toFixed(1)} / soru`); yaz(E, "hazirlik + surec", hazirR.saat, hazirR.yanit - yanitli(), ZINCIR_TABAN - hazirR.zincir, ` ${(hazirR.saat / (ZINCIR_TABAN - hazirR.zincir)).toFixed(1)} / dakika`); const ms = Number(process.hrtime.bigint() - t0) / 1e6; // ham olcum basilmaz, bant denetlenir console.log(`\ndort kume ve soru taramasi 500 ms bandinda: ${ms < 500 ? "evet" : "hayir"}`);
inceleme olaydan 12 gun sonra yapiliyor; 16 soru, 9 kayit kaynagi
1. kayit kaynaklari
kaynak var saklama kalici gerekli engelledigi
surec olusturma kaydi evet 14 gun evet 3 0
kimlik dogrulama gunlugu evet 90 gun evet 2 0
ag akis verisi evet 30 gun evet 2 0
uygulama denetim kaydi evet 7 gun evet 3 1
tespit hatti kaydi evet 30 gun evet 2 0
mudahale kutugu evet 365 gun evet 3 0
dosya butunlugu izleme hayir - hayir 3 3
veri erisim kaydi hayir - hayir 1 1
bellek dokumu evet 365 gun hayir 2 2
2. yanitsiz sorular ve nedeni
fatura arsivini hangi hesap okudu uygulama: saklama yetmedi
kalicilik noktalari ne zaman kuruldu dosya: kaynak yok
yapilandirma kancalari hangi anda eklendi bellek: sinirlamada silindi; dosya: kaynak yok
kacirilan noktalar ne zaman kuruldu bellek: sinirlamada silindi; dosya: kaynak yok
hangi abone kayitlari okundu veri: kaynak yok
yanitli 11/16
3. iyilestirme kalemleri
kalem tur dayandigi eksik yil s-saat zincir dk
dosya butunlugu izlemeyi acma kayit dosya 34 -
veri erisim kaydini acma kayit veri 46 -
uygulama saklamasini 30 gune cikarma kayit uygulama 12 -
sinirlamadan once bellek alma kayit bellek 18 -
toplayici-07..12'ye surec kaydi kayit surec 26 22
varlik envanterini guncel tutma hazirlik - 24 10
iletisim agacini tazeleme hazirlik - 6 6
yetki matrisini tazeleme hazirlik - 8 8
kayit kaynagi haritasini cikarma hazirlik - 12 7
ceyrekte bir masa basi tatbikati hazirlik - 30 9
sinirlama eylemlerini yordama baglama surec - 14 8
kapsam olcutunu gostergeye cevirme surec - 9 7
dogrudan bir eksik kayda dayanan kalem: 5/12
4. iyilestirme kumeleri uygulandiginda
kume kalem yanitli zincir dk sinirlama erisilen yil s-saat
hicbiri 0 11/16 182 368 9/18 0
yalniz kayit 5 16/16 160 346 9/18 136
hazirlik + surec 7 11/16 127 313 8/18 103
hepsi 12 16/16 105 291 8/18 239
5. iki eksenin birbirine cevrilemedigi yer
kume yil s-saat acilan soru kazanilan dk birim basina s-saat
yalniz kayit 136 5 22 27.2 / soru
hazirlik + surec 103 0 55 1.9 / dakika
dort kume ve soru taramasi 500 ms bandinda: evet
Sayılar ölçüm sınıfındadır; girdileri yukarıdaki varsayımlardır.
On Birinin Yanıtı Var
Birinci tablo kaynakları sayar. Altı kaynak vardır ve kalıcıdır: süreç oluşturma kaydı, kimlik doğrulama günlüğü, ağ akış verisi, uygulama denetim kaydı, tespit hattı kaydı ve müdahale kütüğü. Son sütun her kaynağın kaç soruyu engellediğini verir. Dosya bütünlüğü izleme üç soruda gerekli ve üçünü de engeller, çünkü hiç yoktur. Bellek dökümü iki soruda gerekli ve ikisini de engeller, çünkü kalıcı değildir. Uygulama denetim kaydı üç soruda gerekli ve yalnız birini engeller — o soru dokuz gün öncesine bakar, saklama ise yedi gündür.
İkinci tablo yanıtsız beş soruyu nedeniyle yazar ve neden üç ayrı türdedir. Kaynak yok: kalıcılık noktalarının ne zaman kurulduğu ve hangi abone kayıtlarının okunduğu soruları, dosya bütünlüğü izleme ile veri erişim kaydı hiç açılmadığı için yanıtsızdır. Saklama yetmedi: fatura arşivini hangi hesabın okuduğu, uygulama kaydının yedi günlük penceresi dışında kaldığı için yanıtsızdır — kaynak vardı, kayıt vardı, ama silinmişti. Sınırlamada silindi: yapılandırma kancalarının ve kaçırılan noktaların ne zaman kurulduğu soruları, bellek dökümü alınmadan varlıklar ağdan alındığı için yanıtsızdır.
Bu üçüncü neden bu konunun içinden çıkar. Üçüncü derste kısa vadeli sınırlama erişimi 393. dakikada durdurdu ve beş kalem kazandırdı; dördüncü derste aynı karar bellek incelemesini yedi varlıkta imkânsız kıldı ve üç yapılandırma kancasını kaçırttı. Burada aynı kararın üçüncü karşılığı görünür: iki inceleme sorusu bir daha yanıtlanamaz. Sınırlama kararının bedeli üç ayrı derste, üç ayrı birimde ödenir.
Beşi Kayda Dayanıyor
Üçüncü tablo on iki iyileştirme kalemini listeler. Beşi doğrudan bir eksik kayda dayanır: dosya bütünlüğü izlemeyi açmak, veri erişim kaydını açmak, uygulama saklamasını otuz güne çıkarmak, sınırlamadan önce bellek almak ve süreç kaydı iletmeyen altı toplayıcıya kayıt eklemek. Beşi hazırlık kalemlerini tazeler, ikisi bir süreç adımını bağlar. On iki kalemin beşi bir kayıt eksikliğinin doğrudan sonucudur.
Dördüncü tablo kümeleri uygular. Yalnız kayıt iyileştirmeleri beş kalem ve yılda 136 kişi-saat tutar; yanıtlı soru 11’den 16’ya çıkar ve zincir 182’den 160 dakikaya iner — tek dakika kazancı süreç kaydı eklemekten gelir. Hazırlık ve süreç iyileştirmeleri yedi kalem ve 103 kişi-saat tutar; zincir 127 dakikaya, sınırlama 313. dakikaya iner ve erişilen kalem dokuzdan sekize düşer, ama yanıtlı soru sayısı 11’de kalır. Hepsi birlikte 239 kişi-saat, 105 dakikalık zincir ve 16/16 yanıt verir.
İki Eksen
Beşinci tablo iki kümenin birbirine çevrilemediğini gösterir. Kayıt iyileştirmeleri soru başına 27,2 kişi-saat tutar ve zincirden yalnız 22 dakika düşürür. Hazırlık ve süreç iyileştirmeleri dakika başına 1,9 kişi-saat tutar ve hiçbir soru açmaz. Aynı bütçe iki farklı şey satın alır: biri bir sonraki olayı daha hızlı durdurmayı, öteki bu olayı daha iyi anlatmayı.
İkisi arasında bir sıra kurmak bu modelin işi değildir, ama bir gözlem yapılabilir. Kayıt iyileştirmelerinden biri — sınırlamadan önce bellek alma — on sekiz kişi-saatle iki soruyu açar ve zincire hiçbir dakika eklemez; buna karşılık sınırlamayı geciktirir ve o gecikmenin bedeli üçüncü derste ölçüldü. Bir iyileştirme kalemi, açtığı sorunun ötesinde başka bir eksende bir bedel taşıyorsa, o bedel de listeye yazılmadıkça kalem eksik ölçülmüştür.
Özet
- On altı inceleme sorusundan on biri dokuz kayıt kaynağıyla yanıtlanır; beşi yanıtsız kalır.
- Yanıtsızlığın üç nedeni ayrı ayrı sayılır: iki soruda kaynak hiç yoktur, bir soruda saklama süresi yetmemiştir, iki soruda kaynak sınırlamada silinmiştir.
- Sınırlama kararının bedeli üçüncü derste beş kalem, dördüncü derste üç kaçırılan tutunma noktası, burada iki yanıtsız sorudur.
- On iki iyileştirme kaleminin beşi doğrudan bir eksik kayda dayanır; beşi hazırlık kalemini tazeler, ikisi bir süreç adımını bağlar.
- Yalnız kayıt iyileştirmeleri 136 kişi-saatle yanıtlı soruyu 16/16’ya çıkarır ve zincirden 22 dakika düşürür; hazırlık ve süreç iyileştirmeleri 103 kişi-saatle 55 dakika kazandırır ve hiçbir soru açmaz.
Sonraki Adım
İnceleme yanıtlarını çıkardı, iyileştirme kalemlerini yazdı ve bedellerini saydı. Bütün bunlar kurumun içinde kaldı. Olayın dışarıya bakan bir yüzü daha vardır: kimin haberdar edilmesi gerektiği, hangi eşikte, hangi sürede. Sonraki ders bunu süre ve paydaş sayısı olarak ölçer — kaç paydaş var, hangi eşikte bildirim başlıyor, kapsam kesinleşmeden yapılan bildirim kaç düzeltme üretiyor ve gecikmenin bedeli kaç saattir.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.