---
title: 'Maliyet Görünürlüğü'
source: 'https://academia.sh/tr/kurslar/platform-muhendisligi/maliyet-gorunurlugu'
course: 'Platform Mühendisliği'
language: tr
updated: '2026-08-17T18:09:09+00:00'
license: 'CC BY-SA 4.0'
---

# Maliyet Görünürlüğü

Ekip bazlı kaynak muhasebesi: günlük 1.376 kurgu biriminin yalnız %47,5'inin doğrudan atanabilmesi, üç bölüştürme kuralının her birinin başka ekibi başka yönde yanıltması (eşit kural sahayı +79,0 yüklerken istek kuralı sayaç okumayı +140,7 yüklüyor), maliyet gösterildikten sonra faturanın yalnız %15,6'sının düşmesi ve %29,7'sinin hiç kımıldamaması, merkezî muhasebenin üç ekipte kendini ödemesi ama iki ekibin dışına çıkmasıyla beş ekipteki 85 birimlik kazancın 3 birime inmesi.

Önceki ders kuralları hatta gömdü: beş ekip politika motorunu hiç açmadan uydu, muafiyet
sayısı sayıldı ve kuralın görünmezliği bir kazanç olarak yazıldı. Aynı beş ekip için hâlâ
görünmeyen bir şey var — **ne kadar harcadıkları**. Platform kaynağı onların yerine alıyor ve
faturayı onların yerine okuyor.

Birim maliyet, boşta kaynak ve ölçek ekonomisi M22/K06'da ölçüldü; burada o fatura girdidir.
Bu dersin sorusu tek bir bölme işlemidir: aynı tutar **beş ekibe** nasıl bölünür, bölünemeyen
ne kadardır ve bölünen tutar ekibe gösterildiğinde ne değişir.

## Faturayı Beş Ekibe Bölmek

Örnek yine kurgu **bölgesel ölçüm ağı**dır ve beş ekip kurgudur: sayaç okuma, doğrulama,
faturalama, saha, raporlama. Kalemler, fiyatlar ve kullanım ölçüleri kurgudur; **para birimi de
kurgudur** ve `br` diye anılır, gerçek bir fiyat listesine karşılık gelmez.

**PT25:** dokuz maliyet kalemi vardır ve her kalemin günlük bir bedeli yazılıdır. **PT26:**
kalemler üç türdür — **doğrudan** atanabilen (ekip etiketi taşır), **paylaşılan** (küme denetim
düzlemi, ortak yapı ve dağıtım hattı, izleme yığını) ve **bölüştürülemeyen**; sonuncular hiçbir
ekibin kullanımıyla ilişkili değildir ve ekip olmasa da ödenir. **PT27:** paylaşılan kalemin **gerçek sürücüsü** modelde
bilinir (eş zamanlı iş, yapı dakikası, seri sayısı) ama faturada yoktur. **PT28:** bölüştürme
kuralları yalnız faturadan okunabilen ölçüleri kullanabilir: eşit pay, gözlenen kaynak kullanım
oranı, istek sayısı. **PT29:** maliyet ekibe gösterildikten sonra her kalem kendi **denetim
payı** kadar düşer; bu tek dönemlik bir tepkidir. **PT30:** merkezî muhasebe hattının sabit
günlük bedeli vardır, bir ekibin kendi muhasebesini kurmasının da.

Ekipler, kalemler ve fatura süreç içi bir **modeldir**; gerçek bir fatura yoktur.

