Ders 16 / 22
İletişim ve Bildirim Yükümlülüğü
Bildirimin süre ve paydaş sayısı olarak ölçülmesi: on iki paydaşın beşinin dış olması, belirli bir sürede bildirim isteyen yükümlülük türünün 4.320 dakikalık penceresi, kapsam tahmininin 48.000'den 6.200'e inip hiç kesinleşmemesi, erken bildirimin 14.800 aboneyi fazladan bildirip 46 düzeltme üretmesine karşılık 29.967 bilgisiz abone-saatte kalması ve geç bildirimin beş dış paydaşta pencereyi 64.540 dakika aşıp 1.793.247 abone-saat üretmesi.
İçindekiler
Önceki ders on altı inceleme sorusundan beşinin yanıtsız kaldığını saydı; bunlardan biri “hangi abone kayıtları okundu” sorusuydu ve veri erişim kaydı hiç açılmadığı için yanıtsızdı. O eksik bu derste doğrudan bir karara dönüşür, çünkü bildirim tam olarak bu sayıyı ister: kaç aboneye ne söylenecek.
Bildirimin ölçü birimi süre ve paydaş sayısıdır. Kaç paydaş var, her biri hangi eşikte bilgilendiriliyor, bildirimi hazırlamak kaç dakika sürüyor ve gecikmenin bedeli ne. Dış paydaşların bir bölümü belirli bir sürede bildirim isteyen bir yükümlülük türüne tabidir; bu yükümlülüğün penceresi fark etme anından başlar ve sabittir. Ölçümün göstereceği şey şudur: pencere içinde kalmak ile doğru sayıyı bildirmek aynı anda sağlanamaz.
Paydaşlar, Eşikler ve Pencere
OM41: On iki paydaş vardır; beşi dış, yedisi iç. Her paydaşın bir bildirim eşiği vardır ve eşik, önceki derslerden gelen bir ana karşılık gelir: doğrulama 216, kapsam 370, sınırlama 393, kurtarma 1.363 ve inceleme 17.280. dakika. OM42: Her paydaş için bildirimin hazırlanması ve onaylanması belirli bir dakika sürer; bildirim anı eşik ile hazırlığın toplamıdır. OM43: Dış paydaşların tabi olduğu, belirli bir sürede bildirim isteyen yükümlülük türünün penceresi 4.320 dakikadır ve fark etme anından başlar; sınır 4.506. dakikadır. OM44: Etkilenen abone sayısı bir tahmindir ve zamanla daralır: 48.000, 21.000, 9.400, 7.100 ve 6.200. Veri erişim kaydı olmadığı için sayı hiç kesinleşmez; son değer de bir tahmindir. OM45: Bir paydaş bildirildikten sonra tahmin her değiştiğinde bir düzeltme bildirimi gerekir ve düzeltme, paydaşın hazırlık kişi-saatinin 0,35’i kadar ek yük getirir. OM46: Bilgisiz abone-saat, son tahmindeki abone sayısının fark etme ile abone bildirimi arasındaki süreyle çarpımıdır. OM47: Fazladan bildirilen abone, bildirim anındaki tahmin ile son tahmin arasındaki farktır.
// bildirim/model.mjs — iletisim ve bildirim modeli: gercek bir kurum, duzenleme ya da olay // yok. Paydaslar, esikler ve kapsam tahmini veri yapisidir; sureler kurgu verilerdir. export const FARK_ETME = 186; // uyarinin dustugu dakika export const PENCERE = 4320; // belirli bir surede bildirim isteyen // yukumluluk turunun penceresi (dakika) // esik: ad -> gerceklestigi dakika (onceki derslerden gelir) export const ESIK = { dogrulama: 216, kapsam: 370, sinirlama: 393, kurtarma: 1363, inceleme: 17280 }; // paydas: ad, ic/dis, esik, bildirim hazirlik dakikasi, hazirlik kisi-saati export const PAYDAS = [ ["vardiya sorumlusu", "ic", "dogrulama", 5, 0.3], ["bilgi guvenligi yoneticisi", "ic", "dogrulama", 8, 0.5], ["hizmet sahibi ekipler", "ic", "dogrulama", 12, 1.5], ["dis mudahale destegi", "dis", "dogrulama", 15, 1.0], ["yurutme", "ic", "kapsam", 35, 2.0], ["hukuk birimi", "ic", "kapsam", 25, 1.5], ["bildirim yukumlulugu muhatabi", "dis", "kapsam", 180, 8.0], ["is surekliligi ekibi", "ic", "sinirlama", 18, 1.0], ["kurumsal iletisim", "ic", "sinirlama", 40, 3.0], ["kurumsal musteriler", "dis", "sinirlama", 120, 6.0], ["etkilenen aboneler", "dis", "kurtarma", 260, 14.0], ["sigorta saglayicisi", "dis", "kurtarma", 95, 4.0], ]; // kapsam tahmini: [dakika, o an bildirilecek etkilenen abone sayisi] (veri). // Onceki derste veri erisim kaydi olmadigi icin sayi hicbir zaman kesinlesmez. export const TAHMIN = [[216, 48000], [370, 21000], [1363, 9400], [4506, 7100], [17280, 6200]]; export const tahmin = (dk) => [...TAHMIN].reverse().find(([t]) => t <= dk)?.[1] ?? TAHMIN[0][1]; export const duzeltme = (dk) => TAHMIN.filter(([t]) => t > dk).length; export const SON = TAHMIN[TAHMIN.length - 1][1]; // politika: paydasa bildirimin baslatildigi an export const POLITIKA = { "erken": () => ESIK.dogrulama, "esige gore": (p) => ESIK[p[2]], "pencere sonunda": (p) => p[1] === "dis" ? FARK_ETME + PENCERE - p[3] : ESIK[p[2]], "gec": () => ESIK.inceleme, }; export function olc(politikaAdi) { const f = POLITIKA[politikaAdi]; const satir = PAYDAS.map((p) => { const baslangic = f(p), an = baslangic + p[3]; const dis = p[1] === "dis"; return { ad: p[0], dis, an, gecikme: dis ? Math.max(0, an - (FARK_ETME + PENCERE)) : 0, duzeltme: duzeltme(an), bildirilen: tahmin(an), saat: p[4] }; }); const abone = satir.find((s) => s.ad === "etkilenen aboneler"); return { satir, disGec: satir.filter((s) => s.dis && s.gecikme > 0).length, fazla: Math.max(0, abone.bildirilen - SON), bildirilen: abone.bildirilen, aboneAn: abone.an, gecikme: satir.reduce((a, s) => a + s.gecikme, 0), duzeltme: satir.reduce((a, s) => a + s.duzeltme, 0), saat: satir.reduce((a, s) => a + s.saat * (1 + s.duzeltme * 0.35), 0), aboneSaat: Math.round(SON * (abone.an - FARK_ETME) / 60) }; }
Ölçüm dosyası önce paydaşları eşiğe göre sıralar, sonra dört bildirim politikasını aynı olayda koşturur.
// bildirim/olc.mjs — kac paydas var, hangi esikte bildirim basliyor, kapsam kesinlesmeden // yapilan bildirim kac duzeltme uretiyor ve gecikmenin bedeli kac abone-saat. import { FARK_ETME, PENCERE, ESIK, PAYDAS, TAHMIN, SON, POLITIKA, tahmin, duzeltme, olc } 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(); const SINIR = FARK_ETME + PENCERE; console.log(`${PAYDAS.length} paydas (${PAYDAS.filter((p) => p[1] === "dis").length} dis); ` + `fark etme ${FARK_ETME}. dakika, bildirim penceresi ${PENCERE} dk, siniri ${SINIR}. dakika`); console.log("\n1. paydaslar ve esige gore bildirim ani"); const A = [-30, 6, 12, 10, 14, 13, 12]; yaz(A, "paydas", "tur", "esik", "hazirlik", "bildirim ani", "pencere ici", "bildirilen"); for (const p of PAYDAS) { const an = ESIK[p[2]] + p[3]; yaz(A, p[0], p[1], p[2], p[3] + " dk", an, p[1] === "dis" ? (an <= SINIR ? "evet" : "hayir") : "-", p[0] === "etkilenen aboneler" ? tahmin(an) : "-"); } console.log("\n2. kapsam tahmini (veri erisim kaydi olmadigi icin kesinlesmez)"); const B = [-10, 10, 13, 17]; yaz(B, "dakika", "tahmin", "son sayiya", "kalan duzeltme"); for (const [dk, v] of TAHMIN) yaz(B, dk, v, (v / SON).toFixed(2) + "x", duzeltme(dk)); console.log("\n3. dort bildirim politikasi"); const C = [-18, 12, 12, 10, 9, 12, 11, 12]; yaz(C, "politika", "abone ani", "bildirilen", "fazla", "dis gec", "gecikme dk", "duzeltme", "kisi-saat"); const R = {}; for (const k of Object.keys(POLITIKA)) { const r = R[k] = olc(k); yaz(C, k, r.aboneAn, r.bildirilen, r.fazla, r.disGec, r.gecikme, r.duzeltme, r.saat.toFixed(1)); } console.log("\n4. kararin iki yonu"); const D = [-18, 21, 18, 21]; yaz(D, "politika", "bilgisiz abone-saat", "fazla bildirilen", "duzeltme bildirimi"); for (const [k, r] of Object.entries(R)) yaz(D, k, r.aboneSaat, r.fazla, r.duzeltme); const e = R["erken"], g = R["gec"]; console.log(` erken ile gec arasi: ${g.aboneSaat - e.aboneSaat} abone-saat farkina karsilik ` + `${e.fazla - g.fazla} fazla bildirilen abone ve ${e.duzeltme - g.duzeltme} duzeltme`); console.log("\n5. gec politikada pencereyi asan dis paydaslar"); for (const s of R["gec"].satir.filter((x) => x.dis && x.gecikme > 0)) yaz([-4, -30, 10, 12], "", s.ad, s.an, `+${s.gecikme} dk`); const ms = Number(process.hrtime.bigint() - t0) / 1e6; // ham olcum basilmaz, bant denetlenir console.log(`\ndort politika ve ${PAYDAS.length} paydas 500 ms bandinda: ${ms < 500 ? "evet" : "hayir"}`);
12 paydas (5 dis); fark etme 186. dakika, bildirim penceresi 4320 dk, siniri 4506. dakika
1. paydaslar ve esige gore bildirim ani
paydas tur esik hazirlik bildirim ani pencere ici bildirilen
vardiya sorumlusu ic dogrulama 5 dk 221 - -
bilgi guvenligi yoneticisi ic dogrulama 8 dk 224 - -
hizmet sahibi ekipler ic dogrulama 12 dk 228 - -
dis mudahale destegi dis dogrulama 15 dk 231 evet -
yurutme ic kapsam 35 dk 405 - -
hukuk birimi ic kapsam 25 dk 395 - -
bildirim yukumlulugu muhatabi dis kapsam 180 dk 550 evet -
is surekliligi ekibi ic sinirlama 18 dk 411 - -
kurumsal iletisim ic sinirlama 40 dk 433 - -
kurumsal musteriler dis sinirlama 120 dk 513 evet -
etkilenen aboneler dis kurtarma 260 dk 1623 evet 9400
sigorta saglayicisi dis kurtarma 95 dk 1458 evet -
2. kapsam tahmini (veri erisim kaydi olmadigi icin kesinlesmez)
dakika tahmin son sayiya kalan duzeltme
216 48000 7.74x 4
370 21000 3.39x 3
1363 9400 1.52x 2
4506 7100 1.15x 1
17280 6200 1.00x 0
3. dort bildirim politikasi
politika abone ani bildirilen fazla dis gec gecikme dk duzeltme kisi-saat
erken 476 21000 14800 0 0 46 95.0
esige gore 1623 9400 3200 0 0 38 82.6
pencere sonunda 4506 7100 900 0 0 29 65.4
gec 17540 6200 0 5 64540 0 42.8
4. kararin iki yonu
politika bilgisiz abone-saat fazla bildirilen duzeltme bildirimi
erken 29967 14800 46
esige gore 148490 3200 38
pencere sonunda 446400 900 29
gec 1793247 0 0
erken ile gec arasi: 1763280 abone-saat farkina karsilik 14800 fazla bildirilen abone ve 46 duzeltme
5. gec politikada pencereyi asan dis paydaslar
dis mudahale destegi 17295 +12789 dk
bildirim yukumlulugu muhatabi 17460 +12954 dk
kurumsal musteriler 17400 +12894 dk
etkilenen aboneler 17540 +13034 dk
sigorta saglayicisi 17375 +12869 dk
dort politika ve 12 paydas 500 ms bandinda: evet
Sayılar ölçüm sınıfındadır; girdileri yukarıdaki varsayımlardır.
On İki Paydaş
Birinci tablo paydaşları eşiğe göre bildirim anına çevirir. İç paydaşların yedisi 221 ile 433. dakikalar arasında bilgilendirilir; hazırlık süreleri 5 ile 40 dakika arasındadır. Dış paydaşlarda hazırlık belirgin biçimde uzar: bildirim yükümlülüğü muhatabı için 180, kurumsal müşteriler için 120, etkilenen aboneler için 260 dakika. Bu fark bir gecikme değil, bildirimin kendisinin iş olmasıdır — metin yazılır, hukuk birimi okur, kanal hazırlanır.
Eşiğe göre politikada beş dış paydaşın beşi de pencere içinde kalır; en geç bildirim 1.623. dakikada etkilenen abonelere gider ve sınır 4.506. dakikadır. Pencere bu olayda dar değildir. Dar olan başka bir şeydir.
Eşiklerin dağılımı da bir karardır. Üç iç paydaş doğrulama eşiğinde, yani uyarının gerçek olduğu anlaşıldığı anda bilgilendirilir; hukuk birimi ve yürütme kapsam eşiğini bekler. Bu sıra rastgele değildir: kapsam belirlenmeden yapılan bir yürütme bildirimi, kaç varlığın etkilendiğini söyleyemez ve karşılığında bir karar üretmez. Dış paydaşların hiçbiri doğrulama eşiğinden önce yer almaz; tek istisna dış müdahale desteğidir ve o da bir bildirim değil, bir çağrıdır.
Kesinleşmeyen Sayı
İkinci tablo kapsam tahminini zamanla verir. 216. dakikada tahmin 48.000’dir — son tahminin 7,74 katı. 370. dakikada 21.000’e, 1.363. dakikada 9.400’e, 4.506. dakikada 7.100’e iner ve 17.280. dakikada 6.200’de durur. Son sütun her andan sonra kaç düzeltmenin geleceğini yazar.
Bu tablonun anlamı önceki derste kurulmuştu: veri erişim kaydı hiç açılmadığı için “hangi abone kayıtları okundu” sorusu yanıtsızdır. Sayı bu yüzden bir ölçüm değil, daralan bir tahmindir; 6.200 de kesin değildir, yalnız daha fazla daralmayan değerdir. Bildirim, kesinleşmeyen bir sayı üzerinden yapılmak zorundadır ve bu, bildirim anının seçimini bir tahmin doğruluğu sorununa çevirir.
Dört Politika
Üçüncü tablo dört politikayı koşturur. Erken politikada bütün paydaşlar doğrulama anında bilgilendirilir; abone bildirimi 476. dakikada 21.000 sayısıyla gider, 14.800 abone fazladan bildirilir, 46 düzeltme gerekir ve toplam yük 95,0 kişi-saattir. Eşiğe göre politikada abone bildirimi 1.623. dakikaya kayar, bildirilen 9.400’e ve fazladan bildirilen 3.200’e iner, düzeltme 38’e düşer. Pencere sonunda politikası dış bildirimleri sınırın hemen öncesine yerleştirir: 4.506. dakika, 7.100 abone, 900 fazladan bildirilen, 29 düzeltme ve 65,4 kişi-saat.
Geç politika inceleme tamamlanana kadar bekler. Bildirilen sayı 6.200’dür, fazladan bildirilen sıfırdır ve hiç düzeltme gerekmez — kişi-saat 42,8 ile en düşüktür. Karşılığı beşinci tablodadır: beş dış paydaşın beşi de pencereyi aşar, toplam gecikme 64.540 dakikadır ve en büyük aşım etkilenen abonelerdedir, 13.034 dakika.
Kişi-saat sütunu tek başına yanıltıcıdır. Erken politikanın 95,0 kişi-saatinin büyük bölümü bildirimin kendisinden değil, onu izleyen 46 düzeltmeden gelir; her düzeltme paydaşın hazırlık yükünün üçte birini yeniden getirir. Politika geciktikçe düzeltme sayısı 46’dan 38’e, 29’a ve sıfıra iner. Bu sütunda en ucuz görünen politika, etkilenen abonelere bildirimi pencereden dokuz gün sonra yapan politikadır; maliyeti kişi-saatte değil, dakikada ödenir. Bir bildirim politikasını yalnız hazırlık yüküyle seçmek, geciken bildirimi ucuz göstermek demektir.
Kararın İki Yönü
Dördüncü tablo iki sütunu yan yana koyar. Erken politikada bilgisiz abone-saat 29.967’dir ve fazladan bildirilen abone 14.800. Geç politikada fazladan bildirilen sıfırdır ve bilgisiz abone-saat 1.793.247. İki uç arasındaki fark 1.763.280 abone-saate karşılık 14.800 fazladan bildirilen abone ve 46 düzeltmedir.
Aradaki iki politika bu eğrinin nasıl büküldüğünü gösterir. Eşiğe göre politika, erkene göre 118.523 abone-saat ekleyerek fazladan bildirileni 14.800’den 3.200’e indirir — abone başına yaklaşık on abone-saat. Pencere sonunda politikası 297.910 abone-saat daha ekleyerek 3.200’ü 900’e indirir; bu kez abone başına yüz otuz abone-saat. Doğruluk pahalılaşarak gelir. Pencere sonunda politikası yükümlülük penceresinin izin verdiği son ana yerleşir ve o noktadan sonra doğruluk ancak pencereyi aşarak artırılabilir; geç politikanın yaptığı da budur.
Fazladan bildirilen abone sayısı bir sayı olarak masumdur, ama karşılığı 14.800 kişiye kendi verilerinin görülmüş olabileceğinin söylenmesidir; sonradan gelen düzeltme bu ilk bildirimi geri almaz. Bilgisiz abone-saat de bir sayıdır ve karşılığı, gerçekten etkilenmiş 6.200 kişinin bunu bilmeden geçirdiği süredir. Model ikisini de sayar, ikisini birbirine çeviremez; kararı veren, hangi sütunun ağır bastığını kendi ölçüsüyle yazmak zorundadır.
Özet
- On iki paydaşın beşi dıştır; iç bildirimler 221–433. dakikalarda, dış bildirimler eşiğe göre 231–1.623. dakikalarda gider ve hazırlık süreleri 5 ile 260 dakika arasındadır.
- Belirli bir sürede bildirim isteyen yükümlülük türünün penceresi 4.320 dakikadır ve sınır 4.506. dakikadır; eşiğe göre politikada beş dış paydaşın beşi de pencere içinde kalır.
- Etkilenen abone tahmini 48.000’den 6.200’e daralır ama veri erişim kaydı olmadığı için hiç kesinleşmez; bildirim kesinleşmemiş bir sayı üzerinden yapılır.
- Erken politika 14.800 aboneyi fazladan bildirir ve 46 düzeltme üretir, bilgisiz abone-saat 29.967’dir; geç politika hiç fazladan bildirmez ama beş dış paydaşta pencereyi 64.540 dakika aşar ve 1.793.247 abone-saat üretir.
- Doğruluk pahalılaşarak gelir: fazladan bildirileni 14.800’den 3.200’e indirmek abone başına on abone-saat, 3.200’den 900’e indirmek yüz otuz abone-saat tutar.
Sonraki Adım
Olay kapatıldı: erişim durduruldu, tutunma noktaları temizlendi, hizmet geri getirildi ve paydaşlar bilgilendirildi. Yedi ders boyunca ölçülen her karar bir sayıya bağlandı. Bir tanesi bağlanamadı ve her derste yeniden karşımıza çıktı: ne olduğunu kanıtlayacak kalemlerin çoğu sınırlama anında zaten silinmişti. Bellek dökümü alınmadan varlıklar ağdan alındı, üç yapılandırma kancası bir daha bulunamadı, iki inceleme sorusu yanıtsız kaldı ve abone sayısı bir tahmin olarak kaldı. Sonraki konu bu kalemleri kendi başına ele alır: kanıtın bütünlüğü neyle gösterilir, hangi kalem uçucudur ve toplanmazsa kaybolur, toplama sırası yanlış olduğunda kaç kalem kaybedilir ve gözetim zinciri kaç kalemde kopar.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.