---
title: 'Fiyatlandırma Modelleri'
source: 'https://academia.sh/tr/kurslar/bulut-temelleri/fiyatlandirma-modelleri'
course: 'Bulut Temelleri'
language: tr
updated: '2026-08-17T18:06:54+00:00'
license: 'CC BY-SA 4.0'
---

# Fiyatlandırma Modelleri

İsteğe bağlı, ayrılmış ve kesintili kapasitenin aynı yük profilinde koşturulması: toplam maliyet, geri alınan kapasite yüzünden yeniden koşan iş, kullanılmayan taahhüt, liste fiyatı ile etkin birim fiyat arasındaki fark ve pencerenin ortasında çıkıldığında kalan yükümlülük.

Önceki ders maliyeti bir sütun olarak saydı ve on iki kararın hiçbirinin onu yükseltmediğini
buldu. Bunun nedeni kararların kötülüğü değil, hepsinin **ne kiralandığı** üzerine olmasıydı. Bu
dersin sorusu farklı: aynı kapasite, aynı saat, aynı iş — **hangi koşulla** kiralanıyor.

Üç koşul vardır. **İsteğe bağlı kapasite** istendiği anda alınır ve bırakıldığı anda ödemesi biter;
hiçbir karar devredilmez ve birim fiyat en yüksektir. **Ayrılmış kapasite** belirli bir miktarın
pencere boyunca ödeneceği taahhüdüne karşılık indirim verir; devredilen karar **kapasiteyi
küçültme** kararıdır. **Kesintili kapasite** en büyük indirimi verir ama sağlayıcı kapasiteyi geri
isteyebilir; devredilen karar **işin ne zaman kesileceği** kararıdır. Aşağıdaki ölçüm bu üç koşulu
aynı yük altında koşturur.

## Üç Model ve Yük Profilleri

- **BC19.** Fiyatlar **kurgudur** ve kurgu `birim/kb-saat` cinsindendir: isteğe bağlı 1,00,
  ayrılmış 0,62, kesintili 0,28. Gerçek bir para birimi ya da fiyat listesi kullanılmaz.
- **BC20.** Pencere 168 saattir. Öngörülemez profil kendi yazılan üreteçle üretilir; tohum
  20260804 görünürdür ve her koşum aynı diziyi verir.
- **BC21.** Ayrılmış taahhüt R, ortalama talebin yuvarlanmışıdır ve pencere boyunca kullanılsa da
  kullanılmasa da ödenir; R'yi aşan talep isteğe bağlı karşılanır.
- **BC22.** Kesintili kapasitenin geri alınma olasılığı yüke bağlıdır: $p = 0{,}02 + 0{,}40 \cdot
  (talep / 120)$, en çok 0,45.
- **BC23.** Kesintili kapasitede yalnız **ertelenebilir** iş koşar. Ertelenebilir pay profile göre
  0,45 / 0,60 / 0,10'dur, çünkü üç profili üreten iş türleri farklıdır.
- **BC24.** Geri alınan kapasitenin yaptığı iş kaybolur ve isteğe bağlı kapasitede yeniden koşar;
  yeniden koşma katsayısı 2,5'tir (ara durumun kaybı ve yeniden kuyruğa girme).

