---
title: 'Bulut Göç Stratejileri'
source: 'https://academia.sh/tr/kurslar/bulut-temelleri/bulut-goc-stratejileri'
course: 'Bulut Temelleri'
language: tr
updated: '2026-08-17T18:06:54+00:00'
license: 'CC BY-SA 4.0'
---

# 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.

Ö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.

```js
// 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

```js
// 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

```js
// 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.
