İçeriğe geç
academia.sh

Ders 06 / 15

Yönetilen Konteyner Servisleri

Aynı iş yükü üç çalıştırma düzeyinde — kendi kümen, yönetilen küme ve görev tabanlı çalıştırma — on beş karar kalemi üzerinden sayılır ve her devirde kaç kararın elde kaldığı, kaçının devredildiği ve yıllık bakım yükünün ne olduğu çıkarılır; her düzeyin geri alınamayan kalemleri adıyla yazılır ve çıkışta taşınamayan yapılandırma ile devrin geri ödeme süresi ölçülür.

İçindekiler

Önceki ders örnek sayısını bir gruba devretti ve karşılığında altı ayar kalemi bıraktı. Devir gerçekti ama kısmiydi: makine hâlâ ortadaydı — ailesi seçiliyor, imajı pişiriliyor, açılışı ölçülüyordu. Devir bir adım daha ileri gidebilir ve makineyi tümüyle görüş alanının dışına çıkarabilir.

Bu ders aynı iş yükünü üç düzeyde karşılaştırır: kendi kümen (orkestrasyonu kendi örneklerinde işletmek), yönetilen küme servisi (kontrol düzlemi devredilmiş, düğümler hâlâ senin) ve görev tabanlı çalıştırma (düğüm diye bir kalem yok). M22/K02 konteyner ve imaj katmanını, M22/K03 orkestrasyon mekaniğini ölçtü; o mekanik burada tekrarlanmaz. Buradaki tek ölçü devredilen karardır: her düzeyde kaç kalem elde kalıyor, kaçı devrediliyor, ve devredilenlerin hangisi bir daha geri alınamıyor.

BH31. On beş karar kalemi bölgesel ölçüm ağının — su sayaçlarından okuma toplayan kurgu yazılımın — konteyner katmanındandır; kalemler ve yıllık bakım saatleri kurgudur. BH32. Üç düzey yukarıdaki gibidir ve aynı iş yükünü çalıştırır. BH33. “yok” bir kalemin o düzeyde hiç bulunmadığını gösterir; “paylasik” kararın bir bölümünün elde kaldığını. BH34. Taşıma kuralı kurgudur: tanım sende ise taşınır (2 sa), sağlayıcının biçimindeyse yeniden yazılır (10 sa), tümüyle devredilmişse yeniden kurulur (24 sa), o düzeyde hiç yoksa karar sıfırdan verilir (16 sa). BH35. Geri alınamayan kalemler düzey başına üçtür ve kurgudur. BH36. Bakım saatleri yıllık ve kurgudur; bir kalem yalnız elde ya da paylaşıkken bakım yükü doğurur.

Aynı İş Yükü, Üç Çalıştırma Düzeyi

Devir bir hepsi-ya-hiç kararı değildir; kalem kalem verilir. Aşağıdaki envanter on beş kalemi üç düzeyde tek tek yerleştirir.

// olcum-agi/devir-envanteri.mjs — ayni is yukunun uc calistirma duzeyindeki karar dagilimi (model)

export const DUZEY = ["kendi kumen", "yonetilen kume", "gorev tabanli"];

// [kalem, [duzey1, duzey2, duzey3], yillik bakim saati (kalem sende ya da paylasikken)]
export const KALEM = [
  ["dugum boyutu ve ailesi", ["sende", "sende", "yok"], 12],
  ["dugum sayisi", ["sende", "sende", "yok"], 8],
  ["kume surumu", ["sende", "paylasik", "yok"], 20],
  ["dugum isletim sistemi yamasi", ["sende", "paylasik", "saglayicida"], 40],
  ["kontrol duzlemi isletimi", ["sende", "saglayicida", "saglayicida"], 60],
  ["kontrol duzlemi yedekligi", ["sende", "saglayicida", "saglayicida"], 24],
  ["ag eklentisi secimi", ["sende", "sende", "saglayicida"], 16],
  ["depolama eklentisi secimi", ["sende", "sende", "saglayicida"], 12],
  ["gorev zamanlayici ayari", ["sende", "sende", "paylasik"], 18],
  ["gorev olceklemesi", ["sende", "sende", "sende"], 14],
  ["kaynak istegi ve siniri", ["sende", "sende", "sende"], 10],
  ["imaj deposu ve cekme kimligi", ["sende", "sende", "sende"], 8],
  ["gunluk ve olcum toplama", ["sende", "sende", "paylasik"], 22],
  ["ic ag adres plani", ["sende", "sende", "saglayicida"], 14],
  ["dugum uzerinde ortak surec", ["sende", "sende", "yok"], 10],
];

