---
title: 'Tasarım Çerçevesinin Sütunları'
source: 'https://academia.sh/tr/kurslar/bulut-temelleri/iyi-tasarlanmis-cerceve'
course: 'Bulut Temelleri'
language: tr
updated: '2026-08-17T18:06:54+00:00'
license: 'CC BY-SA 4.0'
---

# Tasarım Çerçevesinin Sütunları

Bir karar kümesinin beş sütunda puanlanması ve sütunlar arası gerilimin sayılması: kaç kararın bir sütunu yükseltirken başkasını düşürdüğü, en gergin sütun çiftinin hangisi olduğu, hiçbir kararın iyileştirmediği sütunun çıkarılması ve devredilen kararların sütun profili ile çıkışta taşınamayan payı.

İlk iki ders coğrafyayı iki ayrı eksende ölçtü ve her ikisi de aynı yapıda bitti: bir karar bir
sayıyı yükseltti, başka bir sayıyı düşürdü. Üç alana yayılmak ayakta kalan kalemi yükseltti, kirayı
ve eşzamanlı yazma süresini bozdu. Üç kenar konumu gecikmeyi düşürdü, günde on binden fazla bayat
yanıt üretti. Bu iki gözlem tek başına birer anekdottur; bir karar defterine dönüşmeleri için aynı
ölçütlerle ve aynı biçimde yazılmaları gerekir.

Kiralanan altyapıyı değerlendirmek için kullanılan tasarım çerçeveleri tam olarak bunu yapar. Bir
kararı iyi ya da kötü diye değil, **beş ayrı sütunda ayrı ayrı** puanlar: işletim, güvenlik,
güvenilirlik, başarım ve maliyet. Çerçevenin adı bu derste geçmez; ölçülen şey ad değil, sütunların
birbirini nasıl kısıtladığıdır. Aynı biçimde bir gerilim matrisi önceki bir kursta nitelik
ölçütleri için kurulmuştu; yöntem aynıdır, oradaki sayılar buraya taşınmaz.

## Beş Sütun ve Karar Kümesi

- **BC13.** Sütunlar tür adıyla anılır: işletim, güvenlik, güvenilirlik, başarım, maliyet.
- **BC14.** Karar kümesi bu kursta ve önceki iki derste alınmış 12 karardan oluşur; hepsi coğrafya,
  dayanıklılık ya da kiralama kararıdır.
- **BC15.** Puanlar -2 ile +2 arasında bir **varsayımdır**, ölçülmüş değer değildir; anlamlı olan
  sıralama ve işarettir, mutlak büyüklük değil.
- **BC16.** Bir karar, uygulanması sağlayıcının işlettiği bir hizmeti kiralamayı gerektiriyorsa
  **devir** sayılır.
- **BC17.** Çıkış sınıfı üç değerlidir: `tanim` (yazılıp başka bir kiralamada aynen kurulabilir),
  `kismi`, `yok`.
- **BC18.** Kararlar birbirinden bağımsız puanlanır. Gerçek kümelerde birbirlerini etkilerler; bu,
  modelin bilinen sınırıdır.

```js
// cerceve/model.mjs — karar kumesi ve sutun puanlari MODELIDIR. Sutunlar tur adiyla anilir;
// puanlar bu dersin varsayimidir, olculmus degerler degil. Gercek bir urun ya da katalog yoktur.
export const SUTUN = ["isletim", "guvenlik", "guvenilirlik", "basarim", "maliyet"];

// ad, [isletim, guvenlik, guvenilirlik, basarim, maliyet] (-2..+2), devir?, cikista tasinan
export const KARAR = [
  ["uc-alana-yayilma", [-1, 0, 2, 0, -1], false, "tanim"],
  ["ikinci-bolgede-tam-kopya", [-2, 0, 2, 1, -2], false, "tanim"],
  ["bolgeler-arasi-eszamanli-yazma", [-1, 0, 2, -2, -1], false, "tanim"],
  ["uc-kenar-konumu", [-1, 1, 1, 2, -1], true, "kismi"],
  ["abone-ozeti-onbellegi", [0, 0, 1, 2, 0], true, "tanim"],
  ["yonetilen-iliskisel-veritabani", [2, 1, 1, -1, -2], true, "kismi"],
  ["islev-calistirma-ortami", [2, 0, 1, -1, -1], true, "yok"],
  ["saglayici-anahtar-yonetimi", [1, 2, 0, -1, -1], true, "yok"],
  ["ortam-basina-ayri-kiralama", [-2, 2, 1, 0, -1], true, "tanim"],
  ["otomatik-yamalama-devri", [2, 2, -1, 0, 0], true, "yok"],
  ["tekil-yazma-ucu", [1, 0, -2, 1, 0], false, "tanim"],
  ["ham-okumayi-nesne-deposunda-tutma", [1, 0, 1, -1, -1], true, "kismi"],
];

export const puan = (k, s) => k[1][SUTUN.indexOf(s)];
export const yukselten = (s) => KARAR.filter((k) => puan(k, s) > 0);
export const dusuren = (s) => KARAR.filter((k) => puan(k, s) < 0);
export const toplam = (s) => KARAR.reduce((a, k) => a + puan(k, s), 0);

// gerilim: bir karar i sutununu yukseltirken j sutununu dusuruyorsa hucre bir artar
export function gerilim(i, j) {
  return KARAR.filter((k) => puan(k, i) > 0 && puan(k, j) < 0).length;
}
export const gergin = (k) => k[1].some((p) => p > 0) && k[1].some((p) => p < 0);
```

