İçeriğe geç
academia.sh

Ders 01 / 12

Bulut Hizmet Modelleri ve Sorumluluk

Paylaşılan sorumluluk sınırının denetim listesine çevrilmesi: 21 yanlış olabilir kalem üç hizmet modelinde sınıflandırılır, otomatik denetlenebilen kalem 15'ten 12 ve 7'ye inerken denetim listesi dışında kalan kalem 6'dan 9 ve 14'e çıkar, tohum ağırlığının %35'i %51 ve %66 olur, sahipsiz kalem 0'dan 2 ve 4'e yükselir ve hiçbir listenin okuyamadığı 28 birimlik kör nokta üç modelde de sabit kalır.

İçindekiler

Bir önceki kurs kanıt hattını sonuna kadar kurdu ve her adımında aynı sessiz varsayımı taşıdı: incelenecek makineye erişilebiliyor. Kiralanmış altyapıda o varsayım düşer. Donanım başkasınındır, konak işletim sistemi görünmez, örneğin durduğu fiziksel makine adlandırılamaz. Bu, kanıt sorusunu sonraya bırakır ve daha önce gelen bir soruyu öne çeker: yanlış nerede olabilir ve o yanlış kimin listesinde.

Bu kurs tek bir ölçü kullanır: yayılma yarıçapı (blast radius) — tek bir kalem yanlışsa oradan kaç kaleme ulaşıldığı. Yarıçabı ölçebilmek için önce yanlışın yerleşebileceği kalemlerin listesi gerekir. Paylaşılan sorumluluk o listeyi ikiye böler; bu ders bölünmeyi bir denetim listesine çevirir ve listenin dışında kalanı sayar. Sorumluluk matrisinin kendisi Bulut Bilişim müfredatının Bulut Temelleri kursunda ölçüldü ve burada yeniden türetilmez — girdi olarak alınır.

  • BG1. Aşağıdaki her şey kurgu bir bölgesel ölçüm ağına aittir: sayaç toplama, doğrulama, fatura üretimi ve abone portalı kiralanmış altyapıda koşar. Gerçek bir sağlayıcı, hizmet, bölge ya da kurum adı geçmez; ölçülen şey node ile yazılan bir modeldir.
  • BG2. Yanlış olabilir kalem, değeri yanlış ayarlandığında erişim açan bir yapılandırma kalemidir. Yirmi bir kalem sayılır; liste kapsayıcı değil, örnektir.
  • BG3. Her kalem üç hizmet modelinde ayrı ayrı ya müşteri ayarlar, ya sağlayıcı ayarlar, ya da hiç kimse ayarlamaz. Üçüncü durum sözleşmeden değil, iki tarafın da ötekinin yaptığını varsaymasından doğar.
  • BG4. Okunabilirlik ayrı bir özelliktir: kalemin yürürlükteki değeri ya yönetim düzleminden okunur ya da hiç okunmaz. Sağlayıcının ayarladığı kalem müşteri tarafından yalnız beyanla bilinir.
  • BG5. Tohum ağırlığı, kalem yanlışsa doğrudan açılan kalem sayısıdır. Kurgu bir sayıdır ve bu derste yalnız kalemleri ağırlıklandırmak için kullanılır; yürüyüşün kendisi sonraki derste koşturulur.
  • BG6. Denetim listesinin bir satırı ancak kalem hem sahipliyse hem okunabiliyorsa otomatik koşabilir. Diğer durumlarda satırın bedeli değişir.

Yanlış Olabilecek Kalemler

Model kalemleri üç sütunla yazıyor — hizmet modeli başına kimin ayarladığı — ve iki özellik daha taşıyor: okunabilirlik ve tohum ağırlığı. Bu üçünden dört sınıf türetiliyor.

// bulut/kalem.mjs — kiralanmis altyapida yanlis olabilecek kalemlerin MODELIDIR.
// Kurgu bolgesel olcum agi; gercek saglayici, hizmet, bolge ya da sozlesme adi yoktur.