export const say = (d, tur) => KALEM.filter((k) => k[1][d] === tur).length;
export const bakim = (d) =>
  KALEM.filter((k) => k[1][d] !== "saglayicida" && k[1][d] !== "yok").reduce((t, k) => t + k[2], 0);

if (import.meta.url === `file://${process.argv[1]}`) {
  console.log("karar kalemi".padEnd(32) + DUZEY.map((d) => d.padEnd(17)).join("") + "yillik bakim");
  for (const [ad, yer, sa] of KALEM)
    console.log(ad.padEnd(32) + yer.map((y) => y.padEnd(17)).join("") + `${sa} sa`);
  console.log("");
  console.log("duzey".padEnd(17) + "elde".padEnd(8) + "paylasik".padEnd(11) +
    "saglayicida".padEnd(14) + "kalem yok".padEnd(12) + "yillik bakim");
  DUZEY.forEach((d, i) =>
    console.log(d.padEnd(17) + String(say(i, "sende")).padEnd(8) + String(say(i, "paylasik")).padEnd(11) +
      String(say(i, "saglayicida")).padEnd(14) + String(say(i, "yok")).padEnd(12) + `${bakim(i)} sa`));
}
karar kalemi                    kendi kumen      yonetilen kume   gorev tabanli    yillik bakim
dugum boyutu ve ailesi          sende            sende            yok              12 sa
dugum sayisi                    sende            sende            yok              8 sa
kume surumu                     sende            paylasik         yok              20 sa
dugum isletim sistemi yamasi    sende            paylasik         saglayicida      40 sa
kontrol duzlemi isletimi        sende            saglayicida      saglayicida      60 sa
kontrol duzlemi yedekligi       sende            saglayicida      saglayicida      24 sa
ag eklentisi secimi             sende            sende            saglayicida      16 sa
depolama eklentisi secimi       sende            sende            saglayicida      12 sa
gorev zamanlayici ayari         sende            sende            paylasik         18 sa
gorev olceklemesi               sende            sende            sende            14 sa
kaynak istegi ve siniri         sende            sende            sende            10 sa
imaj deposu ve cekme kimligi    sende            sende            sende            8 sa
gunluk ve olcum toplama         sende            sende            paylasik         22 sa
ic ag adres plani               sende            sende            saglayicida      14 sa
dugum uzerinde ortak surec      sende            sende            yok              10 sa

duzey            elde    paylasik   saglayicida   kalem yok   yillik bakim
kendi kumen      15      0          0             0           288 sa
yonetilen kume   11      2          2             0           204 sa
gorev tabanli    3       2          6             4           72 sa

Birinci devir sanıldığından küçüktür. Yönetilen kümeye geçince on beş kalemin yalnız ikisi tam devredilir: kontrol düzleminin işletilmesi ve yedekliliği. İki kalem daha paylaşığa iner — küme sürümü ve düğüm yaması artık sağlayıcıyla birlikte verilir. Geri kalan on bir kalem yerinde kalır; düğüm boyutu, ağ eklentisi, adres planı ve düğümde koşan ortak süreçler hâlâ seçilir. Yıllık bakım 288 saatten 204 saate iner — yüzde 29.

“Paylaşık” sütunu bu tablonun en kolay yanlış okunan kısmıdır. Küme sürümü paylaşık olduğunda yükseltmeyi sağlayıcı yapar ama ne zaman yapılacağını o söyler: bir sürüm desteği bittiğinde yükseltme bir seçenek olmaktan çıkar. Düğüm yaması da aynıdır — yama gelir, ama düğümün yeniden başlatılması iş yükünü keser ve o kesintiyi karşılayan taraf sensin. Paylaşık kalem, bakım yükünün yarısını devreder, zamanlama kararının tamamını devreder.

İkinci devir gerçekten büyüktür ama biçimi farklıdır. Görev tabanlı çalıştırmada altı kalem sağlayıcıya geçer ve dört kalem tümüyle ortadan kalkar: düğüm boyutu, düğüm sayısı, küme sürümü ve düğümde koşan ortak süreç diye bir soru artık yoktur. Bu, devirlerin en güçlü biçimidir — karar başka birine verilmez, karar var olmaz. Elde kalan üç kalem görev ölçeklemesi, kaynak isteği ve imaj kimliğidir; yıllık bakım 72 saate iner.