## Sütunlar Arası Gerilim

```js
// cerceve/puan.mjs — sutun toplamlari ve sutunlar arasi gerilim matrisi
import { SUTUN, KARAR, puan, yukselten, dusuren, toplam, gerilim, gergin } from "./model.mjs";

const s = (x, n) => String(x).padStart(n);
console.log(`${KARAR.length} karar, ${SUTUN.length} sutun; puanlar -2..+2 araligindadir (varsayim).`);
console.log();
console.log("karar                             | isl | guv | gvn | bas | mal | net | gergin");
console.log("----------------------------------|-----|-----|-----|-----|-----|-----|-------");
for (const k of KARAR) {
  const net = k[1].reduce((a, b) => a + b, 0);
  console.log(`${k[0].padEnd(33)} |${k[1].map((p) => s(p, 4)).join(" |")} | ${s(net, 3)} | ` +
    `${gergin(k) ? "evet" : "hayir"}`);
}

console.log();
console.log("sutun        | toplam | yukselten karar | dusuren karar | en yuksek | en dusuk");
console.log("-------------|--------|-----------------|---------------|-----------|---------");
for (const t of SUTUN) {
  const p = KARAR.map((k) => puan(k, t));
  console.log(`${t.padEnd(12)} | ${s(toplam(t), 6)} | ${s(yukselten(t).length, 15)} | ` +
    `${s(dusuren(t).length, 13)} | ${s(Math.max(...p), 9)} | ${s(Math.min(...p), 8)}`);
}

console.log();
console.log("yukselen \\ dusen | isletim | guvenlik | guvenilirlik | basarim | maliyet | satir");
console.log("-----------------|---------|----------|--------------|---------|---------|------");
for (const i of SUTUN) {
  const h = SUTUN.map((j) => (i === j ? "-" : String(gerilim(i, j))));
  const satir = SUTUN.filter((j) => j !== i).reduce((a, j) => a + gerilim(i, j), 0);
  console.log(`${i.padEnd(16)} | ${s(h[0], 7)} | ${s(h[1], 8)} | ${s(h[2], 12)} | ` +
    `${s(h[3], 7)} | ${s(h[4], 7)} | ${s(satir, 5)}`);
}

const hicYukselmeyen = SUTUN.filter((t) => yukselten(t).length === 0);
const cift = [];
for (const i of SUTUN) for (const j of SUTUN) if (i !== j) cift.push([i, j, gerilim(i, j)]);
cift.sort((a, b) => b[2] - a[2]);
console.log();
console.log(`gergin karar ${KARAR.filter(gergin).length}/${KARAR.length}; ` +
  `hicbir sutunu dusurmeyen karar ${KARAR.filter((k) => !k[1].some((p) => p < 0)).length}.`);
console.log(`hicbir kararin iyilestirmedigi sutun: ${hicYukselmeyen.join(", ") || "yok"}.`);
console.log(`en gergin cift: ${cift[0][0]} yukselirken ${cift[0][1]} dusuyor — ${cift[0][2]} karar.`);
```