```js
// maliyet/kalem.mjs — ekip bazli muhasebe modeli: gercek bir fatura yok. Ekipler, kalemler ve
// fiyatlar bir veri yapisidir; para birimi kurgudur ve `br` diye anilir, gercek bir fiyat
// listesine karsilik gelmez. Paylasilan kalemin *gercek surucusu* modelde bilinir, faturada
// yoktur; bolusturme kurallari yalniz faturadan okunabilen olculeri kullanabilir.

export const EKIP = ["sayac-okuma", "dogrulama", "faturalama", "saha", "raporlama"];
export const N = EKIP.length;

// dogrudan atanabilir: ad, ekip basina gunluk br, gorunurluk sonrasi dusus payi
export const DOGRUDAN = [
  ["servis ornekleri",       [96, 54, 120, 38, 72], 0.18],
  ["blok depolama",          [24, 18,  40, 12, 58], 0.10],
  ["gecici ortam kopyalari", [30, 22,  26, 10, 34], 0.55],
];

// paylasilan: ad, gunluk br, surucu adi, surucu degerleri (modelde bilinir), dusus payi
export const PAYLASILAN = [
  ["kume denetim duzlemi",   210, "es zamanli is",  [34, 12, 28, 6, 9],           0.00],
  ["ortak yapi ve dagitim",  168, "yapi dakikasi",  [220, 180, 260, 40, 610],     0.12],
  ["izleme yigini",          146, "seri sayisi",    [8200, 3100, 5400, 900, 2600], 0.30],
];

// bolusturulemez: hicbir ekibin kullanimiyla iliskisi yok; ekip olmasa da odenir
export const BOLUSTURULEMEZ = [
  ["bolge taban agi", 88], ["denetim kaydi saklama", 46], ["yedek bolge bekleme", 64],
];

// faturadan okunabilen ekip olculeri
export const OLCU = {
  kullanim: [0.31, 0.17, 0.29, 0.08, 0.15],   // gozlenen kaynak kullanim orani
  istek: [412, 96, 138, 21, 33],              // gunluk bin istek
};

export const MERKEZI = 120;   // merkezi muhasebe hattinin sabit gunluk bedeli (br)
export const EKIP_BASI = 41;  // bir ekibin kendi muhasebesini kurmasinin gunluk bedeli (br)

export const topla = (v) => v.reduce((a, b) => a + b, 0);
export const oran = (v) => { const t = topla(v); return v.map((x) => x / t); };

export const KURAL = {
  esit: () => EKIP.map(() => 1 / N),
  kullanim: () => oran(OLCU.kullanim),
  istek: () => oran(OLCU.istek),
};

// paylasilan kalemlerin ekip basina *gercek* payi: her kalem kendi surucusuyle bolusur
export const gercekPay = () => EKIP.map((_, e) =>
  topla(PAYLASILAN.map(([, br, , s]) => br * oran(s)[e])));

// bir kuralin paylasilan kalemlerde urettigi sapma: yuklenen eksi gercek
export const sapma = (ad) => {
  const p = KURAL[ad](), toplamBr = topla(PAYLASILAN.map((x) => x[1])), g = gercekPay();
  return EKIP.map((_, e) => toplamBr * p[e] - g[e]);
};
```

```js
// maliyet/olc.mjs — kalem dokumu, uc bolusturme kuralinin sapmasi, gorunurlugun davranisa
// etkisi ve merkezi muhasebenin esigi. Tum sayilar yukaridaki modelden turer.
import { EKIP, N, DOGRUDAN, PAYLASILAN, BOLUSTURULEMEZ, KURAL, MERKEZI, EKIP_BASI,
  topla, sapma } from "./kalem.mjs";

const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));
const t0 = process.hrtime.bigint();

const D = topla(DOGRUDAN.map((x) => topla(x[1])));
const P = topla(PAYLASILAN.map((x) => x[1]));
const B = topla(BOLUSTURULEMEZ.map((x) => x[1]));
const T = D + P + B, pay = (a) => `%${(100 * a / T).toFixed(1)}`;

const ADET = DOGRUDAN.length + PAYLASILAN.length + BOLUSTURULEMEZ.length;
console.log(`${N} ekip, ${ADET} kalem, gunluk ${T} br (kurgu para birimi)`);

console.log("\n1. kalem dokumu: ne dogrudan atanir, ne bolusturulur, ne bolusturulemez");
const A = [-24, 17, 11, 9, 18, 9];
yaz(A, "kalem", "tur", "gunluk br", "pay", "gercek surucu", "denetim");
for (const [ad, v, d] of DOGRUDAN)
  yaz(A, ad, "dogrudan", topla(v), pay(topla(v)), "ekip etiketi", `%${(100 * d).toFixed(0)}`);
for (const [ad, br, s, , d] of PAYLASILAN)
  yaz(A, ad, "paylasilan", br, pay(br), s, `%${(100 * d).toFixed(0)}`);
for (const [ad, br] of BOLUSTURULEMEZ)
  yaz(A, ad, "bolusturulemez", br, pay(br), "yok", "%0");
yaz(A, "toplam", "-", T, "%100", "-", "-");
console.log(`  dogrudan ${D} br (${pay(D)}), paylasilan ${P} br (${pay(P)}),`);
console.log(`  bolusturulemez ${B} br (${pay(B)}); dogrudan atanamayan ${pay(P + B)}`);

console.log("\n2. bolusturme kurali taramasi: yuklenen eksi gercek (br/gun, paylasilan)");
const C = [-11, ...EKIP.map(() => 13), 12];
yaz(C, "kural", ...EKIP, "mutlak top.");
const skor = {};
for (const k of Object.keys(KURAL)) {
  const s = sapma(k);
  skor[k] = topla(s.map(Math.abs));
  yaz(C, k, ...s.map((x) => (x >= 0 ? "+" : "") + x.toFixed(1)), skor[k].toFixed(1));
}
const enIyi = Object.keys(skor).reduce((a, b) => (skor[a] <= skor[b] ? a : b));
for (const k of Object.keys(KURAL)) {
  const s = sapma(k), i = s.indexOf(Math.max(...s)), j = s.indexOf(Math.min(...s));
  console.log(`  ${k.padEnd(9)} en cok yuklenen ${EKIP[i]} +${s[i].toFixed(1)}, ` +
    `en cok kurtulan ${EKIP[j]} ${s[j].toFixed(1)}`);
}
console.log(`  en az yanlis kural: ${enIyi}`);
console.log(`  her kural ${B} br bolusturulemez kalemi de dagitir; o tutarin sapmasi`);
console.log("  olculemez, cunku karsilastirilacak bir gercek pay yok");

console.log("\n3. gorunurlugun davranisa etkisi: maliyet ekibe gosterildikten sonra");
const E = [-24, 11, 9, 11, 26];
yaz(E, "kalem", "gunluk br", "denetim", "dusen br", "degismemesinin nedeni");
const kalemler = [
  ...DOGRUDAN.map(([ad, v, d]) => [ad, topla(v), d, "-"]),
  ...PAYLASILAN.map(([ad, br, , , d]) => [ad, br, d, d ? "-" : "platform karari"]),
  ...BOLUSTURULEMEZ.map(([ad, br]) => [ad, br, 0, "ekibin denetiminde degil"]),
];
let dusen = 0, sabitBr = 0, sabitAdet = 0;
for (const [ad, br, d, n] of kalemler) {
  dusen += br * d;
  if (d === 0) { sabitBr += br; sabitAdet++; }
  yaz(E, ad, br, `%${(100 * d).toFixed(0)}`, (br * d).toFixed(1), n);
}
console.log(`  toplam dusus ${dusen.toFixed(1)} br/gun (%${(100 * dusen / T).toFixed(1)})`);
console.log(`  hic degismeyen ${sabitAdet} kalem, ${sabitBr} br/gun (${pay(sabitBr)})`);

console.log("\n4. merkezi muhasebenin esigi ve disina cikanlarin bedeli");
const F = [-8, 13, 15, 11, 18];
yaz(F, "ekip", "merkezi br", "ayri ayri br", "kazanc", "kendini oder mi");
for (const n of [1, 2, 3, 5, 8]) {
  const ayri = n * EKIP_BASI;
  yaz(F, n, MERKEZI, ayri, (ayri - MERKEZI).toFixed(0), ayri > MERKEZI ? "evet" : "hayir");
}
const s = sapma(enIyi), sirali = EKIP.map((e, i) => [e, Math.abs(s[i])])
  .sort((a, b) => b[1] - a[1]).slice(0, 2);
const cikan = sirali.length * EKIP_BASI, brut = N * EKIP_BASI - MERKEZI;
const esik = Math.ceil(MERKEZI / EKIP_BASI);
console.log(`  esik ${esik} ekip; ${N} ekipte brut kazanc ${brut} br/gun`);
console.log(`  ${enIyi} kuralinda en cok sapan ${sirali.map((x) => x[0]).join(" ve ")} kendi`);
console.log(`  olcumunu kurar: ${cikan} br/gun yinelenen olcum, net kazanc ` +
  `${brut - cikan} br/gun`);

const ms = Number(process.hrtime.bigint() - t0) / 1e6;   // ham olcum basilmaz, bant denetlenir
console.log(`\ndort tablo ve kural taramasi 2000 ms bandinda: ${ms < 2000 ? "evet" : "hayir"}`);
```

```
5 ekip, 9 kalem, gunluk 1376 br (kurgu para birimi)

1. kalem dokumu: ne dogrudan atanir, ne bolusturulur, ne bolusturulemez
kalem                                 tur  gunluk br      pay     gercek surucu  denetim
servis ornekleri                 dogrudan        380    %27.6      ekip etiketi      %18
blok depolama                    dogrudan        152    %11.0      ekip etiketi      %10
gecici ortam kopyalari           dogrudan        122     %8.9      ekip etiketi      %55
kume denetim duzlemi           paylasilan        210    %15.3     es zamanli is       %0
ortak yapi ve dagitim          paylasilan        168    %12.2     yapi dakikasi      %12
izleme yigini                  paylasilan        146    %10.6       seri sayisi      %30
bolge taban agi            bolusturulemez         88     %6.4               yok       %0
denetim kaydi saklama      bolusturulemez         46     %3.3               yok       %0
yedek bolge bekleme        bolusturulemez         64     %4.7               yok       %0
toplam                                  -       1376     %100                 -        -
  dogrudan 654 br (%47.5), paylasilan 524 br (%38.1),
  bolusturulemez 198 br (%14.4); dogrudan atanamayan %52.5

2. bolusturme kurali taramasi: yuklenen eksi gercek (br/gun, paylasilan)
kural        sayac-okuma    dogrulama   faturalama         saha    raporlama mutlak top.
esit               -62.9        +31.0        -33.6        +79.0        -13.5       220.0
kullanim            -5.3        +15.3        +13.5        +16.1        -39.7        89.8
istek             +140.7         -1.9        -35.1        -10.1        -93.6       281.4
  esit      en cok yuklenen saha +79.0, en cok kurtulan sayac-okuma -62.9
  kullanim  en cok yuklenen saha +16.1, en cok kurtulan raporlama -39.7
  istek     en cok yuklenen sayac-okuma +140.7, en cok kurtulan raporlama -93.6
  en az yanlis kural: kullanim
  her kural 198 br bolusturulemez kalemi de dagitir; o tutarin sapmasi
  olculemez, cunku karsilastirilacak bir gercek pay yok

3. gorunurlugun davranisa etkisi: maliyet ekibe gosterildikten sonra
kalem                     gunluk br  denetim   dusen br     degismemesinin nedeni
servis ornekleri                380      %18       68.4                         -
blok depolama                   152      %10       15.2                         -
gecici ortam kopyalari          122      %55       67.1                         -
kume denetim duzlemi            210       %0        0.0           platform karari
ortak yapi ve dagitim           168      %12       20.2                         -
izleme yigini                   146      %30       43.8                         -
bolge taban agi                  88       %0        0.0  ekibin denetiminde degil
denetim kaydi saklama            46       %0        0.0  ekibin denetiminde degil
yedek bolge bekleme              64       %0        0.0  ekibin denetiminde degil
  toplam dusus 214.7 br/gun (%15.6)
  hic degismeyen 4 kalem, 408 br/gun (%29.7)

4. merkezi muhasebenin esigi ve disina cikanlarin bedeli
ekip       merkezi br   ayri ayri br     kazanc   kendini oder mi
1                 120             41        -79             hayir
2                 120             82        -38             hayir
3                 120            123          3              evet
5                 120            205         85              evet
8                 120            328        208              evet
  esik 3 ekip; 5 ekipte brut kazanc 85 br/gun
  kullanim kuralinda en cok sapan raporlama ve saha kendi
  olcumunu kurar: 82 br/gun yinelenen olcum, net kazanc 3 br/gun

dort tablo ve kural taramasi 2000 ms bandinda: evet
```

Sayılar **ölçüm** sınıfındadır; girdileri yukarıdaki varsayımlardır.

## Faturanın Yarısı Doğrudan Atanamıyor

Birinci tablo günlük 1.376 birimi üç türe ayırır. Doğrudan atanabilen kalemler 654 birim
(%47,5) tutar: servis örnekleri, blok depolama ve geçici ortam kopyaları ekip etiketi taşır ve
hangi ekibin ne kadar kullandığı faturadan okunur. Kalan **%52,5** okunmaz.

Bunun 524 birimi (%38,1) **paylaşılan** kalemdir. Küme denetim düzlemi, ortak yapı ve dağıtım
hattı ile izleme yığını beş ekip için tek bir kez işletilir; tam da platformun devraldığı
katman budur. Tekil bir tutar olarak görünür ve kimseye ait değildir.

Geriye 198 birim (%14,4) **bölüştürülemeyen** kalem kalır. Bölge taban ağı, denetim kaydı
saklama ve yedek bölge bekleme üç ekiple de beş ekiple de aynı tutar; hiçbir ekip çekildiği
için azalmaz. Bu kalemin bir sahibi yoktur, bir
sürücüsü de yoktur — bölüştürme kuralı ona uygulandığında üretilen sayı bir **ölçüm** değil, bir
**karardır**.

## Her Kural Başka Ekibi Başka Yönde Yanıltıyor

İkinci tablo üç kuralı paylaşılan 524 birim üzerinde tarar. Karşılaştırma noktası modelde
bilinen **gerçek pay**dır: her paylaşılan kalem kendi sürücüsüyle bölüşülür. Sapma, kuralın
yüklediği tutar eksi gerçek paydır; artı işareti ekibin fazla yüklendiğini, eksi işareti
kurtulduğunu gösterir.

**Eşit pay** en kaba sonucu verir (mutlak toplam 220,0). Saha ekibi **+79,0 birim** fazla
yüklenir: beş ekibin en küçüğüdür, eş zamanlı işi altıdır, yapı dakikası kırktır, serisi
dokuz yüzdür — ama beşte bir öder. Sayaç okuma **−62,9 birim** kurtulur; küme denetim
düzleminin en ağır kullanıcısıdır ama bunu faturasında görmez.

**Kullanım oranı** en az yanlış kuraldır (89,8) ama tek yönlü değildir: raporlama **−39,7**
kurtulur, çünkü kaynak kullanımı düşük olsa da yapı dakikasının %46'sını tek başına harcar.
Gözlenen kullanım oranı yapı hattının sürücüsünü hiç görmez.

**İstek sayısı** en yanıltıcı kuraldır (281,4). Sayaç okuma **+140,7 birim** yüklenir çünkü
günlük 412 bin istekle en yüksek sayıya sahiptir; oysa istek başına maliyeti düşüktür.
Raporlama **−93,6** kurtulur: gecelik toplu iş isteğe dönüşmez.

Üç kural üç farklı ekibi üç farklı yönde yanıltır ve hiçbiri diğerinin hatasını düzeltmez.
Bunun üstüne 198 birimlik bölüştürülemeyen kalem her kuralda yine dağıtılır ve o tutarın
sapması **ölçülemez** — karşılaştırılacak bir gerçek pay yoktur. **Maliyet görünürlüğünde** bu
katlanılabilir bir yanlıştır: sayı gösterilir, kimse ödemez. **Maliyet yansıtmasında** aynı sayı
bir bütçeden düşer ve tartışma kuralın kendisine kayar.

## Görünürlük Neyi Kımıldatıyor

Üçüncü tablo maliyeti ekibe gösterir ve ne düştüğünü sayar. Toplam düşüş **214,7 birim**
(%15,6). Düşüşün geldiği yer beklenen yer değildir: en yüksek tepki oranı **geçici ortam
kopyalarındadır** (%55, 67,1 birim) — ekip kullanılmayan ortamı kendi silebilir. Servis
örnekleri büyüklüğü sayesinde yakın bir tutar düşürür (68,4 birim) ama oranı %18'dir; boyut
değiştirmek dağıtım gerektirir. İzleme yığını %30 düşer, çünkü ekip kendi etiketlerini
seyreltebilir.

Dört kalem **hiç kımıldamaz**: 408 birim, faturanın **%29,7'si**. Küme denetim düzlemi bir
platform kararıdır; bölge taban ağı, denetim kaydı saklama ve yedek bölge bekleme hiçbir ekibin
denetiminde değildir — denetim kaydı saklama üstelik önceki dersteki politika kuralının kendi
bedelidir. Bu kalemleri ekibin faturasında göstermek düşüş üretmez, yalnız **soru** üretir.

Soyutlamanın sızdığı yer burasıdır. Ekip platformu kullanmaya kendi altyapı katmanını görmemek
için başladı; şimdi faturasında dört kalem duruyor ve tutarını değiştirmek için o katmanı
öğrenmek zorunda. **Denetimi olmayan bir kalemi göstermek görünürlük değil, gürültüdür.**

## Merkezî Muhasebenin Eşiği

Dördüncü tablo platformun kazandırıp kazandırmadığını sorar. Merkezî muhasebe hattı günlük 120
birim sabit tutar; ekip kendi muhasebesini kurarsa 41 birim öder. Eşik **üç ekiptir**: tek
ekipte merkezî hat 79 birim, iki ekipte 38 birim **pahalıdır**. Az ekiple platform muhasebesi
kendini ödemez ve bunun bir tercih değil, bir aritmetik olduğu tablodadır.

Beş ekipte brüt kazanç 85 birimdir. Buna dışına çıkanlar eklenir: kullanım kuralında en çok
sapan raporlama (−39,7) ve saha (+16,1) sonuca güvenmez ve kendi ölçümünü kurar. İkisinin
yinelenen ölçümü **82 birim** tutar; brüt 85 birimlik kazanç **3 birime** iner. Beş ekip
merkezî muhasebeyi neredeyse hiç kazandırmayan bir noktada işletir ve nedeni maliyetin
kendisi değil, **bölüştürme kuralına duyulan güvensizliktir**.

## Özet

- Günlük 1.376 kurgu biriminin yalnız %47,5'i doğrudan atanır; %38,1 paylaşılan, %14,4
  bölüştürülemeyen kalemdir — faturanın **%52,5'i** bir kural olmadan ekibe yazılamaz.
- Üç bölüştürme kuralı üç ayrı ekibi ters yönde yanıltır: eşit pay sahayı +79,0 yükler, istek
  sayısı sayaç okumayı +140,7 yükler ve raporlamayı −93,6 kurtarır; en az yanlış kural olan
  kullanım oranında bile mutlak sapma 89,8 birimdir.
- 198 birimlik bölüştürülemeyen kalem her kuralda dağıtılır ama sapması ölçülemez;
  görünürlükte katlanılabilir olan bu yanlış, yansıtmada bütçeden düşer.
- Maliyet gösterildikten sonra fatura %15,6 düşer; en yüksek tepki geçici ortam kopyalarındadır
  (%55). Dört kalem hiç kımıldamaz — 408 birim, %29,7 — çünkü ekibin denetiminde değildir.
- Merkezî muhasebe üç ekipten sonra kendini öder; iki ekipte 38 birim pahalıdır. Beş ekipte
  brüt kazanç 85 birimken, kurala güvenmeyen iki ekibin kendi ölçümünü kurması kazancı 3 birime
  indirir.

## Sonraki Adım

Bu dersin sayıları platformun ne kadar tuttuğunu söylüyor ama kime yaradığını söylemiyor.
Sıradaki ders soruyu zamana yayar: beş ekip yeni düzene aynı anda geçmez, dalgalar hâlinde
taşınır ve dalganın büyüklüğü hem iki düzenin birlikte işletileceği süreyi hem geride kalanların
sayısını belirler. Geride kalan ekibin bedeli bu dersin tablosunda hiç görünmeyen bir kalemdir.