export const MODEL = ['altyapi', 'platform', 'islev'];
// Sutunlar: kalemi kim ayarliyor (M musteri, S saglayici, B kimse) x uc hizmet modeli.
// oku: kalemin yururlukteki degeri musteri tarafindan nasil okunur.
//   arayuz = yonetim duzleminden okunur, hicbiri = ne arayuzden ne belgeden okunur.
// dokunma: kalem yanlissa dogrudan acilan kalem sayisi (tohum agirligi, kurgu).
export const KALEM = `
  fiziksel-erisim          S S S  arayuz    6
  hipervizor-yamasi        S S S  arayuz   14
  kiracilik-komsulugu      S S S  arayuz   11
  konak-cekirdek-yamasi    M S S  arayuz    9
  calisma-zamani-surumu    M M S  arayuz    5
  imaj-kaynagi             M M S  arayuz    7
  ornek-meta-veri-surumu   M B S  arayuz    8
  yonetim-ucu-acikligi     M B B  arayuz   10
  ag-erisim-kurali         M M B  arayuz    6
  ozel-uc-nokta-eslemesi   M M B  arayuz    4
  gunluk-akisi-hedefi      M M B  arayuz    3
  rol-guven-listesi        M M M  arayuz   12
  kimlik-rol-tanimi        M M M  arayuz    9
  depolama-izin-kumesi     M M M  arayuz    7
  depolama-genel-bayragi   M M M  arayuz    5
  anahtar-sahipligi        M M M  arayuz    8
  sir-deposu-erisimi       M M M  arayuz   13
  denetim-gunlugu-acik     M M M  arayuz    2
  sablon-varsayilani       M M M  hicbiri   9
  bagimlilik-surumu        M M M  hicbiri   4
  is-yuku-ici-sir          M M M  hicbiri  15`
  .trim().split('\n').map((s) => {
    const [ad, ...k] = s.trim().split(/\s+/);
    return { ad, oku: k[3], dokunma: Number(k[4]),
      taraf: Object.fromEntries(MODEL.map((m, i) => [m, k[i]])) };
  });

// Denetim listesi sinifi: kalem yanlis olursa bunu kim, neyle gorur.
export const sinif = (k, m) => k.taraf[m] === 'B' ? 'sahipsiz'
  : k.taraf[m] === 'S' ? 'beyan'
    : k.oku === 'arayuz' ? 'denetlenir' : 'kor';
export const SINIF = ['denetlenir', 'beyan', 'kor', 'sahipsiz'];
// Denetim satirinin bedeli: otomatik kosan kural, donemsel soru turu, ek duzenek, sahip atama.
export const BEDEL = { denetlenir: 'kural', beyan: 'soru turu', kor: 'ek duzenek',
  sahipsiz: 'once sahip' };
export const kume = (m, c) => KALEM.filter((k) => sinif(k, m) === c);
export const agirlik = (l) => l.reduce((a, k) => a + k.dokunma, 0);
export const TOPLAM = agirlik(KALEM);
// bulut/kosum1.mjs — kac kalem musteride, kaci beyanda, kaci sahipsiz; kaci denetim listesi disi
import { KALEM, MODEL, SINIF, TOPLAM, kume, agirlik, sinif } from './kalem.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 A = [-27, 12, 12, 12];
const degisen = KALEM.filter((k) => new Set(MODEL.map((m) => sinif(k, m))).size > 1);
console.log(`${KALEM.length} yanlis olabilir kalem, tohum agirligi toplam ${TOPLAM}; ` +
  `sinifi uc modelde degisen ${degisen.length} kalem:\n`);
yaz(A, 'kalem', ...MODEL);
for (const k of degisen) yaz(A, k.ad, ...MODEL.map((m) => sinif(k, m)));

console.log('');
yaz(A, 'sinif (21 kalemin dagilimi)', ...MODEL);
for (const c of SINIF) yaz(A, c, ...MODEL.map((m) => kume(m, c).length));
yaz(A, 'denetim listesi disi kalem', ...MODEL.map((m) =>
  SINIF.slice(1).reduce((a, c) => a + kume(m, c).length, 0)));
yaz(A, '  tohum agirligi', ...MODEL.map((m) =>
  SINIF.slice(1).reduce((a, c) => a + agirlik(kume(m, c)), 0)));
yaz(A, '  agirligin yuzdesi', ...MODEL.map((m) =>
  Math.round(SINIF.slice(1).reduce((a, c) => a + agirlik(kume(m, c)), 0) / TOPLAM * 100)));
21 yanlis olabilir kalem, tohum agirligi toplam 167; sinifi uc modelde degisen 8 kalem:

kalem                           altyapi    platform       islev
konak-cekirdek-yamasi        denetlenir       beyan       beyan
calisma-zamani-surumu        denetlenir  denetlenir       beyan
imaj-kaynagi                 denetlenir  denetlenir       beyan
ornek-meta-veri-surumu       denetlenir    sahipsiz       beyan
yonetim-ucu-acikligi         denetlenir    sahipsiz    sahipsiz
ag-erisim-kurali             denetlenir  denetlenir    sahipsiz
ozel-uc-nokta-eslemesi       denetlenir  denetlenir    sahipsiz
gunluk-akisi-hedefi          denetlenir  denetlenir    sahipsiz

