İçeriğe geç
academia.sh

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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat