---
title: 'Sunucusuzun Uygun Olmadığı Durumlar'
source: 'https://academia.sh/tr/kurslar/sunucusuz/sunucusuzun-uygun-olmadigi-durumlar'
course: 'Sunucusuz ve Kenar Bilişim'
language: tr
updated: '2026-08-17T18:06:58+00:00'
license: 'CC BY-SA 4.0'
---

# Sunucusuzun Uygun Olmadığı Durumlar

Beş iş türü süre, durum ve maliyet ekseninde kıyaslanır: her tür için eşiği aşan kalem adıyla yazılır ve sığmayan işi parçalayarak sığdırmanın bedeli adım, ara durum ve hata noktası olarak sayılır. Konu, hangi işin sunucusuza uyduğunu ve hangisinin neden uymadığını gösteren bir tabloyla kapanır.

Bu konu boyunca ölçülen her şey aynı varsayımı paylaşıyordu: iş, işleve uyuyor. Bir istek geliyor,
sınırların içinde bitiyor, durumunu dışarıda tutuyor. Eşikler sayıldı, paket küçültüldü, yayın
kapıya bağlandı — hepsi o varsayımın içinde. Şimdi varsayımın kendisi ölçülüyor: hangi iş bu
sınırların içine sığar, hangisi sığmaz, ve sığmayanı zorla sığdırmanın faturası nedir?

Soru "sunucusuz iyi mi kötü mü" değildir; kiralamanın karşılığında gelen kısıtların hangi iş
türünde ödenebilir, hangisinde ödenemez olduğudur. Cevabı bir görüş değil, üç eksende okunan bir
sayıdır: süre, durum, maliyet.

- **IH37.** Kurgusal bölgesel ölçüm ağının beş iş türü ölçülür. İş yükü sayıları da sınırlar da
  kurgudur ve tek bir çalıştırma ortamını temsil eder.
- **IH38.** Sınırlar sabittir: tek koşum dokuz yüz saniye, bellek üç bin yetmiş iki megabayt.
  Bağlantı istekten uzun yaşayamaz, yani aynı dokuz yüz saniye bağlantı ömrüdür.
- **IH39.** Maliyet **kurgu birimlerle** yazılır; gerçek para birimi kullanılmaz ve yalnız oranlar
  anlamlıdır. Sunucusuz çağrı başına ve gigabayt-saniye başına, kiralık makine saat başına ücretlenir.
- **IH40.** Bir kiralık makine kırk eş zamanlı iş ya da iki bin kalıcı bağlantı taşır. Yedeklilik,
  yük dengeleme ve işletim emeği maliyete katılmıyor — yani kiralık makine tarafı **eksik sayılıyor**.
- **IH41.** Parçalamada her sınırda ara durum yazılır ve okunur: on sekiz artı on iki saniye ve iki
  yüz kırk megabayt. Sınırın tamamı kullanılamaz; kullanılabilir pay taranan bir ayardır.
- **IH42.** Hata noktası, başarısız olup yeniden denenebilecek yer sayısıdır: adım sayısı artı
  adımlar arası geçiş sayısı. Kısmi başarıdan sonra telafi yolu modellenmiyor.

## Beş İş Türü, Üç Eksen

```js
// isler.mjs — bes is turunu sure, durum ve maliyet ekseninde kiyaslayan model; olcum degil, modeldir
export const SURE_SINIRI = 900;    // kurgu ust sinir, saniye
export const BELLEK_TAVAN = 3072;  // kurgu bellek tavani, MB
export const BAGLANTI_OMRU = 900;  // baglanti istekten uzun yasayamaz: ayni sinir
export const AY_SN = 2592000;      // otuz gunluk ay, saniye

// Kurgu birimler — gercek para birimi degildir, yalnizca oranlar anlamlidir.
export const CAGRI = 0.0000002;    // cagri basina birim
export const GBSN = 0.000017;      // GB-saniye basina birim
export const MAKINE_SAAT = 0.096;  // surekli calisan kiralik makine, saat basina birim
export const MAKINE_ESZAMAN = 40;  // bir makinenin tasidigi es zamanli is
export const MAKINE_BAGLANTI = 2000;

// Bes is turu. `ay` aylik cagri sayisidir; surekli servislerde AY_SN / sn x es zamanli sayisi.
export const ISLER = {
  'kisa ve seyrek istek': { sn: 0.12, ay: 40000, mb: 256, eszaman: 1, baglanti: 0, durum: 'yok' },
  'gece toplu is': { sn: 2700, ay: 30, mb: 1024, eszaman: 1, baglanti: 0, durum: 'ara dosya' },
  'uzun suren donusturme': { sn: 4200, ay: 60, mb: 3072, eszaman: 1, baglanti: 0, durum: 'bellekte ara sonuc' },
  'kalici baglanti tutan servis': { sn: 1500, ay: 1382400, mb: 512, eszaman: 20, baglanti: 800, durum: 'oturum' },
  'yuksek ve surekli yuk': { sn: 0.09, ay: 1036800000, mb: 512, eszaman: 36, baglanti: 0, durum: 'yok' },
};

export const sunucusuzAy = (i) => i.ay * CAGRI + (i.ay * i.sn * i.mb) / 1024 * GBSN;
export const makineAy = (i) => Math.max(1, Math.ceil(i.eszaman / MAKINE_ESZAMAN),
  Math.ceil(i.baglanti / MAKINE_BAGLANTI)) * 730 * MAKINE_SAAT;

// Esigi asan kalem: hangi sinir once carpiyor. Sirasi onemlidir, ilk carpan yazilir.
export function asan(i) {
  const k = [];
  if (i.baglanti > 0 && i.sn > BAGLANTI_OMRU) k.push('baglanti omru');
  else if (i.sn > SURE_SINIRI) k.push('sure siniri');
  if (i.mb > BELLEK_TAVAN) k.push('bellek tavani');
  if (i.durum === 'bellekte ara sonuc' || i.durum === 'oturum') k.push('durum');
  if (sunucusuzAy(i) > makineAy(i)) k.push('birim maliyet');
  return k;
}

export const satir = (g, ...x) => x.map((v, i) => String(v).padEnd(g[i])).join('');
export const bir = (x) => (x >= 100 ? x.toFixed(0) : x >= 1 ? x.toFixed(2) : x.toFixed(4));

// Parcalayarak sigdirmanin kalemleri (kurgu): her sinirda ara durum yazilir ve sonra okunur.
export const ARA_YAZ = 18, ARA_OKU = 12, ARA_MB = 240;
export function parcala(sn, pay) {
  const kullanilabilir = SURE_SINIRI * pay - ARA_YAZ - ARA_OKU;
  if (kullanilabilir <= 0) return null;
  const adim = Math.ceil(sn / kullanilabilir);
  const ek = (adim - 1) * (ARA_YAZ + ARA_OKU);
  return { adim, ek, toplam: sn + ek, araMb: (adim - 1) * ARA_MB, hata: 2 * adim - 1,
    parcaSn: sn / adim + ARA_YAZ + ARA_OKU };
}
```

```js
// kosum1.mjs — bes is turu sure, durum ve maliyet ekseninde yan yana konur
import { ISLER, SURE_SINIRI, BELLEK_TAVAN, BAGLANTI_OMRU, MAKINE_ESZAMAN, sunucusuzAy,
  makineAy, asan, satir, bir } from './isler.mjs';

console.log(`sinirlar: sure ${SURE_SINIRI} sn | bellek ${BELLEK_TAVAN} MB | baglanti omru ${BAGLANTI_OMRU} sn`);
console.log(`kurgu birimler: makine ${MAKINE_ESZAMAN} es zamanli is tasir; asagidaki sayilar birimdir, para degil\n`);

const A = [30, 11, 13, 16, 10, 21];
console.log(satir(A, 'is turu', 'tek kosum', 'sinirin kati', 'aylik cagri', 'bellek', 'durum') + 'es zamanli');
for (const [ad, i] of Object.entries(ISLER)) {
  console.log(satir(A, ad, `${i.sn} sn`, `${(i.sn / SURE_SINIRI).toFixed(2)}x`,
    i.ay.toLocaleString('tr-TR'), `${i.mb} MB`, i.durum) + i.eszaman);
}

const B = [30, 14, 16, 9, 26];
console.log('\naylik maliyet ve esigi asan kalem');
console.log(satir(B, 'is turu', 'sunucusuz', 'kiralik makine', 'oran') + 'esigi asan kalem');
for (const [ad, i] of Object.entries(ISLER)) {
  const s = sunucusuzAy(i), m = makineAy(i), k = asan(i);
  console.log(satir(B, ad, bir(s), bir(m), `${(s / m).toFixed(2)}x`) + (k.length ? k.join(' + ') : 'yok'));
}
```