```js
// fiyat/model.mjs — fiyatlandirma MODELIDIR. Fiyatlar KURGUDUR ve kurgu `birim/kb-saat`
// cinsindendir; gercek bir para birimi, saglayici ya da fiyat listesi kullanilmaz.
export function uretec(tohum) {                    // kendi yazilan uretec, tohum gorunur
  let s = tohum >>> 0;
  return () => ((s = (Math.imul(s, 1664525) + 1013904223) >>> 0) / 4294967296);
}
export const TOHUM = 20260804, SAAT = 168;         // bir haftalik pencere

export const FIYAT = { istege: 1.00, ayrilmis: 0.62, kesintili: 0.28 };  // kurgu birim/kb-saat
export const YENIDEN = 2.5;                        // geri alinan isin yeniden kosma katsayisi
export const PAZAR_TEPE = 120;                     // kurgu: geri alma olasiliginin olcek noktasi
export const geriAlma = (d) => Math.min(0.45, 0.02 + 0.40 * (d / PAZAR_TEPE));

// profil: talep dizisi + ertelenebilir pay (profilin kaynagi farkli is oldugu icin farkli)
export function profiller() {
  const r = uretec(TOHUM);
  const duz = Array.from({ length: SAAT }, () => 40);
  const tepe = Array.from({ length: SAAT }, (_, t) => (t % 24 >= 2 && t % 24 <= 4 ? 120 : 20));
  const ong = Array.from({ length: SAAT }, () =>
    (r() < 0.6 ? Math.round(r() * 6) : 55 + Math.round(r() * 85)));
  return { duz: [duz, 0.45], "tepe-yapan": [tepe, 0.60], ongorulemez: [ong, 0.10] };
}

export function kos(model, talep, ertelenebilir) {
  const R = Math.round(talep.reduce((a, b) => a + b, 0) / talep.length);   // taahhut = ort. talep
  let maliyet = 0, kayip = 0, bosTaahhut = 0, yenidenBedel = 0;
  for (const d of talep) {
    if (model === "istege-bagli") maliyet += d * FIYAT.istege;
    else if (model === "ayrilmis") {
      maliyet += R * FIYAT.ayrilmis + Math.max(0, d - R) * FIYAT.istege;
      bosTaahhut += Math.max(0, R - d);
    } else {
      const q = d * ertelenebilir, p = geriAlma(d), k = q * p;
      maliyet += q * (1 - p) * FIYAT.kesintili + k * YENIDEN * FIYAT.istege
        + (d - q) * FIYAT.istege;
      kayip += k; yenidenBedel += k * YENIDEN * FIYAT.istege;
    }
  }
  return { model, maliyet, kayip, bosTaahhut, yenidenBedel, R };
}
export const MODEL = ["istege-bagli", "ayrilmis", "kesintili"];
```

## Aynı Profilde Üç Koşum

```js
// fiyat/kosum.mjs — uc model ayni yuk profilinde kosturulur; toplam maliyet, kesintilide
// kaybedilen is ve ayrilmista kullanilmayan taahhut birlikte sayilir
import { profiller, kos, MODEL, SAAT, TOHUM, FIYAT } from "./model.mjs";

const s = (x, n) => String(x).padStart(n);
const y = (x, n = 2) => x.toFixed(n);
const P = profiller();

console.log(`tohum ${TOHUM}, pencere ${SAAT} saat; fiyatlar KURGU birim/kb-saat: ` +
  `istege ${y(FIYAT.istege)}, ayrilmis ${y(FIYAT.ayrilmis)}, kesintili ${y(FIYAT.kesintili)}.`);
console.log();
console.log("profil       | toplam talep | ort | en dusuk | en yuksek | ertelenebilir pay | taahhut R");
console.log("-------------|--------------|-----|----------|-----------|-------------------|----------");
for (const [ad, [t, e]] of Object.entries(P)) {
  const top = t.reduce((a, b) => a + b, 0);
  console.log(`${ad.padEnd(12)} | ${s(top, 12)} | ${s(y(top / SAAT, 1), 3)} | ${s(Math.min(...t), 8)} | ` +
    `${s(Math.max(...t), 9)} | ${s(y(e), 17)} | ${s(kos("ayrilmis", t, e).R, 9)}`);
}

console.log();
console.log("profil       | model        | toplam maliyet | kaybedilen is | yeniden kosma | bos taahhut");
console.log("-------------|--------------|----------------|---------------|---------------|------------");
const kazanan = {};
for (const [ad, [t, e]] of Object.entries(P)) {
  let en = null;
  for (const m of MODEL) {
    const r = kos(m, t, e);
    if (en === null || r.maliyet < en.maliyet) en = r;
    console.log(`${ad.padEnd(12)} | ${m.padEnd(12)} | ${s(y(r.maliyet), 14)} | ` +
      `${s(r.kayip ? y(r.kayip, 1) : "-", 13)} | ${s(r.yenidenBedel ? y(r.yenidenBedel) : "-", 13)} | ` +
      `${s(r.bosTaahhut ? y(r.bosTaahhut, 1) : "-", 11)}`);
  }
  kazanan[ad] = en;
}

console.log();
console.log("profil       | kazanan      | ikinciye fark | ikinciye oran | en pahaliya fark");
console.log("-------------|--------------|---------------|---------------|-----------------");
for (const [ad, [t, e]] of Object.entries(P)) {
  const sirali = MODEL.map((m) => kos(m, t, e)).sort((a, b) => a.maliyet - b.maliyet);
  const [a, b, c] = sirali;
  console.log(`${ad.padEnd(12)} | ${a.model.padEnd(12)} | ${s(y(b.maliyet - a.maliyet), 13)} | ` +
    `${s(`%${y((100 * (b.maliyet - a.maliyet)) / a.maliyet, 1)}`, 13)} | ` +
    `${s(`%${y((100 * (c.maliyet - a.maliyet)) / a.maliyet, 1)}`, 16)}`);
}
console.log(`uc profilde kazanan model: ${Object.values(kazanan).map((k) => k.model).join(", ")}.`);
```

```
tohum 20260804, pencere 168 saat; fiyatlar KURGU birim/kb-saat: istege 1.00, ayrilmis 0.62, kesintili 0.28.

profil       | toplam talep | ort | en dusuk | en yuksek | ertelenebilir pay | taahhut R
-------------|--------------|-----|----------|-----------|-------------------|----------
duz          |         6720 | 40.0 |       40 |        40 |              0.45 |        40
tepe-yapan   |         5460 | 32.5 |       20 |       120 |              0.60 |        33
ongorulemez  |         7430 | 44.2 |        0 |       138 |              0.10 |        44

profil       | model        | toplam maliyet | kaybedilen is | yeniden kosma | bos taahhut
-------------|--------------|----------------|---------------|---------------|------------
duz          | istege-bagli |        6720.00 |             - |             - |           -
duz          | ayrilmis     |        4166.40 |             - |             - |           -
duz          | kesintili    |        5572.09 |         463.7 |       1159.20 |           -
tepe-yapan   | istege-bagli |        5460.00 |             - |             - |           -
tepe-yapan   | ayrilmis     |        5264.28 |             - |             - |      1911.0
tepe-yapan   | kesintili    |        4850.46 |         787.9 |       1969.80 |           -
ongorulemez  | istege-bagli |        7430.00 |             - |             - |           -
ongorulemez  | ayrilmis     |        8528.04 |             - |             - |      3907.0
ongorulemez  | kesintili    |        7475.12 |         261.3 |        653.25 |           -

profil       | kazanan      | ikinciye fark | ikinciye oran | en pahaliya fark
-------------|--------------|---------------|---------------|-----------------
duz          | ayrilmis     |       1405.69 |         %33.7 |            %61.3
tepe-yapan   | kesintili    |        413.82 |          %8.5 |            %12.6
ongorulemez  | istege-bagli |         45.12 |          %0.6 |            %14.8
uc profilde kazanan model: ayrilmis, kesintili, istege-bagli.
```

Son satır bu dersin bulgusudur: **üç profilde üç ayrı model kazanıyor.** Düz profilde ayrılmış
kapasite 4.166,40 birimle isteğe bağlının yüzde 61,3 altında; taahhüt tam olarak kullanıldığı için
boş taahhüt sıfır. Tepe yapan profilde ayrılmış kapasite kaybediyor, çünkü taahhüt ortalamaya
kuruluyor ve talebin yüzde 87,5'i o ortalamanın altında geçiyor: **1.911 kb-saat** ödendiği hâlde
kullanılmıyor. Öngörülemez profilde ise hiçbir devir işe yaramıyor ve en pahalı liste fiyatı olan
isteğe bağlı kapasite 7.430,00 birimle kazanıyor.

Kesintili kapasitenin iki gizli kalemi orta tabloda ayrı sütunlarda duruyor. Düz profilde
463,7 kb-saatlik iş geri alınan kapasiteyle birlikte kayboluyor ve yeniden koşturmak **1.159,20
birim** tutuyor — modelin toplam maliyetinin beşte birinden fazlası. Tepe yapan profilde kayıp
787,9 kb-saat ve yeniden koşma 1.969,80 birim; bu profil kazanıyor olmasına rağmen maliyetinin
yüzde 40'ı geri alınan işin bedelidir. **Kesintili kapasitenin fiyatı listede değil, geri alma
oranındadır.**

