İçeriğe geç
academia.sh

Ders 10 / 12

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.

İçindekiler

Ö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.

// 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]);
};
// 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 paydı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.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat