İçeriğe geç
academia.sh

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, 16 saattir 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 4711 görünürdür ve koşumdan koşuma aynı diziyi verir. Unutma oranı 0,25, doğrulama hata oranı 0,30 alı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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat