Ders 10 / 10
Bulut Göç Stratejileri
Yeniden barındırma, platform değiştirme ve yeniden mimarinin aynı on kalemlik kümede karşılaştırılması: devredilen karar, göç günü, çıkışı zorlaştıran hizmete özgü kalem, dalga sayısı ile iki düzenin birlikte işletilme süresi, geride kalan kalemin yıllık yükü ve bitmeyen çift düzen bedeli.
İçindekiler
Önceki ders kapasitenin hangi koşulla kiralandığını ölçtü ve üç yük profilinde üç ayrı modelin kazandığını buldu. Bütün o hesaplar tek bir sessiz varsayım altında yapıldı: taşınacak iş zaten kiralanmış durumda. Oysa kurgu bölgesel ölçüm ağı bugün kendi salonunda koşuyor.
Üç yol vardır. Yeniden barındırma kalemi olduğu gibi kiralanan makineye taşır; kod değişmez. Platform değiştirme kalemin bazı parçalarını yönetilen karşılıklarıyla değiştirir; arayüz katmanı yeniden yazılır. Yeniden mimari kalemi kiralanan yapı taşlarına göre baştan yazar. Aşamalı geçişin dalga mekaniği ve eski düzeni parça parça saran kalıp önceki kurslarda ölçüldü; burada ölçülen şey dalganın kendisi değil, dalgaların bitmediği durumun yıllık bedelidir.
Kalem Kümesi ve Üç Strateji
- BC25. Kalem kümesi 10 servistir; her kalemin büyüklüğü (1–3), yıllık işletim günü ve yıllık değişiklik sayısı kurgudur.
- BC26. Strateji profilleri kalem başına sabittir ve model dosyasında yazılıdır: devredilen karar sırasıyla 3, 7 ve 11’dir.
- BC27. Karar ufku 5 yıldır; beş yıllık net kazancı sıfırın üstünde olmayan kalem taşınmaz.
- BC28. Ekip dalga başına 20 göç günü işler; bir dalga 30 takvim günü sürer.
- BC29. İki düzen birlikte işletildiği sürece ayda 1,5 ek işletim günü doğar. Geride kalan kalem varsa bu bedel bitmez.
- BC30. Karma yolda her kalem, en yüksek beş yıllık neti veren stratejiyi alır.
// goc/model.mjs — goc MODELIDIR: kurgu olcum aginin on kalemi ve uc strateji profili. // Gercek bir gocurme araci, saglayici ya da takvim yoktur; butun sayilar kurgudur. // ad, buyukluk (1-3), yillik isletim gunu, yillik degisiklik sayisi export const KALEM = [ ["okuma-toplayici", 3, 22, 30], ["dogrulayici", 2, 14, 18], ["faturalama", 3, 18, 12], ["is-emri-servisi", 2, 10, 9], ["abone-portali", 2, 12, 24], ["gecelik-toplu-is", 1, 8, 4], ["okuma-deposu", 3, 20, 3], ["tarife-deposu", 1, 6, 2], ["rapor-ucu", 1, 3, 1], ["kimlik-dizini", 1, 5, 2], ]; // devir: kalem basina devredilen karar; dusus: isletim yukunden kalkan pay; teslim: degisiklik // basina kazanilan gun; gun: buyukluk basina goc gunu; ozgu: kalem basina hizmete ozgu kalem export const STRATEJI = { "yeniden-barindirma": { devir: 3, dusus: 0.15, teslim: 0.05, gun: 2, ozgu: 1, yaz: "degismez" }, "platform-degistirme": { devir: 7, dusus: 0.55, teslim: 0.20, gun: 9, ozgu: 3, yaz: "kismi" }, "yeniden-mimari": { devir: 11, dusus: 0.80, teslim: 0.70, gun: 34, ozgu: 5, yaz: "tam" }, }; export const AD = Object.keys(STRATEJI); export const UFUK = 5, DALGA_KAP = 20, DALGA_GUN = 30, CIFT_AY = 1.5; // kurgu export const gocGunu = (k, s) => STRATEJI[s].gun * k[1]; export const kazanc = (k, s) => k[2] * STRATEJI[s].dusus + k[3] * STRATEJI[s].teslim; export const net = (k, s) => kazanc(k, s) * UFUK - gocGunu(k, s); export const enIyi = (k) => AD.reduce((a, s) => (net(k, s) > net(k, a) ? s : a), AD[0]); // Bir yol: her kaleme bir strateji. Net kazanci sifirin altinda kalan kalem tasinmaz. export function kos(sec) { const tasinan = KALEM.filter((k) => net(k, sec(k)) > 0); const geride = KALEM.filter((k) => net(k, sec(k)) <= 0); const t = (f) => tasinan.reduce((a, k) => a + f(k), 0); const gun = t((k) => gocGunu(k, sec(k))); const dalga = Math.ceil(gun / DALGA_KAP), birlikte = dalga * DALGA_GUN; const gecis = (birlikte / 30) * CIFT_AY; const kalici = geride.length ? CIFT_AY * 12 : 0; const yillik = t((k) => kazanc(k, sec(k))) - kalici; return { tasinan: tasinan.length, geride: geride.length, gun, dalga, birlikte, gecis, kalici, yillik, devir: t((k) => STRATEJI[sec(k)].devir), ozgu: t((k) => STRATEJI[sec(k)].ozgu), kalanYuk: t((k) => k[2] * (1 - STRATEJI[sec(k)].dusus)) + geride.reduce((a, k) => a + k[2], 0), gerideYuk: geride.reduce((a, k) => a + k[2], 0), net5: yillik * UFUK - gun - gecis, }; }
Aynı Kümede Üç Strateji
// goc/strateji.mjs — uc strateji ayni kalem kumesinde: devredilen karar, yeniden yazilan kalem, // goc gunu ve cikisi zorlastiran hizmete ozgu kalem import { KALEM, STRATEJI, AD, UFUK, kos, net, enIyi } from "./model.mjs"; const s = (x, n) => String(x).padStart(n); const y = (x, n = 1) => x.toFixed(n); const KISA = { "yeniden-barindirma": "barindirma", "platform-degistirme": "degistirme", "yeniden-mimari": "mimari" }; const R = Object.fromEntries(AD.map((a) => [a, kos(() => a)])); R.karma = kos(enIyi); const YOL = [...AD, "karma"]; console.log(`${KALEM.length} kalem, karar ufku ${UFUK} yil; butun sayilar KURGU ` + `"isletim gunu" ve "goc gunu" cinsindendir.`); console.log(); console.log("olcu | barindirma | degistirme | mimari | karma"); console.log("-----------------------------|------------|------------|--------|-------"); for (const [ad, f] of [ ["tasinan kalem", (r) => `${r.tasinan}/${KALEM.length}`], ["devredilen karar", (r) => r.devir], ["yeniden yazilan kalem", (r, a) => (a === "karma" ? "karisik" : STRATEJI[a].yaz)], ["goc gunu (toplam)", (r) => r.gun], ["hizmete ozgu kalem (cikis)", (r) => r.ozgu], ["yillik kazanc (isletim gunu)", (r) => y(r.yillik)], ["kalan yillik isletim yuku", (r) => y(r.kalanYuk)]]) console.log(`${ad.padEnd(28)} | ${s(f(R[YOL[0]], YOL[0]), 10)} | ${s(f(R[YOL[1]], YOL[1]), 10)} | ` + `${s(f(R[YOL[2]], YOL[2]), 6)} | ${s(f(R.karma, "karma"), 5)}`); console.log(); console.log(`kalem basina ${UFUK} yillik net kazanc (isletim gunu; en yuksek olan secilir)`); console.log("kalem | buyukluk | yuk | degisim | barindirma | degistirme | mimari | secim"); console.log("-----------------|----------|-----|---------|------------|------------|--------|-------"); for (const k of KALEM) { const n = AD.map((a) => net(k, a)); console.log(`${k[0].padEnd(16)} | ${s(k[1], 8)} | ${s(k[2], 3)} | ${s(k[3], 7)} | ` + `${s(y(n[0]), 10)} | ${s(y(n[1]), 10)} | ${s(y(n[2]), 6)} | ${KISA[enIyi(k)]}`); } const say = (a) => KALEM.filter((k) => enIyi(k) === a).length; console.log(`secim dagilimi: ` + AD.map((a) => `${a} ${say(a)}`).join(", ") + `; uc strateji de en az bir kalemde kazaniyor.`);
10 kalem, karar ufku 5 yil; butun sayilar KURGU "isletim gunu" ve "goc gunu" cinsindendir. olcu | barindirma | degistirme | mimari | karma -----------------------------|------------|------------|--------|------- tasinan kalem | 10/10 | 10/10 | 6/10 | 10/10 devredilen karar | 30 | 70 | 66 | 78 yeniden yazilan kalem | degismez | kismi | tam | karisik goc gunu (toplam) | 38 | 171 | 442 | 339 hizmete ozgu kalem (cikis) | 10 | 30 | 30 | 34 yillik kazanc (isletim gunu) | 22.9 | 85.9 | 117.1 | 132.6 kalan yillik isletim yuku | 100.3 | 53.1 | 50.8 | 42.3 kalem basina 5 yillik net kazanc (isletim gunu; en yuksek olan secilir) kalem | buyukluk | yuk | degisim | barindirma | degistirme | mimari | secim -----------------|----------|-----|---------|------------|------------|--------|------- okuma-toplayici | 3 | 22 | 30 | 18.0 | 63.5 | 91.0 | mimari dogrulayici | 2 | 14 | 18 | 11.0 | 38.5 | 51.0 | mimari faturalama | 3 | 18 | 12 | 10.5 | 34.5 | 12.0 | degistirme is-emri-servisi | 2 | 10 | 9 | 5.8 | 18.5 | 3.5 | degistirme abone-portali | 2 | 12 | 24 | 11.0 | 39.0 | 64.0 | mimari gecelik-toplu-is | 1 | 8 | 4 | 5.0 | 17.0 | 12.0 | degistirme okuma-deposu | 3 | 20 | 3 | 9.8 | 31.0 | -11.5 | degistirme tarife-deposu | 1 | 6 | 2 | 3.0 | 9.5 | -3.0 | degistirme rapor-ucu | 1 | 3 | 1 | 0.5 | 0.3 | -18.5 | barindirma kimlik-dizini | 1 | 5 | 2 | 2.3 | 6.8 | -7.0 | degistirme secim dagilimi: yeniden-barindirma 1, platform-degistirme 6, yeniden-mimari 3; uc strateji de en az bir kalemde kazaniyor.
Devredilen karar 30, 70 ve 66’dır. Yeniden mimarinin 66’sı bir tasarruf değil bir eksikliktir: kalem başına 11 karar devreder ama on kalemin yalnız altısını taşıyabilir. Göç günü 38’den 171’e ve 442’ye, çıkışı zorlaştıran hizmete özgü kalem 10’dan 30’a çıkıyor. Yeniden barındırma en az kazandıran (yıllık 22,9 işletim günü) ama çıkışı en az bozan yoldur.
İkinci tablo bu kazancın nereden geldiğini gösteriyor. Yeniden mimarinin kazandığı üç kalemin ortak yanı yük değil değişim sayısıdır: 30, 18 ve 24. Yılda 3 kez değişen okuma deposu ikinci en ağır kalem olmasına rağmen (yıllık 20 gün) yeniden mimaride net -11,5 verir; yeniden yazmanın karşılığı işletim yükünden değil değişikliklerin ucuzlamasından gelir. Rapor ucu bunun ucudur: büyüklük 1, yük 3, değişiklik 1 ve yeniden mimaride -18,5 — küçük ve durağan bir serviste yeniden mimari beş yılda geri dönmez; orada en iyi seçim 0,5 ile yeniden barındırmadır. Seçim dağılımı 1, 6 ve 3’tür: üç strateji de en az bir kalemde kazanıyor.
Aşamalandırma ve Taşımamanın Bedeli
// goc/dalga.mjs — asamalandirma ve tasimamanin bedeli: dalga basina servis, iki duzenin // birlikte isletilme suresi, geride kalanin yillik yuku ve bitmeyen cift duzen import { AD, DALGA_KAP, DALGA_GUN, CIFT_AY, kos, enIyi } from "./model.mjs"; const s = (x, n) => String(x).padStart(n); const y = (x, n = 1) => x.toFixed(n); const R = { ...Object.fromEntries(AD.map((a) => [a, kos(() => a)])), karma: kos(enIyi) }; const YOL = [["barindirma", AD[0]], ["degistirme", AD[1]], ["mimari", AD[2]], ["karma", "karma"]]; console.log(`dalga kapasitesi ${DALGA_KAP} goc gunu, dalga suresi ${DALGA_GUN} takvim gunu; ` + `iki duzen birlikte isletildikce ayda ${CIFT_AY} ek isletim gunu (kurgu).`); console.log(); console.log("yol | goc gun | dalga | servis/dalga | birlikte | geride | cift duzen | 5 yil net"); console.log("-----------|---------|-------|--------------|----------|--------|------------|----------"); for (const [ad, v] of YOL) { const r = R[v]; console.log(`${ad.padEnd(10)} | ${s(r.gun, 7)} | ${s(r.dalga, 5)} | ${s(y(r.tasinan / r.dalga), 12)} | ` + `${s(`${r.birlikte} g`, 8)} | ${s(r.geride, 6)} | ` + `${s(r.kalici ? `${y(r.kalici)}/yil` : "biter", 10)} | ${s(y(r.net5), 9)}`); } const m = R[AD[2]]; console.log(`gecis bedeli (bir kez): ` + YOL.map(([a, v]) => `${a} ${y(R[v].gecis)}`).join(", ") + "."); console.log(`yeniden mimari ${m.geride} kalemi geride birakiyor; yillik yukleri ${y(m.gerideYuk)} gun ` + `ve cift duzen ${y(m.kalici)} gun/yil ile bitmiyor.`);
dalga kapasitesi 20 goc gunu, dalga suresi 30 takvim gunu; iki duzen birlikte isletildikce ayda 1.5 ek isletim gunu (kurgu). yol | goc gun | dalga | servis/dalga | birlikte | geride | cift duzen | 5 yil net -----------|---------|-------|--------------|----------|--------|------------|---------- barindirma | 38 | 2 | 5.0 | 60 g | 0 | biter | 73.7 degistirme | 171 | 9 | 1.1 | 270 g | 0 | biter | 245.0 mimari | 442 | 23 | 0.3 | 690 g | 4 | 18.0/yil | 109.0 karma | 339 | 17 | 0.6 | 510 g | 0 | biter | 298.3 gecis bedeli (bir kez): barindirma 3.0, degistirme 13.5, mimari 34.5, karma 25.5. yeniden mimari 4 kalemi geride birakiyor; yillik yukleri 34.0 gun ve cift duzen 18.0 gun/yil ile bitmiyor.
Aşamalandırma dalga sayısını takvime çeviriyor. Yeniden barındırma 2 dalgada biter ve dalga başına 5,0 servis taşır; platform değiştirmede 1,1, yeniden mimaride 0,3 servise iner — çoğu dalga tek bir servisi bile bitiremez. İki düzenin birlikte işletilme süresi 60, 270 ve 690 gün, bu süre boyunca doğan geçiş bedeli 3,0, 13,5 ve 34,5 işletim günüdür.
Asıl kalem son iki sütundadır. Yeniden barındırma ve platform değiştirmede çift düzen biter; yeniden mimaride bitmez, çünkü dört kalem hiç taşınmaz. O dört kalemin yıllık işletim yükü 34,0 gün olduğu gibi kalır ve üstüne çift düzen 18,0 gün/yıl kalıcı olarak eklenir. Taşımamak bir tasarruf değil süresiz bir aboneliktir: yıllık kazançta birinci olan yol (117,1) beş yıllık nette 109,0 ile üçüncüye düşüyor, platform değiştirme 245,0 yazıyor.
Karma yol hepsini geçiyor: 339 göç günü, 17 dalga, geride kalan 0 ve beş yıllık net 298,3 — tek bir stratejiyi bütün kümeye uygulamanın bedeli, en iyi tekdüze yola göre 53,3 işletim günüdür.
Özet
- Üç strateji aynı on kalemde 30, 70 ve 66 karar devreder; göç günü 38, 171 ve 442, hizmete özgü kalem 10, 30 ve 30’dur. Yeniden mimari yıllık kazançta ikinci (117,1 gün) ama beş yıllık nette üçüncüdür (109,0’a karşı 245,0).
- Yeniden yazmanın karşılığı işletim yükünden değil değişiklik sayısından gelir: kazandığı üç kalemin yıllık değişimi 30, 18 ve 24 iken, yılda 3 kez değişen okuma deposunda net -11,5’tir. Küçük ve durağan rapor ucunda -18,5 yazar; orada en iyi seçim yeniden barındırmadır (0,5).
- Aşamalandırma dalga başına 5,0, 1,1 ve 0,3 servis taşır; iki düzen 60, 270 ve 690 gün birlikte işletilir, geçiş bedeli 3,0, 13,5 ve 34,5 işletim günüdür.
- Taşımamak süresiz bir bedeldir: geride kalan dört kalemin 34,0 günlük yıllık yükü azalmaz ve çift düzen 18,0 gün/yıl ile bitmez. Kalem başına seçim yapan karma yol geride kalan bırakmaz ve beş yıllık nette 298,3 yazar.
Kurs Kapanışı
| Ders | Devredilen karar | Karşılığında alınan | Çıkışta taşınamayan |
|---|---|---|---|
| Bulut Bilişim Nedir | 3 karar (alım, miktar, yerleşim) | bekleme 30,0 → 1,0 gün | 8 kalemden 4’ü |
| Hizmet Modelleri | 26’dan 5 / 23 / 25 | dokunuş 91 → 82 / 19 / 4 | gömülü 2 / 8 / 17 karar |
| Dağıtım Modelleri | denetimin 16/24’ü | esneklik penceresi 21,0 → 1,0 gün | 16 denetim kalemi, 6 sınır bağı |
| Şirket İçi ile Karşılaştırma | sahiplik, 8 birim peşin alım | görünmeyen pay %64 → %13 | 250 kb çıkış ücreti |
| Paylaşılan Sorumluluk Modeli | 24’ten 6 / 16 / 20 | müşteride kalan 18 → 8 → 4 | pazarlık 6 / 16 / 20 kalem |
| Bölgeler ve Erişilebilirlik Alanları | 13 kalemden 6’sının yerleşimi | 0 fazladan kapasite bedeli | 6 kalemin dağıtım tanımı |
| Kenar Konumları | 3 karar (konum, yönlendirme, çıkarma) | gecikme %21,0 düşüş | ısınmış önbellek, +%30,5 yük |
| Tasarım Çerçevesinin Sütunları | 12 karardan 8’i | işletim +0,63, güvenlik +1,00 | 8 devirden 6’sı (%43,75) |
| Fiyatlandırma Modelleri | 0 / 1 / 2 karar | düz profilde %61,3 ucuz | kalan taahhüt 2.083,20 birim |
| Bulut Göç Stratejileri | 30 / 70 / 66 karar | yıllık 22,9 / 85,9 / 117,1 gün | hizmete özgü 10 / 30 / 30 |
Kursun kuralı on satırın hepsinde aynıdır: kiralamak bir kararı devretmektir; devredilen her karar bir kazanç ve bir çıkış bedeli taşır. Orta sütun olmadan sol sütun bir kayıp listesi, sağ sütun olmadan orta sütun bir satış konuşmasıdır.
Son sütun on satırda dört aileye iner. Hizmete gömülü karar dört derste tekrar eder (hizmet modelleri, paylaşılan sorumluluk, sütunlar, göç stratejileri): kalem taşınır, onu ayarlayan karar taşınmaz. Sağlayıcının işlettiği ve hiç görünmeyen dağıtım iki derste (dağıtım modelleri, bölgeler): sınanamayan bir şeyin taşınacak tanımı da yoktur. Zamanla biriken durum iki derste (başarım geçmişi, ısınmış önbellek). Sözleşmenin yazdığı kalan yükümlülük iki derste (çıkış ücreti, kalan taahhüt) ve dördü içinde tek görünen ailedir. Kalan üçü ölçülmediği sürece çıkış anında keşfedilir.
Kiralama kararı verildi, derinliği ve düzeni seçildi, sorumluluk sınırı çizildi, coğrafyası ve fiyatı belirlendi, taşınma yolu ölçüldü. Yine de kiralanan en somut şey bu on derste hiç ele alınmadı: makinenin kendisi ve o makineleri birbirine bağlayan ağ. Kapasite hep soyut bir “birim”, ağ hep bir “gecikme” olarak sayıldı. M23/K02 Bulutta Hesaplama ve Ağ o iki soyutlamayı açar: kiralanan makine tipleri arasındaki fark neye göre ölçülür, bir ağ hangi kalemlerden kurulur ve iki makine arasındaki yol kaç karar taşır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.