Ders 04 / 16
Sertifika Otomasyonu
Yenileme akışının bir durum makinesi olarak yazılması ve ömür ile eşiğin taranması: erken eşiğin ürettiği on iki gereksiz yenileme, geç eşiğin bıraktığı otuz sekiz saatlik açık pencere, doğrulama başarısızlığında beş deneme ile uyarının hangi anda verilmesi gerektiği, ve üç yıllık bir dönemde elle yenilemenin dokuz kalemde unutulup bin yedi yüz saat açık pencere bırakması.
İçindekiler
Önceki ders sertifikanın kaç yerde durduğunu saydı ve yenilemede dokunulan nokta sayısını o sayıya eşit aldı. Yenilemenin kendisi bir kutu olarak kaldı: bir gün olur, biter, sertifika tazelenir.
O kutunun içi bir durum makinesidir. Bir istek gönderilir, alan adının denetiminde olunduğu doğrulanır, imza alınır, yeni sertifika kopyalara dağıtılır. Dört adımın her biri sürer ve ikincisi başarısız olabilir. İki ayar bu makinenin dışındadır ve sonucu belirler: sertifikanın ömrü ve yenilemeye kaç saat kala başlanacağını söyleyen eşik.
Ölçüm kurgu bölgesel ölçüm ağının on iki sertifikası üzerinde, üç yıllık bir dönemde yapılır. Sağlayıcı yoktur; adımlar, süreleri ve sertifika listesi kurgudur.
- WS19. Adım süreleri saat cinsinden sabittir: istek 1, doğrulama 2, imza 1, dağıtım 2.
Doğrulama başarısız olursa geri çekilme dizisi
1, 2, 4, 8, 16saattir ve beşinci denemeden sonra otomasyon vazgeçer. - WS20. Otomasyon vazgeçtiğinde insan devralır ve işi sekiz saatte bitirir; elle yapılan her yenileme de sekiz saat sürer.
- WS21. Unutulan bir elle yenilemenin fark edilme süresi görünürlüğe bağlıdır: dışa bakan bir kalem iki saatte, iç bir kalem doksan altı saatte fark edilir.
- WS22. Unutma ve doğrulama hatası kendi üretecimizle üretilir; tohum
4711görünürdür ve koşumdan koşuma aynı diziyi verir. Unutma oranı0,25, doğrulama hata oranı0,30alınır. - WS23. Model süre ölçmez; bütün saat değerleri yukarıdaki sabitlerden aritmetikle türer.
- WS24. Açık pencere, yenileme akışının süresi eşiği aştığında geçen saat sayısıdır; sertifika o saatlerde süresi dolmuş olarak durur.
// yenileme/akis.mjs — model: sertifika yenileme akisi bir durum makinesidir. Sure birimi saat, // donem uc yil. Saglayici yoktur; adimlar ve sureleri kurgudur, butun sayilar bunlardan turer. const DONEM = 26280; // 3 yil, saat const ELLE = 8; // insanin devralip bitirmesi (saat) const GERI = [1, 2, 4, 8, 16]; // dogrulama hatasindan sonra bekleme (saat) const ADIM = { istek: 1, dogrulama: 2, imza: 1, dagitim: 2 }; // Durum makinesi: istek -> dogrulama -> (hata -> bekle -> dogrulama)* -> imza -> dagitim. // "kotu" kacinci denemede basarili olundugunu soyler; GERI.length ise hic basarilamaz. function kos(kotu) { let t = ADIM.istek; for (let d = 0; d < GERI.length; d += 1) { t += ADIM.dogrulama; if (d === kotu) return { sure: t + ADIM.imza + ADIM.dagitim, sonuc: "tamam" }; t += GERI[d]; } return { sure: t + ELLE, sonuc: "elle devralindi" }; } const SURE = [0, 4, GERI.length].map((k) => kos(k).sure); // 0 hata, 4 hata, vazgecis const pencere = (esik, sure) => Math.max(0, sure - esik); const yenilemeSayisi = (omur, esik) => Math.floor(DONEM / (omur - esik)); const zorunlu = (omur) => Math.ceil(DONEM / omur) - 1; const E = [12, 12, 16, 10, 12, 12, 19, 13]; const yaz = (h) => h.map((d, i) => String(d)[i ? "padStart" : "padEnd"](E[i])).join(""); console.log(yaz(["omur(saat)", "esik(saat)", "yenileme/donem", "gereksiz", "pencere(0)", "pencere(4)", "pencere(vazgecis)", "uyari"])); for (const omur of [2160, 8760]) for (const esik of [1080, 720, 336, 48, 12]) { const n = yenilemeSayisi(omur, esik); console.log(yaz([omur, esik, n, n - zorunlu(omur), ...SURE.map((s) => pencere(esik, s)), SURE[2] > esik ? "ilk hatada" : "vazgecisde"])); } // --- Elle yenileme ile otomatik yenileme, ayni donemde -------------------------- // Kurgu olcum aginin sertifikalari: [ad, omur(saat), gorunurluk]. Gorunurluk unutmanin // fark edilme suresini belirler: disa bakan uc saatte, ic kalem gunlerce sonra gorulur. const FARK = { dis: 2, ic: 96 }; const SERTIFIKA = [ ["kenar-vekil-dis", 2160, "dis"], ["ic-vekil-orta", 2160, "ic"], ["ic-vekil-uretim", 2160, "ic"], ["olcum-uygulamasi", 8760, "dis"], ["toplayici-istemcisi", 8760, "ic"], ["faturalama-istemcisi", 8760, "ic"], ["yonetim-dinleyicisi", 8760, "ic"], ["bildirim-gecidi", 2160, "ic"], ["yedek-hedefi", 8760, "ic"], ["is-emri-uygulamasi", 2160, "dis"], ["sayac-agi-gecidi", 17520, "ic"], ["pano", 2160, "dis"], ]; // Kendi uretecimiz; tohum gorunur, kosumdan kosuma ayni diziyi verir. const uretec = (tohum) => { let s = tohum >>> 0; return () => (s = (Math.imul(s, 1664525) + 1013904223) >>> 0) / 4294967296; }; const TOHUM = 4711, UNUTMA = 0.25, HATA = 0.30; function elle() { const r = uretec(TOHUM); let olay = 0, kacan = 0, saat = 0; const kalem = new Set(); const kirilim = { dis: [0, 0], ic: [0, 0] }; // [unutulan olay, acik saat] for (const [ad, omur, gor] of SERTIFIKA) for (let k = 0; k < Math.floor(DONEM / omur); k += 1) { olay += 1; if (r() < UNUTMA) { kacan += 1; saat += FARK[gor] + ELLE; kalem.add(ad); kirilim[gor][0] += 1; kirilim[gor][1] += FARK[gor] + ELLE; } } return { olay, kacan, saat, kalem: kalem.size, kirilim }; } function otomatik(esik) { const r = uretec(TOHUM); let olay = 0, kacan = 0, saat = 0; const kalem = new Set(); for (const [ad, omur] of SERTIFIKA) for (let k = 0; k < yenilemeSayisi(omur, esik); k += 1) { olay += 1; let d = 0; while (d < GERI.length && r() < HATA) d += 1; // kacinci denemede basarili const p = pencere(esik, kos(d).sure); if (d === GERI.length) kacan += 1; if (p > 0) { saat += p; kalem.add(ad); } } return { olay, kacan, saat, kalem: kalem.size }; } const Y = [24, 8, 22, 12, 16]; const yaz2 = (h) => h.map((d, i) => String(d)[i ? "padStart" : "padEnd"](Y[i])).join(""); console.log("\n" + yaz2(["yontem", "olay", "unutulan/vazgecilen", "acik saat", "etkilenen kalem"])); const E0 = elle(); for (const [ad, r] of [["elle (esik yok)", E0], ["otomatik (esik 168)", otomatik(168)], ["otomatik (esik 12)", otomatik(12)]]) console.log(yaz2([ad, r.olay, r.kacan, r.saat, r.kalem])); console.log(`\nelle unutulanin kirilimi: dis ${E0.kirilim.dis[0]} olay / ${E0.kirilim.dis[1]} saat` + ` ic ${E0.kirilim.ic[0]} olay / ${E0.kirilim.ic[1]} saat`);
omur(saat) esik(saat) yenileme/donem gereksiz pencere(0) pencere(4) pencere(vazgecis) uyari 2160 1080 24 12 0 0 0 vazgecisde 2160 720 18 6 0 0 0 vazgecisde 2160 336 14 2 0 0 0 vazgecisde 2160 48 12 0 0 0 2 ilk hatada 2160 12 12 0 0 17 38 ilk hatada 8760 1080 3 1 0 0 0 vazgecisde 8760 720 3 1 0 0 0 vazgecisde 8760 336 3 1 0 0 0 vazgecisde 8760 48 3 1 0 0 2 ilk hatada 8760 12 3 1 0 17 38 ilk hatada yontem olay unutulan/vazgecilen acik saat etkilenen kalem elle (esik yok) 88 29 1700 9 otomatik (esik 168) 94 0 0 0 otomatik (esik 12) 88 0 56 8 elle unutulanin kirilimi: dis 14 olay / 140 saat ic 15 olay / 1560 saat
Eşiğin İki Ucu
İlk tablonun iki ucu iki ayrı arıza türü üretiyor ve ikisi de arıza gibi görünmüyor.
Erken uç. Ömrü doksan gün olan bir sertifikada eşik kırk beş güne konduğunda yenileme sertifika henüz yarı yoldayken başlar. Dönem boyunca yirmi dört yenileme koşuyor; zorunlu sayı on iki. On iki yenileme gereksizdir: hiçbiri bir açık pencereyi kapatmıyor, her biri bir istek, bir doğrulama, bir imza ve bir dağıtım üretiyor. Eşik yirmi bir güne indiğinde altı, on dört güne indiğinde iki gereksiz yenileme kalıyor.
Gereksiz yenilemenin bedeli iki yerde ödenir. Birincisi doğrulama adımının kendisidir; her yenileme bir dış çağrı ve bir dış bağımlılıktır. İkincisi dağıtımdır: her yenileme sertifikanın bulunduğu her yere dokunur ve önceki dersin saydığı altı kopyalı düzende her dokunuş kısmi durum riski taşır. Yirmi dört yenileme, on iki gereksiz kısmi durum fırsatıdır.
Geç uç. Eşik kırk sekiz saate indiğinde sıfır gereksiz yenileme kalıyor. Ölçünün bu sütunu artık temiz; öteki sütunlar açılıyor. Doğrulama dört kez başarısız olduğunda akış yirmi dokuz saat sürüyor ve kırk sekiz saatlik eşiğe sığıyor — pencere sıfır. Otomasyon beş denemenin beşinde de başarısız olup insana devrettiğinde toplam elli saat sürüyor ve iki saatlik bir pencere açılıyor.
Eşik on iki saate indiğinde iki sütun birden açılıyor: dört hatada on yedi saat, vazgeçişte otuz sekiz saat açık pencere. Otuz sekiz saat, sertifikanın süresi dolmuş olarak durduğu ve her bağlanan istemcinin bir uyarı ya da bir ret aldığı süredir.
Ömrün Eşiği Nasıl Değersizleştirdiği
Tablonun ikinci yarısı aynı beş eşiği bir yıllık ömürde tekrarlıyor ve gereksiz sütunu artık
hareket etmiyor: beş eşiğin beşinde de bir. Ömür uzadıkça eşik, gereksiz yenileme sayısı
üzerindeki etkisini kaybediyor.
Nedeni oran: kırk beş günlük eşik doksan günlük bir ömrün yarısı, bir yıllık ömrün sekizde
biridir. Kısa ömürde eşik döngüyü ikiye böler, uzun ömürde ucundan kırpar. Bu, uzun ömrün
otomasyon için daha kolay olduğu anlamına gelmez — pencere sütunları iki yarıda birebir
aynıdır. Açık pencere ömre değil, yalnız eşiğe ve akışın süresine bağlıdır; bir yıllık bir
sertifikada on iki saatlik eşik, doksan günlükte olduğu gibi otuz sekiz saat açık pencere
bırakır.
İki yarı arasındaki gerçek fark yenileme sayısındadır: doksan günlük ömürde dönemde on iki ile yirmi dört arası yenileme koşuyor, bir yıllık ömürde üç. Yenileme ne kadar seyrekse akış o kadar az sınanır. Üç yılda üç kez koşan bir akışın bozulduğu, ancak dördüncü koşumda anlaşılır ve o koşum sertifikanın süresinin dolmasından on iki saat öncedir.
Uyarı Ne Zaman Gelmeli
Son sütun bir sayı değil, bir kural veriyor ve kuralı eşiğin kendisi belirliyor.
Otomasyonun en kötü durumdaki toplam süresi kırk iki saattir: beş doğrulama denemesi ve aralarındaki otuz bir saatlik geri çekilme. İnsanın devralıp bitirmesi sekiz saat sürer. İkisi toplam elli saattir.
Eşik elli saatten büyükse otomasyon sonuna kadar deneyebilir; vazgeçtiğinde bile insan için yeterli zaman kalır ve uyarı vazgeçiş anında verilebilir. İlk üç eşik değeri bu durumdadır. Eşik elli saatten küçükse durum tersine döner: otomasyonun sonuna kadar denemesini beklemek, insanın devralacağı anı sertifikanın süresinin dolmasından sonraya atar. Bu durumda uyarı ilk doğrulama hatasında verilmelidir.
Kural şu biçime iner: uyarı eşiği bir tercih değil, en kötü otomatik süre + insan süresi
toplamının eşikle karşılaştırılmasıdır. Kırk sekiz ve on iki saatlik eşiklerde otomasyonun
sessiz kalması bir arıza olur — otomasyon çalışıyor, deniyor, geri çekiliyor ve kimse haberdar
değil. Sessiz otomasyon, elle yenilemeden daha geç fark edilir.
Elle Yenilemenin Dönem Faturası
İkinci tablo aynı on iki sertifikayı üç yıl boyunca elle yenilenmiş sayıyor.
Dönemde seksen sekiz yenileme olayı var. Yirmi dokuzu unutuldu — dörtte biri. Unutmalar dokuz ayrı kaleme dağıldı: on iki sertifikanın dokuzunda en az bir kez süre doldu. Toplam açık pencere bin yedi yüz saat, yani üç yılda yetmiş günün üstünde.
Kırılım satırı asıl bulguyu veriyor. Dışa bakan kalemlerde on dört unutma oldu ve toplam yüz kırk saat açık pencere bıraktı. İç kalemlerde on beş unutma oldu ve bin beş yüz altmış saat bıraktı. Olay sayıları neredeyse eşit, saatler on bir katı farklı.
Fark tek bir yerden geliyor: fark edilme süresi. Dışa bakan bir sertifikanın süresi dolduğunda saha ekipleri iki saat içinde arar. İç bir sertifikanın süresi dolduğunda ne olur — toplayıcı doğrulayıcıya bağlanamaz, gecelik toplu iş bir uyarı yazar, bildirim geçidi e-posta gönderemez — ve bunların hiçbiri kimseyi aramaz. Doksan altı saat, arızanın bir insanın gözüne değmesi için geçen süredir.
Bu, “elle yenileme yeterli” savunmasının nerede kırıldığını gösterir. Savunma dışa bakan sertifikaya bakarak yapılır ve orada haklıdır: iki saatlik pencere kabul edilebilir. Aynı disiplin iç kalemlere uygulandığında pencere kırk sekiz kat uzar ve kimse ölçmediği için bu uzama hiçbir raporda görünmez.
Otomasyonun Kapattığı ve Getirdiği
Son iki satır otomasyonu aynı döneme uyguluyor.
Eşiği yüz altmış sekiz saat olan otomasyon doksan dört yenileme koşuyor — elleden altı fazla, çünkü eşik döngüyü kısaltıyor. Vazgeçilen yenileme yok, açık pencere sıfır, etkilenen kalem sıfır. Bin yedi yüz saatlik pencere sıfıra indi.
Eşiği on iki saat olan otomasyon aynı seksen sekiz olayı koşuyor ve elli altı saat açık pencere bırakıyor; sekiz kalem etkileniyor. Vazgeçilen yenileme yine yok — beş denemenin beşinin birden başarısız olması ender bir olaydır — ama iki ya da üç denemeye kalan yenilemeler on iki saatlik eşiğe sığmıyor. Otomasyonun kendisi doğru çalışıyor; eşik yanlış.
İki satır birlikte okunduğunda otomasyonun neyi kapattığı nettir: unutmayı kapattı, hatayı kapatmadı. Elle yenilemede bin yedi yüz saatin tamamı unutmadan geliyordu. Otomasyonda kalan elli altı saatin tamamı doğrulama hatasından geliyor ve o hata bir eşik ayarıyla soğurulabilir.
Kapatmanın getirdiği yeni yüzey de sayılabilir. Otomasyon bir bileşendir: bir kimlikle koşar, sertifikanın bulunduğu her yere yazma yetkisi vardır, dış bir doğrulama adımına bağımlıdır ve kendi yapılandırmasında bir eşik taşır. Dört kalem. Elle yenilemede bu dört kalem yoktu; onun yerine dokuz kalemde unutulan bir alışkanlık vardı. Otomasyon kalem sayısını değiştirmedi, kalemin türünü değiştirdi: hatırlanması gereken bir işi, izlenmesi gereken bir bileşene çevirdi.
Özet
- Eşik erken konduğunda dönemde yirmi dört yenileme koştu ve on ikisi gereksizdi; eşik on dört güne indiğinde gereksiz yenileme ikiye, kırk sekiz saate indiğinde sıfıra düştü.
- Eşik geç konduğunda pencere açıldı: on iki saatlik eşikte dört doğrulama hatası on yedi saat, otomasyonun vazgeçişi otuz sekiz saat açık pencere bıraktı.
- Uyarının anı eşikten türer: en kötü otomatik süre kırk iki saat ile insan süresi sekiz saatin toplamı eşikten büyükse uyarı ilk doğrulama hatasında verilmelidir, küçükse vazgeçiş anı yeter.
- Üç yıllık dönemde elle yenilemenin seksen sekiz olayının yirmi dokuzu unutuldu, on iki sertifikanın dokuzunda süre doldu ve toplam bin yedi yüz saat açık pencere kaldı.
- Unutmaların yarısı dışa bakan kalemlerdeydi ama açık saatin yalnız yüz kırkı oradan geldi; iç kalemlerin on beş unutması bin beş yüz altmış saat bıraktı — fark edilme süresi farkı.
- Eşiği yüz altmış sekiz saat olan otomasyon açık pencereyi sıfıra indirdi ve yerine dört yeni kalem getirdi: bir kimlik, bir yazma yetkisi, bir dış bağımlılık ve bir eşik ayarı.
Sonraki Adım
Bu ders ile önceki iki ders isteğin yolunu kurdu ve şifreledi: kim geldiği aktarıldı, şifre bir yerde sonlandı, sertifika kendi kendine tazeleniyor. Yolun tamamı artık her istek için baştan sona koşuyor — her istek için.
Ölçüm ağının panosu her açılışta aynı bölge haritasını, aynı sayaç listesini ve aynı gecelik özet dosyasını istiyor. Bu isteklerin çoğu aynı yanıtı üretiyor ve her biri kenar vekilden iç vekile, oradan uygulamaya ve veri katmanına kadar gidiyor. Yanıt bir yerde tutulabilir — ama “bir yer” iki ayrı yerdir: kenarda, istemciye yakın; kaynakta, uygulamaya yakın. İkisi birden konduğunda isabetin nasıl bölündüğü, bir içerik değiştiğinde eskisinin kenarda kaç saniye daha durduğu ve tazelik ayarının bu pencereyi nasıl değiştirdiği ayrı sayılardır. Sonraki ders iki katmanlı önbelleği bu üç sayıyla ölçer ve yanlış önbelleklemenin açtığı yüzeyi adıyla yazar.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.