---
title: 'Kapı Bekçisi Kalıbı'
source: 'https://academia.sh/tr/kurslar/trafik-katmani/kapi-bekcisi-kalibi'
course: 'Trafik Katmanı'
language: tr
updated: '2026-08-17T18:11:03+00:00'
license: 'CC BY-SA 4.0'
---

# Kapı Bekçisi Kalıbı

Doğrulamanın ayrı bir katmana yalıtılması: kapıda verilebilen denetimlerle uygulamada kalması gerekenlerin ayrılması, geçersiz isteğin uygulamaya ulaşma oranının ve taşıdığı baytın ölçülmesi, güvenilmeyen girdiye dokunan birim sayısının düşürülmesi ve sonucun K01'in uçtaki tepe hızına uygulanması.

Beş ders boyunca kenara yerleştirilen her iş bir kazanç ve bir bedelle yazıldı, ama hepsinin
ortak bir kabulü vardı: kenara ulaşan istek işlenmeye değer bir istektir. Uçtaki tepe hızın bir
bölümü ise hiçbir zaman yanıtlanmayacak isteklerden oluşur — tanınmayan yollar, zorunlu alanı
eksik gövdeler, sınırı aşan boyutlar, biçimsiz belirteçler.

**Kapı bekçisi** (gatekeeper), doğrulamayı ayrı bir katmana yalıtan yerleşimdir: güvenilmeyen
girdiyi yalnız bu katman görür, uygulama yalnız doğrulanmış ve normalleştirilmiş isteği alır.
Ağ geçidinden farkı sorumluluk kapsamıdır; ağ geçidi yönlendirir, toplar ve boşaltılmış işleri
yapar, kapı bekçisi tek bir soru sorar: bu istek uygulamaya ulaşmalı mı. Bu ders o sorunun kaç
istekte "hayır" olduğunu ölçer.

## Kapıda Verilebilen Doğrulama

Üçüncü dersin taşınabilirlik kuralı burada da geçerlidir: yalnız isteğin kendisine bakan bir
denetim kapıda verilebilir, alan verisine bakan bir denetim veremez. Model bunu iki denetim
kümesiyle ayırır ve altmış istekten oluşan belirlenimli bir küme üzerinde koşturur. Küme
kurgudur: altı kusur türünün her biri beşer kez geçer, çünkü ölçülmek istenen şey gerçekçi bir
hata oranı değil, **kusurların hangisinin kapıda tutulabildiğidir**.

```js
// kapi/istek.mjs — belirlenimli istek kumesi ve iki dogrulama katmani; surec ici model
export const GONDERI = { "TR-4821": { sahip: "M7" }, "TR-9007": { sahip: "M3" } };
const TEMEL = { yol: "/takip", takipNo: "TR-4821", belirtec: "b.M7.imza", govdeBayt: 120 };

// Her on ikinci istekte bir kusur; kume 60 istekten olusur, alti kusur turu beser kez gecer.
export function kume(n = 60) {
  const KUSUR = {
    6: { yol: "/yok" },                    // taninmayan yol
    7: { takipNo: undefined },             // sema: zorunlu alan eksik
    8: { govdeBayt: 9000 },                // govde boyutu asimi
    9: { belirtec: "bozuk" },              // bicimsiz belirtec
    10: { takipNo: "TR-0001" },            // kayitli olmayan gonderi
    11: { belirtec: "b.M3.imza" },         // baskasinin gonderisi
  };
  return Array.from({ length: n }, (_, i) => ({ ...TEMEL, ...(KUSUR[i % 12] ?? {}) }));
}

// Kapi bekcisi: yalnizca istegin kendisine bakar (yol, sema, boyut, belirtec bicimi).
export const KAPI = {
  yol: (r) => r.yol === "/takip",
  sema: (r) => typeof r.takipNo === "string" && /^TR-\d{4}$/.test(r.takipNo),
  boyut: (r) => r.govdeBayt <= 2048,
  belirtec: (r) => /^b\.M\d+\.imza$/.test(r.belirtec),
};

// Uygulama: alan verisine bakan iki dogrulama; kapida verilemez.
export const UYGULAMA = {
  varlik: (r) => GONDERI[r.takipNo] !== undefined,
  yetki: (r) => GONDERI[r.takipNo]?.sahip === r.belirtec.split(".")[1],
};

export const gecer = (denetimler, r) => Object.values(denetimler).every((d) => d(r));
```

Belirteç doğrulama Kimlik Doğrulama ve Yetkilendirme kursunda kuruldu; buradaki `belirtec`
denetimi imzayı sınamaz, yalnız biçimi sınar — kapıda verilebilecek olan budur.

```js
// kapi/olc.mjs — kapi bekcisi olan ve olmayan yerlesimi olcer, sonra K01 hesabina baglar
import { kume, KAPI, UYGULAMA, gecer } from "./istek.mjs";

const istekler = kume();
const gecersiz = istekler.filter((r) => !(gecer(KAPI, r) && gecer(UYGULAMA, r)));
const kapidaTutulan = gecersiz.filter((r) => !gecer(KAPI, r));

const bayt = (liste) => liste.reduce((t, r) => t + r.govdeBayt, 0);
const ulasan = (kapiVar) => (kapiVar ? istekler.filter((r) => gecer(KAPI, r)) : istekler);

const ALAN = ["uygulamaya ulasan istek", "uygulamaya ulasan gecersiz istek",
  "uygulamaya ulasan govde bayti", "guvenilmeyen girdiye dokunan birim",
  "uygulamanin disa acik adresi", "dogrulama kodu tasiyan birim"];
const olc = (kapiVar) => {
  const u = ulasan(kapiVar);
  return {
    "uygulamaya ulasan istek": `${u.length}/${istekler.length}`,
    "uygulamaya ulasan gecersiz istek": u.filter((r) => !gecer(UYGULAMA, r) || !gecer(KAPI, r)).length,
    "uygulamaya ulasan govde bayti": bayt(u),
    "guvenilmeyen girdiye dokunan birim": kapiVar ? 1 : 3,
    "uygulamanin disa acik adresi": kapiVar ? 0 : 1,
    "dogrulama kodu tasiyan birim": kapiVar ? 1 + 3 : 3,
  };
};

const olcum = [["kapi yok", olc(false)], ["kapi bekcisi", olc(true)]];
console.log(`${"olcu".padEnd(36)}${olcum.map(([a]) => a.padStart(14)).join("")}`);
for (const a of ALAN) console.log(`${a.padEnd(36)}${olcum.map(([, o]) => String(o[a]).padStart(14)).join("")}`);

const oran = kapidaTutulan.length / gecersiz.length;
console.log(`\ngecersiz istek = ${gecersiz.length}/${istekler.length}, ` +
  `kapida tutulan = ${kapidaTutulan.length}, kapida tutulamayan = ${gecersiz.length - kapidaTutulan.length}`);
console.log(`kapinin tuttugu gecersiz orani = ${oran.toFixed(3)} (${Object.keys(KAPI).length} kapi ` +
  `denetimi, ${Object.keys(UYGULAMA).length} uygulama denetimi)`);

// K01 Kabaca Buyukluk Hesabi: uctaki tepe 513.89, tepe okuma 416.67 istek/s (hesap sinifi)
const UC_TEPE = 513.89, OKUMA_TEPE = 416.67, ONBELLEK_ARKASI = 41.67;
console.log(`\n${"T3".padEnd(6)}${"kapinin arkasina istek/s".padStart(25)}${"okuma/s".padStart(11)}` +
  `${"onbellek arkasi/s".padStart(19)}`);
for (const T3 of [0.08, 0.16]) {                       // T3: uctaki isteklerin gecersiz orani
  const kalan = 1 - T3 * oran;
  console.log(`${T3.toFixed(2).padEnd(6)}${(UC_TEPE * kalan).toFixed(2).padStart(25)}` +
    `${(OKUMA_TEPE * kalan).toFixed(2).padStart(11)}${(ONBELLEK_ARKASI * kalan).toFixed(2).padStart(19)}`);
}
console.log(`kapi yok (T3 = 0.08 icin bile) -> ${UC_TEPE.toFixed(2)} istek/s, ` +
  `${OKUMA_TEPE.toFixed(2)} okuma/s, ${ONBELLEK_ARKASI.toFixed(2)} onbellek arkasi/s`);
```

```
olcu                                      kapi yok  kapi bekcisi
uygulamaya ulasan istek                      60/60         40/60
uygulamaya ulasan gecersiz istek                30            10
uygulamaya ulasan govde bayti                51600          4800
guvenilmeyen girdiye dokunan birim               3             1
uygulamanin disa acik adresi                     1             0
dogrulama kodu tasiyan birim                     3             4

gecersiz istek = 30/60, kapida tutulan = 20, kapida tutulamayan = 10
kapinin tuttugu gecersiz orani = 0.667 (4 kapi denetimi, 2 uygulama denetimi)

T3     kapinin arkasina istek/s    okuma/s  onbellek arkasi/s
0.08                     486.48     394.45              39.45
0.16                     459.08     372.23              37.23
kapi yok (T3 = 0.08 icin bile) -> 513.89 istek/s, 416.67 okuma/s, 41.67 onbellek arkasi/s
```

## Sayıların Okunması

Otuz geçersiz isteğin yirmisi kapıda tutuluyor, onu tutulamıyor: oran 0,667. Tutulamayanlar
kayıtlı olmayan gönderiyi soran ve başkasının gönderisini isteyen isteklerdir; ikisi de gönderi
kaydını okumadan ayırt edilemez. Kapı bekçisi bu yüzden doğrulamayı **kaldırmaz**, ikiye böler
ve `dogrulama kodu tasiyan birim` sayısı 3'ten 4'e çıkar. Kalıbın adı yanıltıcı olabilir: kapı,
uygulamanın kendi doğrulamasının yerine geçmez.

Bayt satırı en büyük farkı veriyor: uygulamaya ulaşan gövde 51.600 bayttan 4.800 bayta iniyor,
0,093 katına. Düşüşün neredeyse tamamı boyutu aşan beş istekten geliyor. Uygulamaya ulaşmayan
istek yalnız bir işlem tasarrufu değil, ayrıştırılmayan bir gövdedir.

Son iki satır kalıbın asıl amacını taşıyor. `guvenilmeyen girdiye dokunan birim` 3'ten 1'e,
`uygulamanin disa acik adresi` 1'den 0'a iniyor. Ham gövdeyi ayrıştıran, biçimini sınayan ve
sınırı aşanı reddeden kod tek bir birimde toplanır; uygulama birimleri yalnız kapıdan geçmiş,
biçimi bilinen bir istek görür. Bu, üçüncü dersteki güven sınırı sorusunun aynısıdır ve aynı
bedeli taşır: kapı atlanabiliyorsa 0/3 koruma varsayımı çöker.

## Hesaba Dönüş

Modelin geçersiz oranı (30/60) gerçekçi değildir ve öyle sunulmaz. Gerçek oran **bu kursun
varsayımıdır** (T3 = 0,08: uçtaki isteklerin yüzde sekizi biçimsel olarak geçersizdir).
Gerekçesi eski istemci sürümlerinin, süresi dolmuş belirteçlerin ve tarayıcı yeniden
denemelerinin sürekli bir taban üretmesidir; K01'in tablosuna eklenmez, çünkü K01 yalnız
yanıtlanan isteği sayıyordu. Modelden gelen 0,667 ise varsayım değil, denetim listelerinden
çıkan bir orandır.

İkisi birleştiğinde K01'in üç sayısı birden oynuyor. Uçtaki tepe 513,89 istek/s, kapının
arkasına 486,48 istek/s olarak geçiyor; tepe okuma 416,67'den 394,45'e, `onbellek arkasi
okuma/s` 41,67'den 39,45'e iniyor. Kapı yokken üçü de değişmiyor. T3 iki katına çıktığında —
yüzde on altı geçersiz — sayılar 459,08, 372,23 ve 37,23 oluyor: kazanç T3 ile doğru orantılı
büyüyor, çünkü kapının tuttuğu pay sabit.