Ama son satır dikkatle okunmalıdır. Bu dersin ilk beş dersinde sayılan kalemlerin çoğu — örnek ailesi, boyutlandırma, imaj tazeliği, açılış süresi, sağlık eşiği — görev tabanlı düzeyde kaybolmaz; görünmez olur. Görev hâlâ bir makinede koşar, imaj hâlâ çekilir, açılış hâlâ sürer. Devredilen şey kararlardır; fizik değil.

Her Devirde Açılan ve Kapanan

Devir iki sayıyı aynı anda değiştirir: elde kalan kalem azalır, ama azalan kalemlerin bir bölümü kurulduktan sonra değiştirilemeyen kalemlere dönüşür. İkinci sayı devir oranıyla birlikte düşmez.

// olcum-agi/devir-yuzeyi.mjs — her devirde acik yuzey ve geri alinamayan kalem (model)
import { DUZEY, KALEM, say, bakim } from "./devir-envanteri.mjs";

// Duzey basina, o duzeyde kurulduktan sonra degistirilemeyen kalemler (kurgu).
const GERI_YOK = [
  ["kumenin ic adres alani", "kume surumu yukseltmesi (tek yon)", "dugum havuzunun mimarisi"],
  ["kume yaratilirken verilen ag eklentisi", "kume surumu yukseltmesi (tek yon)",
    "kumenin ic adres alani"],
  ["yayimlanmis gorev tanimi surumu", "goreve verilen ag kipi",
    "calistirma kimliginin baglandigi kaynak"],
];

if (import.meta.url === `file://${process.argv[1]}`) {
  console.log("duzey".padEnd(17) + "acik yuzey".padEnd(13) + "devredilen".padEnd(13) +
    "devir orani".padEnd(14) + "yillik bakim".padEnd(15) + "geri alinamayan kalem");
  DUZEY.forEach((d, i) => {
    const acik = say(i, "sende") + say(i, "paylasik");
    const dev = say(i, "saglayicida") + say(i, "yok");
    console.log(d.padEnd(17) + `${acik}/${KALEM.length}`.padEnd(13) +
      `${dev}/${KALEM.length}`.padEnd(13) + `%${Math.round((100 * dev) / KALEM.length)}`.padEnd(14) +
      `${bakim(i)} sa`.padEnd(15) + GERI_YOK[i].length);
  });
  console.log("");
  DUZEY.forEach((d, i) => console.log(`${d}: ` + GERI_YOK[i].join("; ")));
  const b0 = bakim(0), b2 = bakim(2);
  console.log(`\ndevir kazanci: yillik bakim ${b0} saatten ${b2} saate iniyor ` +
    `(${b0 - b2} saat, %${Math.round((100 * (b0 - b2)) / b0)})`);
  console.log(`devir bedeli: elde kalan karar ${say(0, "sende")} kalemden ${say(2, "sende")} kaleme ` +
    `iniyor, ama geri alinamayan kalem sayisi ucte de ${GERI_YOK[0].length}`);
}
duzey            acik yuzey   devredilen   devir orani   yillik bakim   geri alinamayan kalem
kendi kumen      15/15        0/15         %0            288 sa         3
yonetilen kume   13/15        2/15         %13           204 sa         3
gorev tabanli    5/15         10/15        %67           72 sa          3

kendi kumen: kumenin ic adres alani; kume surumu yukseltmesi (tek yon); dugum havuzunun mimarisi
yonetilen kume: kume yaratilirken verilen ag eklentisi; kume surumu yukseltmesi (tek yon); kumenin ic adres alani
gorev tabanli: yayimlanmis gorev tanimi surumu; goreve verilen ag kipi; calistirma kimliginin baglandigi kaynak

devir kazanci: yillik bakim 288 saatten 72 saate iniyor (216 saat, %75)
devir bedeli: elde kalan karar 15 kalemden 3 kaleme iniyor, ama geri alinamayan kalem sayisi ucte de 3

Son sütun bu kursun baştan beri saydığı şeyin özetidir: açık yüzey 15’ten 5’e inerken geri alınamayan kalem sayısı üçte kalır. Devir oranı yüzde 67’ye çıkar, bakım yükü yüzde 75 düşer, ama kurulduktan sonra değiştirilemeyen kalem sayısı hiç değişmez. Yalnız kalemlerin adı değişir.

Üç düzeyin geri alınamayan kalemleri karşılaştırılınca bir örüntü çıkar. Kendi kümende ve yönetilen kümede sabit kalan şey adres alanıdır; küme kurulurken verilir ve kümenin ömrü boyunca durur. Görev tabanlı düzeyde adres alanı sorusu ortadan kalkar, ama yerine üç yeni sabit gelir: yayımlanmış görev tanımının sürümü değişmez, göreve verilen ağ kipi görev yaratılırken verilir, çalıştırma kimliğinin bağlandığı kaynak sonradan değiştirilemez. Bunlar kursun ilk dersindeki alt ağ ve mimari kalemlerinin aynı biçimde, başka adla dönmüş halidir.

Bakım saatlerinin nereye gittiği de aynı tabloda okunur. Yüzde 75’lik düşüşün en büyük parçası tek bir kalemden gelir: kontrol düzleminin işletilmesi ve yedekliliği, yılda 84 saatle envanterin en pahalı iki kalemidir ve ilk devirde tümüyle gider. İkinci devirde giden 132 saatin çoğu ise düğüm bakımıdır — yama, ağ ve depolama eklentisi, adres planı. Devrin kazancı kalem sayısıyla değil, hangi kalemlerin gittiğiyle orantılıdır.

Küme sürümü yükseltmesi iki düzeyde birden geri alınamaz kalemdir ve nedeni tektir: yükseltme tek yönlüdür. Sürüm yükseltildikten sonra eski sürüme dönmek bir geri alma değil, yeni bir küme kurmaktır — ve o kümeye taşınmak, bu dersin son bölümünün ölçtüğü işi gerektirir.

Çıkışta Ne Taşınıyor

Devir kararı, o düzeyde kalındığı sürece bir kazançtır. Kazancın karşı tarafı ancak çıkarken görünür: yapılandırmanın ne kadarı taşınabilir bir tanım, ne kadarı sağlayıcının biçimine yazılmış bir kayıttır.

// olcum-agi/cikis-bedeli.mjs — her devirde cikista tasinamayan yapilandirma (model)
import { DUZEY, KALEM, say, bakim } from "./devir-envanteri.mjs";

// Tasima kurali (kurgu saat): tanim sende ise tasinir; saglayicinin bicimindeyse yeniden yazilir;
// tumuyle devredilmisse yeni yerde yeniden kurulur; o duzeyde hic yoksa karar sifirdan verilir.
const TASIMA = { sende: ["tasinir", 2], paylasik: ["yeniden yazilir", 10],
  saglayicida: ["yeniden kurulur", 24], yok: ["yeniden dogar", 16] };

if (import.meta.url === `file://${process.argv[1]}`) {
  const tur = Object.keys(TASIMA);
  console.log("duzey".padEnd(17) + tur.map((t) => `${TASIMA[t][0]}`.padEnd(18)).join("") +
    "cikis saati".padEnd(14) + "tasinamayan");
  const saat = DUZEY.map((d, i) => {
    const n = tur.map((t) => say(i, t));
    const s = n.reduce((a, v, j) => a + v * TASIMA[tur[j]][1], 0);
    console.log(d.padEnd(17) + n.map((v) => String(v).padEnd(18)).join("") +
      `${s} sa`.padEnd(14) + `${n[2] + n[3]}/${KALEM.length}`);
    return s;
  });
  const kazanc = bakim(0) - bakim(2), fark = saat[2] - saat[0];
  console.log(`\nyillik bakim kazanci ${kazanc} sa; cikis bedeli farki ${fark} sa`);
  console.log(`devrin geri odemesi ${(fark / kazanc).toFixed(2)} yil: gorev tabanli calistirmanin ` +
    `bir yilda kazandirdigi sure, cikista neredeyse tamamen geri odeniyor`);
  console.log(`gorev tabanlida karar ${say(0, "sende")} kalemden ${say(2, "sende")} kaleme indi, ` +
    `ama cikista ${say(2, "yok")} kalem sifirdan yeniden verilecek`);
}
duzey            tasinir           yeniden yazilir   yeniden kurulur   yeniden dogar     cikis saati   tasinamayan
kendi kumen      15                0                 0                 0                 30 sa         0/15
yonetilen kume   11                2                 2                 0                 90 sa         2/15
gorev tabanli    3                 2                 6                 4                 234 sa        10/15

yillik bakim kazanci 216 sa; cikis bedeli farki 204 sa
devrin geri odemesi 0.94 yil: gorev tabanli calistirmanin bir yilda kazandirdigi sure, cikista neredeyse tamamen geri odeniyor
gorev tabanlida karar 15 kalemden 3 kaleme indi, ama cikista 4 kalem sifirdan yeniden verilecek

