---
title: 'Devralma Tasarımı'
source: 'https://academia.sh/tr/kurslar/dayaniklilik-kaliplari/devralma-tasarimi'
course: 'Dayanıklılık ve Güvenilirlik'
language: tr
updated: '2026-08-17T18:11:01+00:00'
license: 'CC BY-SA 4.0'
---

# Devralma Tasarımı

Devralmanın kurulum seçiminden sonra kalan üç kararı: terfiyi tetikleyen ardışık başarısız denetim eşiğinin yanlış devralma ile algılama gecikmesi arasında sayıyla seçilmesi, geri dönüş politikasının ikinci bir geçiş penceresi doğurması, yanıt veren ama işini yapamayan kopyanın sessizce yuttuğu yazmanın sayılması ve bütün bu geçişlerin aylık kesinti bütçesinin arıza payına çevrilmesi.

Önceki konu sekiz kalıpla arızayı çevreledi: devre kesici bozuk bağımlılığı yoldan çıkardı, bölme
kalıbı havuzları ayırdı, zaman aşımı bütçesi bekleyişi sınırladı, zarif bozulma çekirdek işlevi
ayakta tuttu. Hepsinin ortak sınırı aynıydı: arıza **çevrelendi**, kaldırılmadı. Bozuk parça hâlâ
bozuktur ve yerine geçecek kopyanın nasıl devreye gireceği tasarlanmadı.

Kurulumun kendisi Sistem Tasarımına Giriş kursunda ölçüldü: etkin–pasif düzende devralma
tamamlanana kadar yazma düşer, etkin–etkin düzende devralma penceresi yoktur ama çakışan yazma
doğar. O ölçüm burada **girdidir** ve tekrarlanmaz. Bu dersin sorusu bir katman yukarıdadır:
devralma ne zaman tetiklenir, eski etkin kopya geri geldiğinde ne olur, ayakta görünüp işini
yapamayan bir kopya neden devralma tetiklemez ve bu geçişler kesinti bütçesinden kaç saniye tutar.

## Kurulumdan Sonra Kalan Üç Karar

Kurulum seçimi bir kopyanın yazma kabul edip etmediğini söyler; geçişin kendisini tasarlamaz.
Geriye üç karar kalır.

**Tetikleme.** Kaç ardışık başarısız sağlık denetiminden sonra terfi başlatılır. Eşik 1 ise ilk
başarısız denetim geçişi başlatır; eşik 4 ise dört denetim beklenir. Denetimin **ne sorduğu** bir
sonraki dersin konusudur; bu modelde denetim yalnız "yanıt veriyor mu" sorar, yani sığdır.

**Geri dönüş.** Eski etkin kopya sağlığına kavuştuğunda etkinlik ona geri verilir mi, yoksa yeni
kopya kalıcı olarak etkin mi kalır. Geri dönüş kendi başına bir geçiştir ve kendi penceresini
üretir.

**Ayırt etme.** Yanıt veren ama işini yapamayan bir kopya nasıl görülür. Bu kopya sağlık
denetiminden geçtiği için hiçbir eşik onu yakalayamaz.

İki kopyanın aynı anda kendini etkin sanması ayrı bir sorundur; kira süresi ve iki liderli tur
Uygulama Katmanı ve Servis Etkileşimi kursunda kuruldu, burada tekrarlanmaz.

## Düzenek

Aşağıdaki düzenek bir **modeldir**: gerçek küme, bölge ya da kapsayıcı kurulmaz. Tur soyut bir
adımdır — Sistem Tasarımına Giriş kursundaki devralma modelinin düzeni sürdürülür. Arıza takvimi
parametredir: `A` kopyası iki kez kısa süre yanıtsız kalıp kendiliğinden döner, iki kez gerçekten
durur ve bir kez **yarı düşük** olur (ayakta, sığ denetimi geçiyor, ama durum deposuna
yazamıyor). `B` kopyası modelde hep ayaktadır; bu bir sadeleştirmedir ve iki kopyanın birlikte
düşmesi hesaba katılmaz.