sinif (21 kalemin dagilimi)     altyapi    platform       islev
denetlenir                           15          12           7
beyan                                 3           4           7
kor                                   3           3           3
sahipsiz                              0           2           4
denetim listesi disi kalem            6           9          14
  tohum agirligi                     59          86         111
  agirligin yuzdesi                  35          51          66

Üst tablo yalnız sınıfı değişen sekiz kalemi gösteriyor; kalan on üç kalem üç modelde de aynı sınıfta duruyor. Alt tablo asıl sayıyı veriyor: müşterinin yönetim düzleminden okuyup otomatik denetleyebildiği kalem on beşten on ikiye, oradan yediye iniyor. Aynı yönde denetim listesinin dışında kalan kalem altıdan dokuza, oradan on dörde çıkıyor.

Tohum ağırlığı satırı bu değişimin neden düz bir devir olmadığını gösteriyor. Yüz altmış yedi birimlik toplam ağırlığın denetim listesinin göremediği payı yüzde otuz beşten yüzde elli bire, oradan yüzde altmış altıya çıkıyor. Kalem sayısı iki katından biraz fazla artarken ağırlık payı neredeyse iki katına çıkıyor — çünkü listeden düşen kalemler ağır olanlardır. hipervizor-yamasi on dört, is-yuku-ici-sir on beş, sir-deposu-erisimi on üç birim taşıyor.

Sınır Kaydıkça Liste Daralıyor

Üst tablo dört kalem grubunu birbirinden ayırıyor. konak-cekirdek-yamasi, calisma-zamani-surumu ve imaj-kaynagi sağlayıcıya açıkça geçiyor: müşteri ayarlamıyor, sağlayıcı üstleniyor, denetim beyana dönüşüyor. Bu bir kayıp değil, bir takas — kalem yanlış olabilir ama yanlışı yapan taraf onu düzeltebilen taraftır.

ag-erisim-kurali, ozel-uc-nokta-eslemesi ve gunluk-akisi-hedefi başka bir yola giriyor. Altyapı ve platform modelinde müşteri ayarlıyor; işlev modelinde çalışma ortamı bu kalemleri soyutluyor ve sağlayıcı da onları sözleşmede üstlenmiyor. Sonuç sahipsizliktir: kalem hâlâ yanlış olabilir, ama kimse ayarlamadığı için kimse denetlemez.

yonetim-ucu-acikligi iki modelde birden sahipsiz kalıyor ve on birimlik ağırlığıyla listedeki en ağır sahipsiz kalem. ornek-meta-veri-surumu ise ilginç bir yol izliyor: altyapıda müşteri ayarlıyor, platformda kimse ayarlamıyor, işlevde sağlayıcı üstleniyor. Devir derinleştikçe bir kalem her zaman düz bir çizgide karşıya geçmiyor; arada bir modelde boşluğa düşebiliyor.

Denetim Listesinin Bedeli

Dört sınıfın her biri denetim listesine ayrı bir bedelle giriyor. Sahipli ve okunabilir kalem için bir kural yazılır ve sürekli koşar. Beyanla bilinen kalem için sağlayıcıya dönemsel bir soru sorulur; yanıtın doğruluğu sınanamaz, yalnız kaydedilir. Kör nokta için değeri çalışan sistemden çıkaracak ek bir düzenek gerekir. Sahipsiz kalem hiçbirine uymaz: satır yazılmadan önce kalemin sahibi atanmalıdır.

// bulut/kosum2.mjs — denetim listesi: kac satir otomatik kosuyor, kaci soru turu istiyor
import { MODEL, SINIF, BEDEL, TOPLAM, kume, agirlik } from './kalem.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 B = [-13, -14, 11, 11, 10];
yaz(B, 'sinif', 'satirin bedeli', ...MODEL);
for (const c of SINIF)
  yaz(B, c, BEDEL[c], ...MODEL.map((m) => `${kume(m, c).length} / ${agirlik(kume(m, c))}`));
console.log('  (hucre: kalem sayisi / tohum agirligi)\n');

const C = [-11, 9, 10, 7, 14, 12];
yaz(C, 'model', 'denetim', 'kapsanan', 'soru', 'sahibi yok', 'hic okunan');
yaz(C, '', 'satiri', 'agirlik', 'turu', 'kalem/agirlik', 'agirlik');
for (const m of MODEL)
  yaz(C, m, kume(m, 'denetlenir').length,
    `%${Math.round(agirlik(kume(m, 'denetlenir')) / TOPLAM * 100)}`,
    kume(m, 'beyan').length,
    `${kume(m, 'sahipsiz').length} / ${agirlik(kume(m, 'sahipsiz'))}`,
    agirlik(kume(m, 'kor')));