```
sinirlar: sure 900 sn | bellek 3072 MB | baglanti omru 900 sn
kurgu birimler: makine 40 es zamanli is tasir; asagidaki sayilar birimdir, para degil

is turu                       tek kosum  sinirin kati aylik cagri     bellek    durum                es zamanli
kisa ve seyrek istek          0.12 sn    0.00x        40.000          256 MB    yok                  1
gece toplu is                 2700 sn    3.00x        30              1024 MB   ara dosya            1
uzun suren donusturme         4200 sn    4.67x        60              3072 MB   bellekte ara sonuc   1
kalici baglanti tutan servis  1500 sn    1.67x        1.382.400       512 MB    oturum               20
yuksek ve surekli yuk         0.09 sn    0.00x        1.036.800.000   512 MB    yok                  36

aylik maliyet ve esigi asan kalem
is turu                       sunucusuz     kiralik makine  oran     esigi asan kalem
kisa ve seyrek istek          0.0284        70.08           0.00x    yok
gece toplu is                 1.38          70.08           0.02x    sure siniri
uzun suren donusturme         12.85         70.08           0.18x    sure siniri + durum
kalici baglanti tutan servis  17626         70.08           251.51x  baglanti omru + durum + birim maliyet
yuksek ve surekli yuk         1001          70.08           14.28x   birim maliyet
```

İkinci tablo asıl ayrımı yapıyor. Kısa ve seyrek istek sunucusuzun tam ortasındadır: aylık maliyet
sıfır virgül sıfır iki sekiz birim, kiralık makinenin iki bin dört yüzde biri. İş ayda kırk bin kez
ve yüz yirmi milisaniye çalışıyor; sürekli açık duran bir makine bu işin neredeyse tamamında boş
bekler. Devredilen kapasite kararının en açık kazandığı yer burasıdır.

Gece toplu iş ile uzun süren dönüştürme maliyet ekseninde de kazanır — biri kiralık makinenin
yüzde ikisi, öteki yüzde on sekizi — ama ikisi de **süre sınırını** aşar. Bu iki iş için soru
"pahalı mı" değil, "hiç çalışır mı"dır. Uzun süren dönüştürme ayrıca durumu bellekte tutar:
dört bin iki yüz saniyelik iş boyunca biriken ara sonuç, koşum bittiğinde yok olan bir yerde durur.

Son iki satır tersine dönüyor. Kalıcı bağlantı tutan servis üç kalemi birden aşıyor: bağlantı ömrü,
durum ve birim maliyet. Sunucusuz karşılığı kiralık makinenin **iki yüz elli bir katıdır**, çünkü
sekiz yüz bağlantının her biri boyunca çalışan bir çağrı gibi ücretlendirilir — beklerken de. Yüksek
ve sürekli yük ise yalnız maliyet ekseninde düşer: on dört kat pahalı.

## Parçalayarak Sığdırmanın Bedeli

```js
// kosum2.mjs — sigmayan isi parcalamanin bedeli ve surekli yukte basabas noktasi
import { ISLER, SURE_SINIRI, AY_SN, ARA_YAZ, ARA_OKU, ARA_MB, GBSN, CAGRI, MAKINE_SAAT,
  MAKINE_ESZAMAN, parcala, sunucusuzAy, makineAy, satir, bir } from './isler.mjs';

const d = ISLER['uzun suren donusturme'];
console.log(`"uzun suren donusturme" ${d.sn} sn, sinir ${SURE_SINIRI} sn, ara durum ${ARA_MB} MB, ` +
  `sinir basina yazma ${ARA_YAZ} sn + okuma ${ARA_OKU} sn`);
const P = [12, 14, 8, 11, 13, 14, 14];
console.log(satir(P, 'sinir payi', 'parca suresi', 'adim', 'ek sure', 'toplam sure', 'ara durum', 'hata noktasi') + 'aylik birim');
for (const pay of [0.4, 0.6, 0.8, 0.95]) {
  const r = parcala(d.sn, pay);
  const maliyet = d.ay * r.adim * CAGRI + (d.ay * r.toplam * d.mb) / 1024 * GBSN;
  console.log(satir(P, `%${pay * 100}`, `${Math.round(r.parcaSn)} sn`, r.adim, `${r.ek} sn`,
    `${Math.round(r.toplam)} sn`, `${r.araMb} MB`, r.hata) + bir(maliyet));
}
console.log(`  parcalanmadan: 1 adim, 0 sn ek sure, 0 MB ara durum, 1 hata noktasi — ama tek kosum ` +
  `sinirin ${(d.sn / SURE_SINIRI).toFixed(2)} kati oldugu icin calismaz`);
const g = ISLER['gece toplu is'], rg = parcala(g.sn, 0.8);
console.log(`  ayni %80 payla "gece toplu is" (${g.sn} sn): ${rg.adim} adim, ${rg.ek} sn ek sure, ` +
  `${rg.araMb} MB ara durum, ${rg.hata} hata noktasi`);

// Kalici baglanti: is parcalanamaz, baglanti kopar. Bedeli yeniden baglanma sayisiyla olculur.
const b = ISLER['kalici baglanti tutan servis'];
const kopma = Math.ceil(AY_SN / SURE_SINIRI) * b.baglanti;
console.log(`\n"kalici baglanti tutan servis": ${b.baglanti} baglanti, ortalama omur ${b.sn} sn`);
console.log(`  sinir ${SURE_SINIRI} sn oldugundan her baglanti ayda ${Math.ceil(AY_SN / SURE_SINIRI)} kez kopar: ` +
  `${kopma.toLocaleString('tr-TR')} yeniden baglanma; oturum durumu her seferinde disaridan okunur`);

// Surekli yukte basabas: hangi istek/sn'de kiralik makine ucuzlar.
const y = ISLER['yuksek ve surekli yuk'];
const Y = [12, 14, 14, 14, 10];
console.log('\nsurekli yukte basabas — istek/sn taranir');
console.log(satir(Y, 'istek/sn', 'es zamanli is', 'sunucusuz/ay', 'makine/ay', 'makine') + 'hangisi ucuz');
for (const r of [1, 10, 28, 100, 400]) {
  const i = { ...y, ay: Math.round(r * AY_SN), eszaman: Math.ceil(r * y.sn) };
  const s = sunucusuzAy(i), m = makineAy(i);
  console.log(satir(Y, r, i.eszaman, bir(s), bir(m), Math.max(1, Math.ceil(i.eszaman / MAKINE_ESZAMAN))) +
    (s < m ? 'sunucusuz' : 'kiralik makine'));
}
```