```js
// devralma/model.mjs — etkin-pasif devralma MODELIDIR. Tur soyut bir adimdir (M19/K01
// erisilebilirlik kaliplari dersinin duzeni); algilama esigi, terfi ve ariza pencereleri
// tur cinsinden parametrelerdir, olculmus sure degildir. Gercek kume kurulmaz.
export const TUR = 130;
export const KESIK = [[12, 12], [20, 21]];   // A yanit vermiyor ama kendiliginden donecek
export const DURDU = [[30, 75], [90, 96]];   // A gercekten durdu
export const YARI = [[100, 120]];            // A ayakta ve sig denetimi geciyor, depoya yazamiyor
const TERFI = 1;                             // varsayim: terfi bir tur surer
const GERI_ESIK = 3;                         // varsayim: geri donus icin ardisik saglikli denetim

const icinde = (t, a) => a.some(([b, c]) => t >= b && t <= c);
export const yanitVeriyor = (t) => !icinde(t, KESIK) && !icinde(t, DURDU);
export const saglam = (t) => yanitVeriyor(t) && !icinde(t, YARI);

export function kosum({ esik, geriDonus, tur: N = TUR }) {
  const s = { dusen: 0, sessiz: 0, devralma: 0, yanlis: 0, donus: 0, pencere: 0 };
  let etkin = "A", ard = 0, iyi = 0, biter = null, yon = null;

  for (let t = 1; t <= N; t += 1) {
    const yanit = etkin === "A" ? yanitVeriyor(t) : true;   // B modelde hep ayakta

    if (biter !== null) {                                    // gecis penceresi suruyor
      s.pencere += 1; s.dusen += 1;
      if (t === biter) {
        // geriye donuk siniflama: eski etkin kendiliginden dondu, devralma gereksizdi
        if (yon === "devralma" && yanitVeriyor(t + 1)) s.yanlis += 1;
        etkin = yon === "devralma" ? "B" : "A";
        biter = null; yon = null; ard = 0; iyi = 0;
      }
      continue;
    }

    if (etkin === "A" && yanit === false) {                  // sig denetim: yalniz yanit
      ard += 1;
      s.dusen += 1;
      if (ard >= esik) { biter = t + TERFI; yon = "devralma"; s.devralma += 1; }
      continue;
    }
    ard = 0;

    if (etkin === "B" && geriDonus === "otomatik") {
      iyi = yanitVeriyor(t) ? iyi + 1 : 0;
      if (iyi >= GERI_ESIK) { biter = t + TERFI; yon = "donus"; s.donus += 1; iyi = 0; continue; }
    }

    if (etkin === "A" && saglam(t) === false) s.sessiz += 1; // yazma kabul edildi, depoya gitmedi
  }
  return s;
}

export function kalipsiz(N = TUR) {           // devralma yok: A neyse o
  let dusen = 0, sessiz = 0, kabul = 0;
  for (let t = 1; t <= N; t += 1) {
    if (yanitVeriyor(t) === false) dusen += 1;
    else if (saglam(t) === false) sessiz += 1;
    else kabul += 1;
  }
  return { kabul, dusen, sessiz };
}
```

```js
// devralma/olc.mjs — tetikleme esigi ile geri donus politikasinin ayni ariza takviminde olculmesi
import { kosum, kalipsiz, TUR, KESIK, DURDU, YARI } from "./model.mjs";

const s = (x, n) => String(x).padStart(n);
const uzunluk = (a) => a.reduce((t, [b, c]) => t + (c - b + 1), 0);
console.log(`${TUR} tur. A kopyasi: ${uzunluk(KESIK)} tur gecici yanitsiz, ` +
  `${uzunluk(DURDU)} tur durdu, ${uzunluk(YARI)} tur yari dusuk. B modelde hep ayakta.`);
const k = kalipsiz();
console.log(`kalipsiz duzen: kabul ${k.kabul}, dusen ${k.dusen}, sessiz kayip ${k.sessiz}`);
console.log();

console.log("esik | devralma | yanlis devralma | geri donus | gecis turu | dusen | sessiz kayip");
console.log("-----|----------|-----------------|------------|------------|-------|-------------");
for (const esik of [1, 2, 3, 4]) {
  const r = kosum({ esik, geriDonus: "otomatik" });
  console.log(`${s(esik, 4)} | ${s(r.devralma, 8)} | ${s(r.yanlis, 15)} | ${s(r.donus, 10)} | ` +
    `${s(r.pencere, 10)} | ${s(r.dusen, 5)} | ${s(r.sessiz, 12)}`);
}
console.log();

console.log("geri donus | esik | devralma | geri donus | gecis turu | dusen | etkin kopya degisimi");
console.log("-----------|------|----------|------------|------------|-------|---------------------");
for (const geriDonus of ["otomatik", "kalici"]) {
  const r = kosum({ esik: 3, geriDonus });
  console.log(`${geriDonus.padEnd(10)} | ${s(3, 4)} | ${s(r.devralma, 8)} | ${s(r.donus, 10)} | ` +
    `${s(r.pencere, 10)} | ${s(r.dusen, 5)} | ${s(r.devralma + r.donus, 20)}`);
}
```

```
130 tur. A kopyasi: 3 tur gecici yanitsiz, 53 tur durdu, 21 tur yari dusuk. B modelde hep ayakta.
kalipsiz duzen: kabul 53, dusen 56, sessiz kayip 21

esik | devralma | yanlis devralma | geri donus | gecis turu | dusen | sessiz kayip
-----|----------|-----------------|------------|------------|-------|-------------
   1 |        4 |               2 |          4 |          8 |    12 |           20
   2 |        3 |               1 |          3 |          6 |    13 |           20
   3 |        2 |               0 |          2 |          4 |    13 |           20
   4 |        2 |               0 |          2 |          4 |    15 |           20

geri donus | esik | devralma | geri donus | gecis turu | dusen | etkin kopya degisimi
-----------|------|----------|------------|------------|-------|---------------------
otomatik   |    3 |        2 |          2 |          4 |    13 |                    4
kalici     |    3 |        1 |          0 |          1 |     7 |                    1
```

## Eşiğin İki Yüzü

Kalıpsız satır karşılaştırmanın tabanıdır: devralma olmadan 130 turun 56'sında yazma kabul edilmez.
Eşik 3 ile aynı takvimde düşen tur 13'e iner — kalıbın arızalı gündeki kazancı budur.

Eşik sütunu ödünleşimi iki yönlü gösteriyor. **Eşik küçüldükçe yanlış devralma artıyor.** Eşik 1,
kendiliğinden dönecek iki kesintiyi de geçiş olarak işledi: 4 devralmanın 2'si yanlış devralmadır,
yani eski etkin kopya terfi biter bitmez yanıt vermeye başlamıştı. Eşik 2 bunlardan birini
yakaladı, eşik 3 ve 4 hiçbirini tetiklemedi.

**Eşik büyüdükçe algılama gecikiyor.** Gerçek durmanın başladığı turdan geçişin tamamlandığı tura
kadar geçen süre eşik kadar uzar; düşen tur eşik 3'te 13, eşik 4'te 15'tir. Toplam tek yönlü
değildir: eşik 1 ile eşik 3 arasında düşen tur 12 ve 13 gibi birbirine yakın çıkıyor, çünkü eşik
1'in kazandığı algılama hızını yanlış devralmanın penceresi geri alıyor. **Eşik seçimi bir hız
kararı değil, iki maliyeti dengeleyen bir karardır**; dengenin yeri arıza takvimine bağlıdır.

Sessiz kayıp sütunu dört satırda da 20'dir. Eşik ne seçilirse seçilsin değişmiyor, çünkü yarı
düşük kopya sığ denetimi geçiyor ve sayaç hiç artmıyor.

## Geri Dönüş İkinci Bir Penceredir