Sayıların büyüklüğü de okunmalı: yüzde sekiz geçersizin üçte ikisi tutulduğunda uçtaki hız
yalnız 0,947 katına iniyor. Kapı bekçisi bir ölçekleme aracı değildir; kazandırdığı asıl sayı
üstteki tablodadır — güvenilmeyen girdiye dokunan birim ve uygulamanın dışa açık adresi.

## Özet

- Kapı bekçisi doğrulamayı ayrı bir katmana yalıtır: güvenilmeyen girdiyi yalnız o katman görür,
  uygulama doğrulanmış isteği alır.
- Kapıda verilebilen denetim isteğin kendisine bakandır; altmış istekli kümede otuz geçersizin
  yirmisi kapıda tutuldu, onu tutulamadı (oran 0,667).
- Doğrulama kaldırılmaz, bölünür: doğrulama kodu taşıyan birim 3'ten 4'e çıkıyor.
- Uygulamaya ulaşan istek 60/60'tan 40/60'a, gövde 51.600 bayttan 4.800 bayta (0,093 katına)
  iniyor; düşüşün neredeyse tamamı boyutu aşan isteklerden gelir.
- Kalıbın asıl kazancı yalıtımdır: güvenilmeyen girdiye dokunan birim 3'ten 1'e, uygulamanın
  dışa açık adresi 1'den 0'a iniyor.
- K01'e dönüş (T3 = 0,08 varsayımıyla): uçtaki 513,89 istek/s kapının arkasında 486,48'e, tepe
  okuma 416,67'den 394,45'e, önbellek arkası okuma 41,67'den 39,45'e iniyor; T3 = 0,16'da
  sırasıyla 459,08, 372,23 ve 37,23.

## Kurs Kapanışı

Kurs, isteğin kullanıcıdan uygulamaya kadarki yolunu durak durak tasarladı ve her durakta aynı
üç soruyu sordu: bu durak hangi kararı veriyor, giriş kursunun hesabındaki hangi sayıyı
oynatıyor, karşılığında hangi sayı büyüyor. Derslerin bıraktığı ölçüler aşağıdaki tabloda
toplanıyor.