```
"uzun suren donusturme" 4200 sn, sinir 900 sn, ara durum 240 MB, sinir basina yazma 18 sn + okuma 12 sn
sinir payi  parca suresi  adim    ek sure    toplam sure  ara durum     hata noktasi  aylik birim
%40         353 sn        13      360 sn     4560 sn      2880 MB       25            13.95
%60         497 sn        9       240 sn     4440 sn      1920 MB       17            13.59
%80         630 sn        7       180 sn     4380 sn      1440 MB       13            13.40
%95         730 sn        6       150 sn     4350 sn      1200 MB       11            13.31
  parcalanmadan: 1 adim, 0 sn ek sure, 0 MB ara durum, 1 hata noktasi — ama tek kosum sinirin 4.67 kati oldugu icin calismaz
  ayni %80 payla "gece toplu is" (2700 sn): 4 adim, 90 sn ek sure, 720 MB ara durum, 7 hata noktasi

"kalici baglanti tutan servis": 800 baglanti, ortalama omur 1500 sn
  sinir 900 sn oldugundan her baglanti ayda 2880 kez kopar: 2.304.000 yeniden baglanma; oturum durumu her seferinde disaridan okunur

surekli yukte basabas — istek/sn taranir
istek/sn    es zamanli is sunucusuz/ay  makine/ay     makine    hangisi ucuz
1           1             2.50          70.08         1         sunucusuz
10          1             25.01         70.08         1         sunucusuz
28          3             70.04         70.08         1         sunucusuz
100         9             250           70.08         1         kiralik makine
400         36            1001          70.08         1         kiralik makine
```

Parçalama taraması şunu söylüyor: **parçalamanın bedeli işi yavaşlatmak değildir**. En kötü ayarda
bile toplam süre dört bin iki yüzden dört bin beş yüz altmış saniyeye çıkıyor, yüzde sekiz virgül
altı. Asıl fatura öteki üç sütunda. Sınır payı yüzde kırka çekildiğinde adım sayısı on üçe, ara
durum iki bin sekiz yüz seksen megabayta, hata noktası yirmi beşe çıkıyor; yüzde doksan beşte
bunlar altı adıma, bin iki yüz megabayta ve on bir hata noktasına iner — ama sınıra yaklaşmak,
süresi biraz uzayan bir parçanın sınırı aşması demektir.

Yani parçalama, tek hata noktalı bir işi on bir ile yirmi beş hata noktalı bir işe çevirir ve
aradaki her noktada bir ara durumun yazılıp okunmasına, dolayısıyla kalıcı bir depoya bağımlı hale
getirir. Aynı yüzde seksen ayarında gece toplu iş dört adım, doksan saniye ek süre, yedi yüz yirmi
megabayt ara durum ve yedi hata noktası ödüyor. Bunlar sunucusuzun kısıtından doğan, işin kendisinde
bulunmayan kalemlerdir.