İkinci tablo aynı eşikle iki geri dönüş politikasını karşılaştırıyor. Otomatik geri dönüşte etkin
kopya dört kez değişiyor (2 devralma, 2 geri dönüş) ve geçiş turu 4; kalıcı politikada tek bir
değişim ve tek bir geçiş turu var. Düşen tur 13'ten 7'ye iniyor.

Fark iki yerden geliyor. Birincisi, her geri dönüş kendi penceresini üretir. İkincisi ve daha
önemlisi, otomatik geri dönüş sistemi **aynı kopyaya yeniden bağlar**: modelin takviminde `A`
kopyası ilk durmadan sonra geri dönüyor, etkinlik ona veriliyor ve az sonra ikinci kez duruyor.
Kalıcı politikada bu ikinci durma hiç kesinti üretmez, çünkü etkin kopya artık `B`'dir.

Otomatik geri dönüşün karşılığı işletme tarafındadır: kopyaların rolleri bilinen bir düzene döner.
Karar, ölçülen iki sayının karşılaştırılmasıdır: 6 fazla düşen tur karşılığında bilinen bir
yerleşim.

## Yanıt Veren Ama Yazmayan Kopya

Yarı düşük pencere bu modelin en sessiz kısmıdır. Kopya ayaktadır, sağlık denetimini geçer ve istek
kabul eder — ama kabul ettiği yazma durum deposuna ulaşmaz. Kalıpsız düzende 21, kalıplı düzende
20 tur boyunca yazma **kabul edildi ve kayboldu**. Kesinti bütçesi bu turları hiç görmez, çünkü
sistem yanıt veriyordu.

## İki Günün Sayısı

Turlar ancak bir çevrim varsayımıyla bütçeye çevrilir. Bu kursun kendi varsayımları K01'in
tablosuna eklenmez, kendi adlarıyla anılır. **KU1 — bir tur bir sağlık denetimi aralığıdır, 2
saniye.** **KU2 — ayda 2 gerçek durma**; gerekçesi K01'in arıza payının ayda 2,82 arıza
kaldırmasıdır. **KU3 — ayda 20 geçici yanıtsızlık**; gerekçesi kısa duraklamaların gerçek
durmalardan sık olmasıdır. Kurtarma süresi, tepe yazma ve arıza payı K01'den okunur.

```js
// devralma/butce.mjs — model turlarinin K01'in kesinti butcesine ve istek sayisina cevrilmesi
const TUR_SN = 2;          // KU1 (varsayim): bir tur bir saglik denetimi araligi, 2 saniye
const GERCEK_AY = 2;       // KU2 (varsayim): ayda 2 gercek durma
const KESIK_AY = 20;       // KU3 (varsayim): ayda 20 gecici yanitsizlik
const KURTARMA_SN = 600;   // K01: kurtarma suresi varsayimi 10 dakika
const ARIZA_PAYI = 28.2;   // K01: aylik kesinti butcesinin ariza payi (dakika)
const TEPE_YAZMA = 97.22;  // K01: tepe yazma istek/s
const TEPE_UC = 513.89;    // K01: tepe uctaki istek/s
const TERFI = 1;
const b = (x, n = 2) => x.toFixed(n);

console.log(`${"esik".padStart(5)}${"gecis penceresi".padStart(17)}${"gercek durma (ay)".padStart(19)}` +
  `${"yanlis devralma (ay)".padStart(22)}${"toplam kesinti".padStart(16)}${"ariza payinin".padStart(15)}`);
for (const esik of [1, 2, 3, 4]) {
  const pencere = (esik + TERFI) * TUR_SN;
  const gercek = GERCEK_AY * pencere;
  const yanlis = esik <= 2 ? KESIK_AY * (pencere + TERFI * TUR_SN) : 0;  // esik 3+ kisa kesinti tetiklemiyor
  const toplam = gercek + yanlis;
  console.log(`${String(esik).padStart(5)}${(pencere + " sn").padStart(17)}${(b(gercek, 1) + " sn").padStart(19)}` +
    `${(b(yanlis, 1) + " sn").padStart(22)}${(b(toplam / 60, 2) + " dk").padStart(16)}` +
    `${("%" + b((100 * toplam) / 60 / ARIZA_PAYI, 2)).padStart(15)}`);
}

const kalipsiz = GERCEK_AY * KURTARMA_SN;
console.log(`\nkalipsiz duzen: ayda ${GERCEK_AY} durma x ${KURTARMA_SN} sn = ${b(kalipsiz / 60, 1)} dk, ` +
  `ariza payinin %${b((100 * kalipsiz) / 60 / ARIZA_PAYI, 1)}'i`);