sinif        satirin bedeli    altyapi   platform     islev
denetlenir   kural            15 / 108    12 / 81    7 / 56
beyan        soru turu          3 / 31     4 / 40    7 / 60
kor          ek duzenek         3 / 28     3 / 28    3 / 28
sahipsiz     once sahip          0 / 0     2 / 18    4 / 23
  (hucre: kalem sayisi / tohum agirligi)

model        denetim  kapsanan   soru    sahibi yok  hic okunan
              satiri   agirlik   turu kalem/agirlik     agirlik
altyapi           15       %65      3         0 / 0          28
platform          12       %49      4        2 / 18          28
islev              7       %34      7        4 / 23          28

İlk tablo bedeli sınıf sınıf ayırıyor. Altyapı modelinde on beş satır otomatik koşuyor ve yüz sekiz birimlik ağırlığı kapsıyor; işlev modelinde yedi satır kalıyor ve kapsanan ağırlık elli altıya iniyor. Soru turu üçten yediye çıkıyor: her tur sağlayıcıya sorulan, yanıtı bekleyen ve sınanamayan bir kalemdir.

İkinci tablo aynı üç modeli tek satırda okutuyor. Otomatik kapsanan ağırlık yüzde altmış beşten yüzde otuz dörde iniyor. Sahibi olmayan kalem sıfırdan iki ve dörde, ağırlığı sıfırdan on sekiz ve yirmi üçe çıkıyor. Bu kalemler için müşterinin bir seçeneği vardır — sahipliği üstlenmek — ve üstlenildiğinde on sekiz ile yirmi üç birim listeye geri döner. Bedeli sözleşmede olmayan bir işin kendi ekibine yazılmasıdır.

Yanlış Kaç Gün Sonra Görülüyor

Satır sayısı listenin genişliğini verir, gecikmesini vermez. Otomatik koşan bir kural yanlışı konduğu gün görür; dönemsel bir soru turu ancak turun geldiği gün görür; ek düzenek haftalık toplarsa hafta içinde görür. Sahipsiz kalem hiç sorulmaz.

// bulut/kosum3.mjs — yanlis kalem kac gun sonra fark ediliyor; hangi agirlik hic fark edilmiyor
import { MODEL, SINIF, TOPLAM, kume, agirlik } from './kalem.mjs';

// Fark edilme gecikmesi (gun): kural surekli kosar, soru turu donemseldir,
// ek duzenek kurulmussa haftalik toplar, sahipsiz kalem hic sorulmaz.
const GECIKME = { denetlenir: 0, beyan: 90, kor: 7, sahipsiz: null };
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 D = [-11, 9, 15, 16, 13];
yaz(D, 'model', 'gorulen', 'agirlikli', 'hic gorulmeyen', 'kor duzenek');
yaz(D, '', 'agirlik', 'gecikme (gun)', 'agirlik', 'kurulmazsa');
for (const m of MODEL) {
  const g = SINIF.filter((c) => GECIKME[c] !== null);
  const gor = g.reduce((a, c) => a + agirlik(kume(m, c)), 0);
  const top = g.reduce((a, c) => a + agirlik(kume(m, c)) * GECIKME[c], 0);
  yaz(D, m, gor, (top / gor).toFixed(1), TOPLAM - gor,
    TOPLAM - gor + agirlik(kume(m, 'kor')));
}
console.log('\nkural yerine soru turuna dusen agirligin gecikmeye katkisi:');
for (const m of MODEL)
  console.log(`  ${m.padEnd(10)}beyan agirligi ${String(agirlik(kume(m, 'beyan'))).padStart(3)}` +
    `, gecikmenin ${Math.round(agirlik(kume(m, 'beyan')) * 90 /
      (agirlik(kume(m, 'beyan')) * 90 + agirlik(kume(m, 'kor')) * 7) * 100)}%'i buradan`);
model        gorulen      agirlikli  hic gorulmeyen  kor duzenek
             agirlik  gecikme (gun)         agirlik   kurulmazsa
altyapi          167           17.9               0           28
platform         149           25.5              18           46
islev            144           38.9              23           51

kural yerine soru turuna dusen agirligin gecikmeye katkisi:
  altyapi   beyan agirligi  31, gecikmenin 93%'i buradan
  platform  beyan agirligi  40, gecikmenin 95%'i buradan
  islev     beyan agirligi  60, gecikmenin 96%'i buradan