Son sütun devir kararının fiyat etiketidir: görev tabanlı çalıştırmada on beş kalemin onu taşınmaz. Altısı yeni yerde yeniden kurulur, dördü ise sıfırdan yeniden karara bağlanır — düğüm boyutu, düğüm sayısı, küme sürümü ve düğümde koşan ortak süreç soruları çıkışta geri gelir. Devretmek kararı yok etmedi; erteledi.

İki sayı yan yana konunca kararın ölçüsü çıkar. Görev tabanlı çalıştırma yılda 216 saat bakım kazandırır; aynı düzeyden çıkmak, kendi kümenden çıkmaktan 204 saat daha pahalıdır. Geri ödeme 0,94 yıldır: bir yıldan kısa kalınacaksa devir zaman kazandırmaz, bir yıldan uzun kalınacaksa her ek yıl net kazançtır. Bu, “hangi düzey daha iyi” sorusunun sayıyla verilebilecek tek cevabıdır ve cevap düzeyin kendisine değil, kalış süresine bağlıdır.

İlk sütun da kendi başına bir sonuçtur. Üç düzeyin hepsinde taşınabilir kalan üç kalem vardır: görev ölçeklemesi, kaynak isteği ve sınırı, imaj deposu kimliği. Bunlar hiçbir düzeyde devredilmediği için hiçbir çıkışta yeniden yazılmaz. Devredilemeyen bu üç kalem, iş yükünün kendisine ait olan kararlardır — kaç kopya koşacağı, her kopyanın ne kadar kaynak isteyeceği ve hangi imajı çalıştıracağı. Devir ne kadar ilerlerse ilerlesin bu üçü kalır; kiralanan katmanın üstünde kalan asıl karar kümesi budur.

Bir uyarı da tabloda görünmeyen yerdedir. Çıkış saatleri yalnız yapılandırmanın yeniden yazılmasını sayar; taşıma sırasındaki kesinti, çift koşum dönemi ve veri taşıma bu tabloda yoktur. Gerçek çıkış bu satırlardan uzun sürer, kısa değil.

Özet

  • Yönetilen kümeye geçmek sanılandan az devreder: on beş kalemin ikisi tam, ikisi paylaşık olarak devredilir; on bir kalem yerinde kalır ve yıllık bakım 288’den 204 saate iner.
  • Görev tabanlı çalıştırmada devir oranı yüzde 67’ye çıkar ve dört kalem tümüyle ortadan kalkar — karar başkasına verilmez, var olmaz; bakım 72 saate iner.
  • Açık yüzey 15’ten 5’e inerken geri alınamayan kalem sayısı üç düzeyde de üçtür; devir kalemlerin adını değiştirir, geri alınamazlığı kaldırmaz.
  • Küme sürümü yükseltmesi iki düzeyde geri alınamaz kalemdir: eski sürüme dönmek geri alma değil, yeni bir küme kurup taşınmaktır.
  • Çıkışta görev tabanlı düzeyde on beş kalemin onu taşınmaz; altısı yeniden kurulur, dördü sıfırdan karara bağlanır — devretmek kararı yok etmez, erteler.
  • Devrin geri ödemesi 0,94 yıldır: yılda 216 saat bakım kazandırır, çıkışı 204 saat pahalılaştırır; kararı düzeyin kendisi değil, kalış süresi belirler.

Sonraki Adım

Bu konu makineyi baştan sona kiraladı. Ailesi ve boyutu seçildi ve atıl kaynak sayıldı; imajı pişirildi ve açılış süresiyle tazelik arasındaki denge tarandı; kalıcı ile kesintili kapasite iş türüne göre ayrıldı; tanım bir şablona toplandı; sayı bir gruba devredildi; ve son olarak kararların üçte ikisi bir servise verildi. Her derste iki sayı hep birlikte gitti — elde kalan karar ve geri alınamayan kalem.

Bütün bu örnekler, gruplar ve görevler bir varsayımın üzerinde durdu: birbirlerini buluyorlar. Toplayıcı dizine yazıyor, dizin api ucundan okunuyor, ölçekleme grubuna trafik geliyor. Bu konuda tek bir adres, tek bir kural, tek bir sınır yazılmadı — makineler sanki aynı odadaymış gibi konuşturuldu. Sıradaki konu o odayı kurar ve ilk sorusu şudur: bu örnekler hangi adres alanında duruyor, o alan kurulduktan sonra değişiyor mu, ve dışarıya açılan ilk kapı hangi kararı geri alınamaz hale getiriyor?

İ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