const esik3 = GERCEK_AY * (3 + TERFI) * TUR_SN;
console.log(`esik 3 ile ayni iki durma: ${esik3} sn, oran ${b(kalipsiz / esik3, 1)} kat kisalma`);
console.log(`pencerede dusen: ${b((3 + TERFI) * TUR_SN * TEPE_YAZMA)} yazma, ` +
  `${b((3 + TERFI) * TUR_SN * TEPE_UC)} uc istegi (tepe yukte)`);

const SESSIZ_TUR = 20;     // modelden: yari dusuk pencerede kabul edilen ama depoya gitmeyen turlar
console.log(`\nyari dusuk pencere: ${SESSIZ_TUR} tur x ${TUR_SN} sn = ${SESSIZ_TUR * TUR_SN} sn, ` +
  `${b(SESSIZ_TUR * TUR_SN * TEPE_YAZMA)} yazma sessizce kayboldu`);
console.log(`bu pencere kesinti butcesinde gorunmez: sistem yanit veriyordu`);

console.log();
for (const kopya of [2, 3]) {                 // etkin-etkin: bozuk kopya havuzun 1/k'sini tasiyor
  console.log(`etkin-etkin ${kopya} kopya: devreden cikarma penceresinde ` +
    `${b(((3 + TERFI) * TUR_SN * TEPE_YAZMA) / kopya)} yazma duser, ` +
    `yari dusuk pencerede ${b((SESSIZ_TUR * TUR_SN * TEPE_YAZMA) / kopya)} yazma sessizce kaybolur`);
}
```

```
 esik  gecis penceresi  gercek durma (ay)  yanlis devralma (ay)  toplam kesinti  ariza payinin
    1             4 sn             8.0 sn              120.0 sn         2.13 dk          %7.57
    2             6 sn            12.0 sn              160.0 sn         2.87 dk         %10.17
    3             8 sn            16.0 sn                0.0 sn         0.27 dk          %0.95
    4            10 sn            20.0 sn                0.0 sn         0.33 dk          %1.18

kalipsiz duzen: ayda 2 durma x 600 sn = 20.0 dk, ariza payinin %70.9'i
esik 3 ile ayni iki durma: 16 sn, oran 75.0 kat kisalma
pencerede dusen: 777.76 yazma, 4111.12 uc istegi (tepe yukte)

yari dusuk pencere: 20 tur x 2 sn = 40 sn, 3888.80 yazma sessizce kayboldu
bu pencere kesinti butcesinde gorunmez: sistem yanit veriyordu