Ağırlıklı gecikme on yedi virgül dokuz günden yirmi beş virgül beşe, oradan otuz sekiz virgül dokuz güne çıkıyor. Yani aynı yanlış kalem işlev modelinde ortalama iki katından fazla süre yerinde duruyor. Alt blok gecikmenin nereden geldiğini söylüyor: üç modelde de yüzde doksan üçten yüzde doksan altıya kadar olan pay beyan sınıfından gelir. Kör noktanın haftalık düzeneği gecikmeye neredeyse hiç katkı yapmıyor, çünkü yedi gün doksanın yanında küçüktür.

Son sütun bir uyarı taşıyor. Hiç görülmeyen ağırlık sıfır, on sekiz ve yirmi üçtür — ama bu sayı kör nokta için bir ek düzenek kurulduğunu varsayar. Düzenek kurulmazsa hiç görülmeyen ağırlık yirmi sekiz, kırk altı ve elli bire çıkar; işlev modelinde toplam ağırlığın yaklaşık üçte biri hiçbir listeye düşmez. Bu, denetim listesinin genişliğiyle ilgili bir eksiklik değildir: liste yirmi bir satırlık yazılabilir ve yine de o satırların bir bölümü hiçbir zaman değer okumaz.

Kör Nokta Devirle Değişmiyor

Son sütun bu dersin karar taşıyan sayısını veriyor: hiçbir listenin okuyamadığı ağırlık üç modelde de yirmi sekiz birimdir. Üç kalem — şablon varsayılanı, bağımlılık sürümü ve iş yükü içindeki sır — üç modelde de müşterinindir, üçünde de yanlış olabilir ve üçünde de yönetim düzleminden okunamaz.

Bunun anlamı şudur: hizmet modelini derinleştirmek kör noktayı küçültmez. Devir, kalemleri müşteri ile sağlayıcı arasında taşır; okunabilirliği taşımaz. Sahipsiz kalemi üstlenmek de kör noktayı kapatmaz — platformda iki sahipsiz kalem alındığında bile yirmi sekiz birim yerinde durur, çünkü sahiplik zaten müşterideydi, eksik olan görünürlüktü.

Denetim listesi bu yüzden üç ayrı işi birden yapmalıdır: sahipli ve görünür kalemi kuralla sürekli sınamak, sağlayıcının kalemini soru turuyla kaydetmek ve görünmeyen kalemi çalışan sistemden çıkarmak. Bu dersin sonundaki liste yirmi bir satırlıktır ve işlev modelinde satırların yalnız yedisi kendi başına koşar.

Özet

  • 21 yanlış olabilir kalem dört sınıfa ayrılıyor: denetlenen, beyanla bilinen, kör nokta, sahipsiz. Toplam tohum ağırlığı 167 birimdir.
  • Otomatik denetlenebilen kalem 15 → 12 → 7; denetim listesinin dışında kalan kalem 6 → 9 → 14. Kapsanan ağırlık %65 → %49 → %34.
  • Ağırlık payı kalem sayısından hızlı düşüyor, çünkü listeden düşen kalemler ağır olanlardır: hipervizor-yamasi 14, is-yuku-ici-sir 15, sir-deposu-erisimi 13 birim taşır.
  • Sahipsiz kalem 0 → 2 → 4 ve ağırlığı 0 → 18 → 23. Bir kalem devir sırasında karşıya geçmek yerine arada bir modelde boşluğa düşebiliyor; ornek-meta-veri-surumu bunun örneğidir.
  • Ağırlıklı fark edilme gecikmesi 17,9 → 25,5 → 38,9 gün. Gecikmenin %93 ile %96’sı beyan sınıfından gelir; kör noktanın haftalık düzeneği gecikmeye neredeyse hiç katkı yapmaz.
  • Hiçbir listenin okuyamadığı ağırlık üç modelde de 28 birimdir. Devir kalemleri taşır, okunabilirliği taşımaz; sahipsiz kalemi üstlenmek de bu 28 birimi düşürmez.

Sonraki Adım

Liste artık yazılı: yirmi bir kalem, dört sınıf ve her kalemin bir tohum ağırlığı. Ama tohum ağırlığı bu derste bir sayı olarak verildi, hesaplanmadı. sir-deposu-erisimi kaleminin on üç taşıdığı söylendi; on üçün nereden geldiği, o on üç kalemin kaçına doğrudan, kaçına başka bir kimliğin üzerinden ulaşıldığı sorulmadı. Sonraki ders bu kursun ölçü birimini kuruyor: kimlikler ve kalemler bir erişim grafiği olarak yazılıyor, sızan tek bir kimlikten yürüyüş gerçekten koşturuluyor ve yarıçap bir sayıya dönüşüyor.

İ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