```
12 karar, 5 sutun; puanlar -2..+2 araligindadir (varsayim).

karar                             | isl | guv | gvn | bas | mal | net | gergin
----------------------------------|-----|-----|-----|-----|-----|-----|-------
uc-alana-yayilma                  |  -1 |   0 |   2 |   0 |  -1 |   0 | evet
ikinci-bolgede-tam-kopya          |  -2 |   0 |   2 |   1 |  -2 |  -1 | evet
bolgeler-arasi-eszamanli-yazma    |  -1 |   0 |   2 |  -2 |  -1 |  -2 | evet
uc-kenar-konumu                   |  -1 |   1 |   1 |   2 |  -1 |   2 | evet
abone-ozeti-onbellegi             |   0 |   0 |   1 |   2 |   0 |   3 | hayir
yonetilen-iliskisel-veritabani    |   2 |   1 |   1 |  -1 |  -2 |   1 | evet
islev-calistirma-ortami           |   2 |   0 |   1 |  -1 |  -1 |   1 | evet
saglayici-anahtar-yonetimi        |   1 |   2 |   0 |  -1 |  -1 |   1 | evet
ortam-basina-ayri-kiralama        |  -2 |   2 |   1 |   0 |  -1 |   0 | evet
otomatik-yamalama-devri           |   2 |   2 |  -1 |   0 |   0 |   3 | evet
tekil-yazma-ucu                   |   1 |   0 |  -2 |   1 |   0 |   0 | evet
ham-okumayi-nesne-deposunda-tutma |   1 |   0 |   1 |  -1 |  -1 |   0 | evet

sutun        | toplam | yukselten karar | dusuren karar | en yuksek | en dusuk
-------------|--------|-----------------|---------------|-----------|---------
isletim      |      2 |               6 |             5 |         2 |       -2
guvenlik     |      8 |               5 |             0 |         2 |        0
guvenilirlik |      9 |               9 |             2 |         2 |       -2
basarim      |      0 |               4 |             5 |         2 |       -2
maliyet      |    -11 |               0 |             9 |         0 |       -2

yukselen \ dusen | isletim | guvenlik | guvenilirlik | basarim | maliyet | satir
-----------------|---------|----------|--------------|---------|---------|------
isletim          |       - |        0 |            2 |       4 |       4 |    10
guvenlik         |       2 |        - |            1 |       2 |       4 |     9
guvenilirlik     |       5 |        0 |            - |       4 |       8 |    17
basarim          |       2 |        0 |            1 |       - |       2 |     5
maliyet          |       0 |        0 |            0 |       0 |       - |     0

gergin karar 11/12; hicbir sutunu dusurmeyen karar 1.
hicbir kararin iyilestirmedigi sutun: maliyet.
en gergin cift: guvenilirlik yukselirken maliyet dusuyor — 8 karar.
```

Birinci tablonun son sütunu bu dersin ilk sayısıdır: **12 kararın 11'i gergindir**, yani en az bir
sütunu yükseltirken en az bir sütunu düşürür. Hiçbir sütunu düşürmeyen tek karar abone özeti
önbelleğidir ve o bile ikinci derste bir bedelle geldi — bayat yanıtla. Sütun puanlaması bedeli
görmediyse, bedel yoktur demek değildir; **ölçüt kümesinin dışında kalmıştır** demektir.

İkinci tablo sütunları tek başlarına özetliyor. Güvenilirlik 9 kararla yükseliyor ve toplam +9 ile
en yüksek sütun. Maliyet ise **0 karar** tarafından yükseltiliyor, 9 karar tarafından düşürülüyor ve
toplamı -11. Bu, kararların kötü seçildiğini göstermez; kümenin bileşiminin bir sonucudur. Bu ders
coğrafya ve dayanıklılık kararlarını topladı ve bunların hiçbiri maliyeti yükseltmez — maliyeti
yükselten kararlar başka bir türden gelir ve henüz ölçülmedi. Güvenlik sütununun 0 düşüren karar
göstermesi de aynı biçimde okunur: bu küme güvenliği bozan bir karar içermiyor, güvenlik bozulamaz
değil.

Üçüncü tablo asıl ölçüdür. Satır bir sütunu yükselten kararları, sütun onların düşürdüğü ölçütü
sayar. Güvenilirlik satırı 17 ile açık ara en gergin satır: güvenilirliği yükselten kararlar 8
kararda maliyeti, 5 kararda işletimi, 4 kararda başarımı düşürüyor. **En gergin çift güvenilirlik
ile maliyettir ve 8 karar bu çifti taşır.** Maliyet satırının bütünüyle sıfır olması ise ikinci
tablonun aynı bulgusunun matris biçimidir: maliyeti yükselten bir karar olmadığı için maliyetin
başka bir sütunu düşürdüğü bir hücre de yok.

Matrisin işe yaradığı yer bir sıralama değil, **hangi çiftin açıkça karara bağlanması gerektiği**
listesidir. Güvenilirlik–maliyet hücresi 8 ile dolu olduğu için o çift bir kez konuşulup bir üst
sınıra bağlanmadığında, sekiz ayrı kararda sekiz ayrı ve birbirini bilmeyen ödünleşme yapılır.
Buna karşılık güvenilirlik–güvenlik hücresi 0'dır: güvenilirliği yükselten dokuz kararın hiçbiri
güvenliği düşürmüyor, dolayısıyla o çift için ayrı bir ödünleşme kuralı yazmaya gerek yok. Boş
hücreler dolu hücreler kadar bilgi taşır.

## Devredilen Kararın Sütun Profili

Gerilim matrisi kararları sütunlara böldü; ikinci kesit onları **kime ait** olduklarına böler. Bir
karar sağlayıcının işlettiği bir hizmeti kiralamayı gerektiriyorsa devredilmiştir.

```js
// cerceve/devir.mjs — sutun profilinin devredilen ve elde kalan kararlara gore ayrilmasi
import { SUTUN, KARAR, puan } from "./model.mjs";

const s = (x, n) => String(x).padStart(n);
const y = (x) => x.toFixed(2);
const CIKIS = { tanim: 2, kismi: 1, yok: 0 };
const grup = { devir: KARAR.filter((k) => k[2]), kendi: KARAR.filter((k) => !k[2]) };

console.log("grup  | karar | isletim | guvenlik | guvenilirlik | basarim | maliyet | cikis puani");
console.log("------|-------|---------|----------|--------------|---------|---------|------------");
for (const [ad, g] of Object.entries(grup)) {
  const ort = SUTUN.map((t) => g.reduce((a, k) => a + puan(k, t), 0) / g.length);
  const cikis = g.reduce((a, k) => a + CIKIS[k[3]], 0) / (2 * g.length);
  console.log(`${ad.padEnd(5)} | ${s(g.length, 5)} | ${s(y(ort[0]), 7)} | ${s(y(ort[1]), 8)} | ` +
    `${s(y(ort[2]), 12)} | ${s(y(ort[3]), 7)} | ${s(y(ort[4]), 7)} | ${s(`%${y(100 * cikis)}`, 11)}`);
}

console.log();
console.log("grup  | cikista tanim | kismi | yok | tasinmayan karar");
console.log("------|---------------|-------|-----|-----------------");
for (const [ad, g] of Object.entries(grup)) {
  const say = (t) => g.filter((k) => k[3] === t).length;
  console.log(`${ad.padEnd(5)} | ${s(say("tanim"), 13)} | ${s(say("kismi"), 5)} | ` +
    `${s(say("yok"), 3)} | ${s(`${say("kismi") + say("yok")}/${g.length}`, 16)}`);
}

const devirGuv = grup.devir.reduce((a, k) => a + puan(k, "guvenlik") + puan(k, "isletim"), 0);
const kendiGuv = grup.kendi.reduce((a, k) => a + puan(k, "guvenlik") + puan(k, "isletim"), 0);
console.log();
console.log(`devredilen ${grup.devir.length} karar isletim + guvenlik toplaminda ${devirGuv}, ` +
  `elde kalan ${grup.kendi.length} karar ${kendiGuv}.`);
console.log(`devredilen ${grup.devir.length} karardan cikista tanim olarak tasinamayan ` +
  `${grup.devir.filter((k) => k[3] !== "tanim").length}; elde kalan ${grup.kendi.length} karardan ` +
  `${grup.kendi.filter((k) => k[3] !== "tanim").length}.`);
```