etkin-etkin 2 kopya: devreden cikarma penceresinde 388.88 yazma duser, yari dusuk pencerede 1944.40 yazma sessizce kaybolur
etkin-etkin 3 kopya: devreden cikarma penceresinde 259.25 yazma duser, yari dusuk pencerede 1296.27 yazma sessizce kaybolur
```

**Arızalı günün kazancı** ilk iki satırın karşılaştırmasıdır. Devralma olmadan aynı iki durma
kurtarma süresi kadar sürer: 20,0 dakika, yani arıza payının yüzde 70,9'u. İki durma bütçenin
neredeyse tamamını yer ve ayda üçüncü bir durma hedefi kırar. Eşik 3 ile aynı iki durma 16 saniye
tutar — 75 kat kısalma — ve arıza payının yüzde 0,95'ini harcar. Bu oran koşumdan bağımsız
türetilmiş bir niceliktir; makineye değil, kurtarma süresi ile geçiş penceresinin oranına bağlıdır.

**Arızasız günün bedeli** yanlış devralma sütunundadır. Eşik 1'de ayda 20 geçici yanıtsızlık,
hiçbiri gerçek arıza olmadığı hâlde 120 saniye kesinti üretiyor; eşik 2'de 160 saniye. İki satırda
da arızasız günün bedeli arızalı günün maliyetinden büyüktür: eşik 2'de 160 saniyeye karşı 12
saniye. Eşik 3'te bedel sıfıra iner ve karşılığında gerçek durmanın penceresi 4 saniyeden 8
saniyeye çıkar. Kalıbın arızasız gündeki ikinci bedeli aritmetikte görünmez: pasif kopya bütün
kapasitesini taşır ve hiç istek yanıtlamaz.

Pencerenin tek seferlik faturası da yazılır: sekiz saniyelik bir geçişte tepe yükte 777,76 yazma ve
uçta 4.111,12 istek düşer. Kesinti bütçesi ortalamayı ölçtüğü için bu yoğunlaşmayı göstermez.

Son iki satır kurulum farkını sayıya bağlıyor. Etkin–etkin düzende geçiş penceresi hizmetin
tamamını durdurmaz, yalnız bozuk kopyanın payını düşürür: iki kopyada 388,88, üç kopyada 259,25
yazma. Aynı bölme sessiz kayıp için de geçerlidir — üç kopyalı düzende 3.888,80 yerine 1.296,27.
Etkin–etkin kurulum arızayı ucuzlatmaz, **böler**; K01'in ölçtüğü çakışan yazma bu bölmenin
karşılığıdır.

## Özet

- Kurulum seçiminden sonra üç karar kalır: terfiyi tetikleyen eşik, eski etkin kopyaya geri dönüş
  politikası ve yanıt veren ama işini yapamayan kopyanın ayırt edilmesi.
- Eşik iki maliyeti dengeler: eşik 1 kendiliğinden dönecek iki kesintiyi de geçişe çevirdi (2
  yanlış devralma), eşik 4 algılamayı geciktirdi (15 düşen tur); toplam düşen tur 12 ile 15
  arasında dar bir aralıkta kaldı.
- Geri dönüş kendi penceresini üretir: otomatik politikada 4 geçiş ve 13 düşen tur, kalıcı
  politikada 1 geçiş ve 7 düşen tur.
- Hiçbir eşik yarı düşük kopyayı yakalamıyor: sessiz kayıp dört eşikte de 20 tur; sığ denetim
  yanıt aldığı için sayaç hiç artmıyor.
- KU1–KU3 varsayımlarıyla arızalı günün kazancı 20,0 dakikadan 16 saniyeye iniştir: 75 kat kısalma
  ve arıza payının yüzde 70,9 yerine yüzde 0,95'i.
- Arızasız günün bedeli eşik 1'de ayda 120, eşik 2'de 160 saniye yanlış devralma kesintisidir;
  eşik 3'te sıfırlanır, karşılığında geçiş penceresi 4 saniyeden 8 saniyeye çıkar.

## Sonraki Adım

Bu dersin bütün kararları tek bir girdiye dayandı: sağlık denetiminin verdiği evet ya da hayır. O
girdi yanlış olduğunda eşik de, geri dönüş politikası da anlamını yitiriyor — modelin yarı düşük
penceresinde 3.888,80 yazma, sistem sağlıklı görünürken kayboldu. Sonraki ders denetimin
**içeriğini** tasarlar: ucun bağımlılıklarına bakıp bakmadığı, bağımlılığı denetime katmanın bütün
kopyaları birden sağlıksız işaretleme riski, trafik almaya hazır olmakla ayakta olmanın ayrılması
ve denetim aralığının algılama gecikmesi ile yanlış devralma arasında nereye oturduğu.