Öngörülemez profilin kesintili satırı bu kalemin ikinci yüzünü gösteriyor: kaybedilen iş 261,3
kb-saatle üç profilin en düşüğü, ama model yine de kaybediyor (7.475,12'ye karşı 7.430,00).
Sebebi kayıp değil, kazancın tavanıdır — o profilde ertelenebilir pay 0,10, yani indirim talebin
yalnız onda birine uygulanabiliyor. **Bir indirim ancak dokunabildiği paya kadar indirimdir.**

Üçüncü tablo farkların büyüklüğünü veriyor. Düz profilde kazanan ikinciyi yüzde 33,7 geçiyor: model
seçimi burada gerçek bir karardır. Öngörülemez profilde fark yüzde 0,6'ya iniyor — üç modelin
maliyeti neredeyse aynıdır ve seçimi maliyet değil **risk** belirler.

## Etkin Birim Fiyat ve Çıkışın Bedeli

Liste fiyatı bir kiralamanın ne kadara mal olduğunu söylemez. Ölçülmesi gereken **etkin birim
fiyattır**: toplam maliyetin karşılanan toplam talebe bölümü.

```js
// fiyat/cikis.mjs — etkin birim fiyat, devredilen karar ve pencerenin ortasinda cikmanin bedeli
import { profiller, kos, MODEL, SAAT, FIYAT } from "./model.mjs";

const s = (x, n) => String(x).padStart(n);
const y = (x, n = 3) => x.toFixed(n);
const P = profiller(), CIKIS = 84;                  // pencerenin ortasinda kiralamadan cikilir
const DEVIR = { "istege-bagli": 0, ayrilmis: 1, kesintili: 2 };
const LISTE = { "istege-bagli": FIYAT.istege, ayrilmis: FIYAT.ayrilmis, kesintili: FIYAT.kesintili };

console.log("profil       | model        | liste | etkin birim | listeye gore | devredilen karar");
console.log("-------------|--------------|-------|-------------|--------------|-----------------");
for (const [ad, [t, e]] of Object.entries(P)) {
  const top = t.reduce((a, b) => a + b, 0);
  for (const m of MODEL) {
    const etkin = kos(m, t, e).maliyet / top;
    console.log(`${ad.padEnd(12)} | ${m.padEnd(12)} | ${s(y(LISTE[m], 2), 5)} | ${s(y(etkin), 11)} | ` +
      `${s(`x${y(etkin / LISTE[m], 2)}`, 12)} | ${s(DEVIR[m], 17)}`);
  }
}

console.log();
console.log(`pencerenin ${CIKIS}. saatinde cikildiginda kalan yukumluluk (kurgu birim):`);
console.log("profil       | istege-bagli | kesintili | ayrilmis (kalan taahhut) | ayrilmis kazancinin orani");
console.log("-------------|--------------|-----------|--------------------------|--------------------------");
for (const [ad, [t, e]] of Object.entries(P)) {
  const r = kos("ayrilmis", t, e), tam = kos("istege-bagli", t, e);
  const kalan = (SAAT - CIKIS) * r.R * FIYAT.ayrilmis;
  const kazanc = tam.maliyet - r.maliyet;
  console.log(`${ad.padEnd(12)} | ${s(0, 12)} | ${s(0, 9)} | ${s(y(kalan, 2), 24)} | ` +
    `${s(kazanc > 0 ? `%${y((100 * kalan) / kazanc, 1)}` : "kazanc yok", 25)}`);
}
```

```
profil       | model        | liste | etkin birim | listeye gore | devredilen karar
-------------|--------------|-------|-------------|--------------|-----------------
duz          | istege-bagli |  1.00 |       1.000 |        x1.00 |                 0
duz          | ayrilmis     |  0.62 |       0.620 |        x1.00 |                 1
duz          | kesintili    |  0.28 |       0.829 |        x2.96 |                 2
tepe-yapan   | istege-bagli |  1.00 |       1.000 |        x1.00 |                 0
tepe-yapan   | ayrilmis     |  0.62 |       0.964 |        x1.56 |                 1
tepe-yapan   | kesintili    |  0.28 |       0.888 |        x3.17 |                 2
ongorulemez  | istege-bagli |  1.00 |       1.000 |        x1.00 |                 0
ongorulemez  | ayrilmis     |  0.62 |       1.148 |        x1.85 |                 1
ongorulemez  | kesintili    |  0.28 |       1.006 |        x3.59 |                 2

pencerenin 84. saatinde cikildiginda kalan yukumluluk (kurgu birim):
profil       | istege-bagli | kesintili | ayrilmis (kalan taahhut) | ayrilmis kazancinin orani
-------------|--------------|-----------|--------------------------|--------------------------
duz          |            0 |         0 |                  2083.20 |                     %81.6
tepe-yapan   |            0 |         0 |                  1718.64 |                    %878.1
ongorulemez  |            0 |         0 |                  2291.52 |                kazanc yok
```

Kesintili kapasitenin liste fiyatı 0,28, yani isteğe bağlının yüzde 72 altında. Etkin birim fiyatı
ise düz profilde 0,829, tepe yapanda 0,888, öngörülemezde **1,006** — listenin sırasıyla 2,96, 3,17
ve 3,59 katı. Öngörülemez profilde en ucuz görünen model, en pahalı görünenden fiilen **pahalıya**
geliyor. Ayrılmış kapasitede aynı desen daha ılımlı işliyor: liste 0,62 iken etkin fiyat tepe yapan
profilde 0,964, öngörülemezde 1,148.

Devredilen karar sütunu bu üçlüyü sıralıyor: isteğe bağlıda 0, ayrılmışta 1, kesintilide 2. Sıra
liste indirimiyle birebir örtüşüyor — indirim devredilen kararın karşılığıdır ve üç modelin de
etkin fiyatı, devredilen kararın kaç kez aleyhe işlediğine bağlı.

Son tablo çıkışı sayıyor. İsteğe bağlı ve kesintili kapasitede pencerenin ortasında çıkmanın kalan
yükümlülüğü **sıfırdır**. Ayrılmışta düz profilde 2.083,20 birim kalıyor; bu, aynı modelin o
profilde kazandırdığı toplam farkın **yüzde 81,6'sı** demektir. Tepe yapan profilde kalan
yükümlülük kazancın **yüzde 878,1'i**: taahhüdün ortasında çıkmak, taahhüdün bütün kazancını sekiz
kez siler. Kiralamanın çıkış bedeli burada bir tahmin değil, sözleşmenin doğrudan yazdığı sayıdır.

## Özet

- Üç kapasite modeli devredilen karar sayısıyla sıralanır: isteğe bağlı 0, ayrılmış 1 (kapasiteyi
  küçültme), kesintili 2 (işin ne zaman kesileceği); liste indirimi bu sırayı izler.
- Aynı üç model üç yük profilinde koşturulduğunda **üç ayrı model kazanır**: düz profilde ayrılmış
  (ikinciden yüzde 33,7 ucuz), tepe yapanda kesintili (yüzde 8,5), öngörülemezde isteğe bağlı
  (yüzde 0,6). Tek bir doğru model yoktur.
- Kesintili kapasitenin gizli kalemi geri alınan iştir: düz profilde 463,7 kb-saat kayıp ve
  1.159,20 birim yeniden koşma; tepe yapanda 787,9 kb-saat ve 1.969,80 birim.
- Ayrılmış kapasitenin gizli kalemi kullanılmayan taahhüttür: tepe yapan profilde 1.911, öngörülemez
  profilde 3.907 kb-saat ödenip kullanılmıyor.
- Liste fiyatı ile etkin birim fiyat ayrı sayılardır: kesintili liste 0,28 iken etkin fiyat 0,829
  ile 1,006 arasında (listenin 2,96–3,59 katı) ve öngörülemez profilde isteğe bağlıyı geçiyor.
- Çıkışta isteğe bağlı ve kesintili kapasitenin kalan yükümlülüğü sıfır; ayrılmışta pencerenin
  ortasında çıkmak düz profilde kazancın yüzde 81,6'sını, tepe yapan profilde yüzde 878,1'ini siler.

## Sonraki Adım

Dört ders kiralanan altyapının coğrafyasını ve fiyatını ölçtü: arıza alanı ayrımı, kullanıcıya
yakınlık, sütunlar arası gerilim ve kapasitenin hangi koşulla alındığı. Hepsi tek bir şeyi
varsaydı — kiralanacak iş **zaten kiralanmış durumda**. Oysa bölgesel ölçüm ağı bugün kendi
salonunda koşuyor ve buraya bir yerden gelmesi gerekiyor. Aynı hizmet olduğu gibi taşınabilir,
tek tek parçaları kiralanan karşılıklarıyla değiştirilebilir ya da baştan yazılabilir; üçü de aynı
sonucu vermez. Sonraki ders bu üç göç yolunu **devredilen karar** cinsinden karşılaştırır: her
yolda kaç karar sağlayıcıya geçiyor, kaç kalem yeniden yazılıyor, geçiş kaç dalgada tamamlanıyor
ve en önemlisi — bu dört derste sayılan çıkış bedeli her yolda ne kadar büyüyor.