| Ders | Durağın kararı | Oynadığı K01 sayısı | Karşılığında büyüyen |
|---|---|---|---|
| Alan Adı Sistemi Tasarımı | yönlendirme politikası | gecikmeye göre 1,171 mesafe birimi (coğrafi 1,710, ağırlıklı 2,144) | devralma penceresi 39–905 sn, aylık kesinti bütçesinin %0,50–%14,28'i |
| İçerik Dağıtım Ağları | önbelleğin konumu | uygulamaya ulaşan okuma 416,67 → 41,76 istek/s | 480 baytlık gövde telde 653 bayt (1,360); depoya ulaşan istek 138,89'da kaldı |
| İtme ve Çekme Tabanlı Dağıtım | içeriğin yayma modeli | çekmede kökene 42,34 istek/s — K01'in 41,67'si korunuyor | itmede tepe 1.166,64 itme/s, 4,48 Mbit/s ve kenarlarda 6,91 GB |
| Statik İçerik Barındırma | içerik yolunun ayrılması | uygulama süreci 3.291,67 → 513,89 istek/s, 241,60 → 1,60 Mbit/s | 2.777,78 istek/s ve 240,00 Mbit/s içerik sürecine geçti |
| Yük Dengeleyici Rolü | dağıtım + sağlık denetimi | 513,89 istek/s en az 3 kopya; arıza başına düşen istek 102.778 → 34,26 | denetimin kendi yükü 15 istek/s, uçtaki yükün %2,9'u |
| Katman 4 Dengeleme | bağlantı düzeyinde dağıtım | karar 51,39 karar/s (63 istek için 6) | istek sapması 4,00; hedefi tutmak 3 yerine 5 kopya |
| Katman 7 Dengeleme | içerik farkındalıklı yönlendirme | istek sapması 4,00 → 1,07, akışlar ayrı havuzlarda | karar 51,39 → 513,89 karar/s; 3 yerine 4 kopya |
| Dengeleme Algoritmaları | dağıtım algoritması | yer değiştiren anahtar %74,98 → %22,46 | ısınmada depoya ulaşan 138,89 → 223,13 istek/s (bölme kalanıyla 420,07) |
| Yük Dengeleyici ve Ters Vekil | rollerin ayrılması | kopya listesi düştüğünde içerik yolu 6/6 yanıtlandı | durak 2 → 3; tek kopyalı duraklarla aylık kesinti 215,6 → 258,6 dk |
| Oturum Yapışkanlığı | durumun kopyaya bağlanması | 0,50 doluluk hedefi için gereken kopya 3 → 4 | dengesizlik 1,000 → 1,173; bir kopya düşünce oturumların 33/100'ü ve isteklerin %39,11'i kayboluyor |
| API Ağ Geçidi | kenar sorumluluklarının yeri | tekrarlanan satır 135 → 45, sorumluluk başına birim 3 → 1 | uçtaki 513,89 istek/s tek bileşende; durak-istek/s 513,89 → 1027,78; geçit durunca 0/3 |
| Ağ Geçidi Yönlendirme ve Toplama | tek istekte çoklu çağrı | uçtaki istek 833,34 → 416,67 istek/s (×0,50) | gövde 405 → 764 bayt; çıkış 1,60 → 2,55 Mbit/s |
| Ağ Geçidi Yük Boşaltma | denetimin kenara taşınması | satır 171 → 107; 4/6 denetim kenarda, 513,89 istek/s'de koşuyor | korumasız servis 0/3 → 3/3, ya da doğrulama 513,89 → 1027,78 kez/s |
| Ön Yüz İçin Backend | istemciye özel gövde | kullanılmayan alan 37 → 0; 583,34 → 416,67 istek/s, 3,56 → 1,90 Mbit/s | kenar birimi 1 → 3; servisin sunması gereken toplu uç 0 → 2 |
| Elçi ve Yan Araba Kalıpları | ortak işin ayrı sürece verilmesi | servisin gördüğü sözleşme 1 (dış 2); kullanabilen birim 4/6 → 6/6 | toplam süreç 6 → 12; durak-istek/s 1027,78 → 1541,67 |
| Kapı Bekçisi Kalıbı | doğrulamanın yalıtılması | kapının arkasına 513,89 → 486,48 istek/s; okuma 416,67 → 394,45 | doğrulama kodu taşıyan birim 3 → 4; kapıda tutulamayan geçersiz 10/30 |

Tablonun kuralı adıyla anılmalı: **her durak, giriş kursunun varsayım tablosundan çıkan
hesaplara geri bağlandı.** Kenarda alınan bir kararın ölçüsü üç sayıdan biridir — uygulamaya
ulaşan istek, sınırdan geçen bayt ve bir birim düştüğünde yanıtlanan istek oranı. Bu üçünden
birine bağlanmayan bir kenar kararı, savunulabilir bir karar değildir; sağ kolonun hiçbir satırda
boş olmaması da bunun öteki yarısıdır. Kursun eklediği üç varsayım (takip sayfasının ücreti de
istemesi, istemci karışımı, geçersiz istek oranı) K01'in tablosuna karışmadı; kendi adlarıyla,
gerekçeleriyle ve duyarlılıklarıyla yazıldı.

Kursun bıraktığı soru bir katman ileridedir. İstek artık uygulamaya ulaştı: adı çözüldü, kenar
önbelleğinden geçti, bir kopyaya düştü, ağ geçidinden ve kapıdan geçti. Ama uygulamanın kendi
içindeki servis etkileşimi tasarlanmadı — servislerin durumsuz olup olmadığı, birbirlerinin
adresini nasıl buldukları, bir çağrı yanıt vermediğinde ne kadar bekleyip kaç kez deneyecekleri
ve birden çok servise yayılan bir iş akışının koreografiyle mi orkestrasyonla mı kurulacağı.
Bu kursun ağ geçidi, iki servisi paralel çağırıp yanıtlarını birleştirirken bu soruların
hepsine sessizce bir yanıt varsaydı. Sonraki kurs **Uygulama Katmanı ve Servis Etkileşimi** o
varsayımları açar.