Kalıcı bağlantı satırı parçalamanın sınırını gösteriyor. Bu iş **parçalanamaz**: sınıra gelindiğinde
kesilen şey hesaplama değil bağlantıdır. Sekiz yüz bağlantı ayda iki milyon üç yüz dört bin kez
kopar ve her koptuğunda oturum durumu dışarıdan yeniden okunur. Buradaki bedel bir yavaşlama değil,
bir tasarım değişikliğidir.

Başabaş taraması son ekseni bir sayıya bağlıyor. Saniyede yirmi sekiz isteğe kadar sunucusuz
ucuzdur; sonrasında kiralık makine ucuzlar ve dört yüz istekte fark on dört kata çıkar. Bu sayı
yedekliliği ve işletim emeğini saymıyor, yani gerçek başabaş noktası yirmi sekizin üstündedir.
Ölçünün söylediği şudur: sunucusuzun maliyet avantajı **doluluk oranıyla ters orantılıdır**.

## Hangi İş Uyar, Hangisi Uymaz

| İş türü | Uyar mı | Eşiği aşan kalem | Dolaşmanın bedeli |
|---|---|---|---|
| Kısa ve seyrek istek | **Uyar** | yok | yok — aylık 0,03 birim, makinenin 2.400'de biri |
| Gece toplu iş | **Parçalanırsa uyar** | süre sınırı: 2.700 sn, sınırın 3 katı | 4 adım, 90 sn, 720 MB ara durum, 7 hata noktası |
| Uzun süren dönüştürme | **Zorlanır** | süre sınırı: 4.200 sn, sınırın 4,67 katı + bellekte durum | 7 adım, 180 sn, 1.440 MB ara durum, 13 hata noktası |
| Kalıcı bağlantı tutan servis | **Uymaz** | bağlantı ömrü 900 sn < 1.500 sn + oturum durumu + maliyet 251 kat | parçalanamaz; ayda 2.304.000 yeniden bağlanma |
| Yüksek ve sürekli yük | **Uymaz** | birim maliyet: 28 istek/sn üstünde makine ucuzlar, 400'de 14 kat | yok — kısıt maliyettir, tasarımla dolaşılamaz |

## Özet

- Kısa ve seyrek istek sunucusuzda aylık sıfır virgül sıfır iki sekiz birim tutar, kiralık makinenin
  iki bin dört yüzde biri; sürekli açık makine bu işin neredeyse tamamında boş bekler.
- Gece toplu iş ve uzun süren dönüştürme maliyette kazanır ama süre sınırını üç ve dört virgül
  altmış yedi kat aşar; dönüştürme ayrıca durumu bellekte tutar.
- Kalıcı bağlantı tutan servis üç kalemi birden aşar ve sunucusuz karşılığı kiralık makinenin iki
  yüz elli bir katıdır; bağlantı beklerken de ücretlendirilir.
- Parçalamanın bedeli süre değildir: toplam süre en fazla yüzde sekiz virgül altı uzar. Bedel adım
  sayısı, ara durum ve hata noktasıdır — dönüştürmede altı ile on üç adım, bin iki yüz ile iki bin
  sekiz yüz seksen megabayt ve on bir ile yirmi beş hata noktası.
- Kalıcı bağlantı parçalanamaz: sınırda kesilen hesaplama değil bağlantıdır, ayda iki milyon üç yüz
  dört bin yeniden bağlanma demektir.
- Sürekli yükte başabaş noktası saniyede yirmi sekiz istektir; üstünde kiralık makine ucuzlar, dört
  yüz istekte fark on dört kat. Sunucusuzun maliyet avantajı doluluk oranıyla ters orantılıdır.

## Sonraki Adım

İşlevin sınırları sayıldı: süresi, belleği, eşzamanlılığı, paketi, yayını, geri alması ve nerede
kullanılamayacağı. Bu konu boyunca ölçülen her şey **tek bir işleve** aitti — bir istek girdi, bir
yanıt çıktı, arada bir sınır vardı. Oysa ölçüm ağının hiçbir işi tek işlevle bitmiyor: okuma gelince
doğrulama tetikleniyor, doğrulama bitince fatura üretiliyor, fatura üretilince bildirim gidiyor. Bu
zincirin kendisi hiç ölçülmedi. İşlevler birbirine nasıl bağlanacak — biri ötekini doğrudan mı
çağıracak, yoksa aralarına bir şey mi girecek? Sonraki konu bağlantının kendisini ölçer.