```
grup  | karar | isletim | guvenlik | guvenilirlik | basarim | maliyet | cikis puani
------|-------|---------|----------|--------------|---------|---------|------------
devir |     8 |    0.63 |     1.00 |         0.63 |    0.00 |   -0.88 |      %43.75
kendi |     4 |   -0.75 |     0.00 |         1.00 |    0.00 |   -1.00 |     %100.00

grup  | cikista tanim | kismi | yok | tasinmayan karar
------|---------------|-------|-----|-----------------
devir |             2 |     3 |   3 |              6/8
kendi |             4 |     0 |   0 |              0/4

devredilen 8 karar isletim + guvenlik toplaminda 13, elde kalan 4 karar -3.
devredilen 8 karardan cikista tanim olarak tasinamayan 6; elde kalan 4 karardan 0.
```

Devir ile elde kalan arasındaki fark iki sütunda toplanıyor. İşletimde devredilen kararlar
ortalama +0,63, elde kalanlar **-0,75**; güvenlikte +1,00 ve 0,00. İkisinin toplamı 13'e karşı -3
demektir: kiralamanın karşılığı bu iki sütunda ödenir. Güvenilirlikte ise sıralama tersine dönüyor
— elde kalan kararlar ortalama +1,00, devredilenler +0,63. Güvenilirliği en çok yükselten kararlar
kimseye devredilemeyen kararlardır: alanlara yayılmak, ikinci bölgede kopya tutmak, yazmayı
eşzamanlı yapmak.

Son tablo çıkış sütununu veriyor ve bu dersin en keskin karşıtlığı burada. Elde kalan 4 kararın
**4'ü** çıkışta tanım olarak taşınır: kaç alan, hangi bölge, hangi yazma düzeni — hepsi yazılabilir
bir cümledir ve başka bir kiralamada aynen kurulabilir. Devredilen 8 kararın yalnız **2'si** taşınır;
6'sı kısmi ya da hiç taşınmaz. Çıkış puanı yüzde 100'e karşı **yüzde 43,75**. Kiralama işletim ve
güvenlik sütunlarını yükseltirken çıkış sütununu yarıdan aşağı indiriyor ve bu altıncı sütun
çerçevenin beş sütununda hiç görünmüyor.

## Özet

- Çerçeve bir kararı iyi ya da kötü diye değil beş sütunda ayrı ayrı puanlar: işletim, güvenlik,
  güvenilirlik, başarım, maliyet. Ölçülen şey ad değil, sütunların birbirini kısıtlamasıdır.
- 12 kararın **11'i gergindir**; hiçbir sütunu düşürmeyen tek karar vardır ve onun bedeli de
  sütunların dışında kalmıştır.
- Maliyeti yükselten karar **0**, düşüren 9; hiçbir kararın iyileştirmediği sütun maliyettir. Bu,
  kümenin coğrafya ve dayanıklılık kararlarından oluşmasının sonucudur.
- En gergin çift güvenilirlik ile maliyettir: 8 karar güvenilirliği yükseltirken maliyeti düşürür.
  Güvenilirlik satırı 17 ile en gergin satırdır.
- Devredilen 8 karar işletim ve güvenlikte ortalama +0,63 ve +1,00, elde kalan 4 karar -0,75 ve
  0,00; güvenilirlikte sıralama tersine döner (+1,00'e karşı +0,63).
- Çıkışta elde kalan kararların 4/4'ü tanım olarak taşınır, devredilenlerin yalnız 2/8'i: çıkış
  puanı yüzde 100'e karşı yüzde 43,75.

## Sonraki Adım

Bu ders maliyeti bir sütun olarak saydı ve o sütunun tuhaf bir özelliği çıktı: on iki kararın
hiçbiri onu yükseltmiyor. Bunun nedeni kararların kötülüğü değil, kümenin bileşimidir — coğrafya ve
dayanıklılık kararları maliyeti ödeyen taraftır, kazanan taraf değil. Maliyet sütununu yükselten
kararlar başka bir yerden gelir ve şimdiye kadar tek bir tanesi bile ölçülmedi: aynı kapasitenin
**hangi koşulla** kiralandığı. Aynı makine, aynı saat, aynı iş; ama kapasite anında istenip anında
bırakılabiliyorsa bir fiyat, uzun süreli bir taahhüde bağlanıyorsa başka bir fiyat, sağlayıcı geri
isteyebiliyorsa üçüncü bir fiyat taşır. Sonraki ders üç modeli aynı yük profilinde koşturup toplam
maliyeti, geri alınan kapasite yüzünden yeniden koşan işi ve kullanılmayan taahhüdü birlikte sayar;
yük profili değiştikçe kazanan modelin de değiştiğini gösterir.
