---
title: 'Platform Mühendisliği Nedir'
source: 'https://academia.sh/tr/kurslar/platform-muhendisligi/platform-muhendisligi-nedir'
course: 'Platform Mühendisliği'
language: tr
updated: '2026-08-17T18:09:09+00:00'
license: 'CC BY-SA 4.0'
---

# Platform Mühendisliği Nedir

Platformun bir soyutlama olarak ölçülmesi: yedi kursun her ekipte yeniden kurulan on sekiz kalemi listelenir, ekip başına yeniden kurma işi sayılır, ekip sayısı taranarak platformun kendini ödediği eşik çıkarılır ve az ekipte platformun kaybettirdiği iş günü aynı tabloda gösterilir.

Önceki kurs sertleştirmeyi kapatırken bir soru bıraktı. Yedi kurs boyunca her katman ayrı ayrı
kuruldu: ortam sağlandı, hat kuruldu, küme nesnesi yazıldı, altyapı kaydı tutuldu, gösterge
bağlandı, varsayılan yüzey daraltıldı. Bunların hepsini **her ekip yeniden mi kuracak?**

Karşılık bir görüş değil, bir sayıdır: ortak bir yere taşımanın bedeli peşin ödenir, kazancı ekip
sayısıyla çarpılır ve ikisi belli bir ekip sayısında eşitlenir. Bu kursun ölçü birimi
**soyutlama**dır — platform bir katmanı gizler, yerine bir arayüz koyar, o arayüzün de kendi bedeli
olur. Her ders üçünü sayar: ne gizlendi ve kaç ekip ne kadar kurtuldu, gizlenen nerede geri sızdı,
kim yolun dışına çıktı.

Platformun bir **ekip türü** olarak nerede durduğu — akış odaklı ekipler, bilişsel yük, ekip
topolojileri — `ekip-ve-teslimat/02` dersinde ölçüldü; tekrarlanmaz. Burada platform ekip düzeni
değil, soyutlamadır. Through-line **bölgesel ölçüm ağıdır**; bu kursta ağın yazılımını üreten **beş
ekip** eklenir: sayaç okuma, doğrulama, faturalama, saha ve raporlama. Ağ da ekipler de kurgudur.

## Yedi Kursun Bıraktığı Kalem Kümesi

**PY1 — yedi kursun bıraktığı iş, altı türde on sekiz kaleme ayrılır: ortam, hat, küme nesnesi,
kayıt, gösterge ve sertleştirme adımı.** Her kalem üç sayı taşır: bir ekibin kalemi kendi kurup üç
yıl sürdürmesinin bedeli, platformun kalemi bir kez devralmasının bedeli ve devirden sonra **ekipte
kalan** iş. Birim iş günüdür. Gerekçe: kalem kümesi sayılmadan platform tartışması ölçülemez.

**PY2 — bir kalemin eşiği, devir bedelinin ekip başına net kazanca bölümünün yukarı
yuvarlanmasıdır**; net kazanç, ekip başına iş ile ekipte kalan işin farkıdır. Gerekçe: devir bir
kez ödenir, kazanç her ekipte tekrarlanır.

**PY3 — iki düzen karşılaştırılır: her ekibin on sekiz kalemi kendi kurduğu düzen ve platformun
hepsini devraldığı düzen.** **PY4 — üçüncü düzen, seçici devir, yalnız eşiği beşe kadar olan
kalemleri taşır; geri kalanlar ekiplerde tam bedelle durur.** Gerekçe: devir kurumsal değil, kalem
kalem verilen bir karardır.

```js
// kalem.mjs — yedi kursun biraktigi kalem kumesi, kalem basina esik ve ekip taramasi (model)
import { writeFileSync } from "node:fs";

// PY1 — yedi kursun biraktigi ve her ekipte yeniden kurulan 18 kalem: tur, ad, ekip basina
// is, platform devri (bir kez), devirden sonra ekipte kalan is. Birim is gunu, pencere uc
// yil. PY2 — kalem esigi = ceil(devir / (ekip - kalan)). Sayilar kurgudur.
const KALEM = [
  ["ortam", "gelistirme ortami", 12, 55, 3],
  ["ortam", "sinama ortami", 9, 40, 2],
  ["ortam", "gizli deger baglama", 7, 46, 2],
  ["hat", "derleme adimi", 8, 30, 2],
  ["hat", "sinama kosumu", 6, 22, 4],
  ["hat", "kanit uretimi", 10, 44, 1],
  ["hat", "dagitim adimi", 11, 52, 3],
  ["kume nesnesi", "is yuku tanimi", 9, 38, 3],
  ["kume nesnesi", "ag kurali", 7, 34, 2],
  ["kume nesnesi", "olcekleme kurali", 5, 18, 3],
  ["kayit", "altyapi durum kaydi", 13, 62, 2],
  ["kayit", "surum kaydi", 6, 20, 1],
  ["gosterge", "dort gosterge baglama", 8, 30, 5],
  ["gosterge", "gunluk toplama", 7, 26, 2],
  ["gosterge", "uyari kurali", 9, 24, 6],
  ["sertlestirme", "taban imge taramasi", 10, 42, 1],
  ["sertlestirme", "yetki daraltma", 12, 50, 4],
  ["sertlestirme", "gizli deger dondurme", 8, 33, 2],
].map(([tur, ad, ekip, devir, kalan]) => ({ tur, ad, ekip, devir, kalan,
  net: ekip - kalan, esik: Math.ceil(devir / (ekip - kalan)), sizma: kalan / ekip }));
writeFileSync("kalem.json", JSON.stringify(KALEM));

const T = (d, f) => d.reduce((t, k) => t + f(k), 0);
const pay = (a, b) => `%${(100 * a / b).toFixed(1)}`;
const grup = (t) => KALEM.filter((k) => k.tur === t);
console.log(`${KALEM.length} kalem — ekip basina ${T(KALEM, (k) => k.ekip)}, devir ` +
  `${T(KALEM, (k) => k.devir)}, devirden sonra ekipte kalan ${T(KALEM, (k) => k.kalan)} is gunu ` +
  `(kalan payi ${pay(T(KALEM, (k) => k.kalan), T(KALEM, (k) => k.ekip))})`);
console.log("tur basina kalan payi — " + [...new Set(KALEM.map((k) => k.tur))]
  .map((t) => `${t} ${pay(T(grup(t), (k) => k.kalan), T(grup(t), (k) => k.ekip))}`).join(", "));

console.log("\n" + "kalem".padEnd(23) + "ekip".padStart(5) + "kalan".padStart(7) +
  "devir".padStart(7) + "esik".padStart(6));
for (const k of [...KALEM].sort((a, b) => a.esik - b.esik || a.ad.localeCompare(b.ad)))
  console.log(k.ad.padEnd(23) + `${k.ekip}`.padStart(5) + `${k.kalan}`.padStart(7) +
    `${k.devir}`.padStart(7) + `${k.esik}`.padStart(6));

// PY3 — iki duzen: her ekip 18 kalemi kendi kurar; ya da platform devralir, ekipte artik
// kalir. PY4 — ucuncu duzen, secici devir, yalniz esigi bese kadar olan kalemleri tasir.
const TAM = T(KALEM, (k) => k.ekip);
const H_DEVIR = T(KALEM, (k) => k.devir), H_KALAN = T(KALEM, (k) => k.kalan);
const S_DEVIR = T(KALEM.filter((k) => k.esik <= 5), (k) => k.devir);
const S_KALAN = T(KALEM, (k) => (k.esik <= 5 ? k.kalan : k.ekip));
const im = (v) => (v > 0 ? `+${v}` : `${v}`);
console.log("\n" + "ekip".padStart(5) + "platformsuz".padStart(13) + "tum kalemler".padStart(14) +
  "fark".padStart(8) + "secici".padStart(9) + "fark".padStart(8) + "kazanan".padStart(14));
for (let n = 1; n <= 12; n++) {
  const yok = n * TAM, hep = H_DEVIR + n * H_KALAN, sec = S_DEVIR + n * S_KALAN;
  const en = Math.min(yok, hep, sec);
  console.log(`${n}`.padStart(5) + `${yok}`.padStart(13) + `${hep}`.padStart(14) +
    im(yok - hep).padStart(8) + `${sec}`.padStart(9) + im(yok - sec).padStart(8) +
    (en === yok ? "platformsuz" : en === sec ? "secici" : "tum kalemler").padStart(14));
}
const esik = (devir, ekipte) => Math.ceil(devir / (TAM - ekipte));
console.log(`\ntum kalemler devredilirse esik: ${esik(H_DEVIR, H_KALAN)} ekip; ` +
  `secici devirde: ${esik(S_DEVIR, S_KALAN)} ekip (devir ${H_DEVIR} ve ${S_DEVIR})`);
const agir = KALEM.filter((k) => k.sizma > 0.4).sort((a, b) => b.esik - a.esik);
console.log(`artik isi sifir olan kalem: ${KALEM.filter((k) => k.kalan === 0).length} / ` +
  `${KALEM.length}; artigi ekip isinin %40'ini asan kalem: ${agir.length} — ` +
  agir.map((k) => `${k.ad} (${pay(k.kalan, k.ekip)}, esik ${k.esik})`).join(", "));
```

```
18 kalem — ekip basina 157, devir 666, devirden sonra ekipte kalan 48 is gunu (kalan payi %30.6)
tur basina kalan payi — ortam %25.0, hat %28.6, kume nesnesi %38.1, kayit %15.8, gosterge %54.2, sertlestirme %23.3

kalem                   ekip  kalan  devir  esik
surum kaydi                6      1     20     4
derleme adimi              8      2     30     5
kanit uretimi             10      1     44     5
taban imge taramasi       10      1     42     5
altyapi durum kaydi       13      2     62     6
gizli deger dondurme       8      2     33     6
gunluk toplama             7      2     26     6
sinama ortami              9      2     40     6
ag kurali                  7      2     34     7
dagitim adimi             11      3     52     7
gelistirme ortami         12      3     55     7
is yuku tanimi             9      3     38     7
yetki daraltma            12      4     50     7
uyari kurali               9      6     24     8
olcekleme kurali           5      3     18     9
dort gosterge baglama      8      5     30    10
gizli deger baglama        7      2     46    10
sinama kosumu              6      4     22    11

 ekip  platformsuz  tum kalemler    fark   secici    fark       kazanan
    1          157           714    -557      264    -107   platformsuz
    2          314           762    -448      392     -78   platformsuz
    3          471           810    -339      520     -49   platformsuz
    4          628           858    -230      648     -20   platformsuz
    5          785           906    -121      776      +9        secici
    6          942           954     -12      904     +38        secici
    7         1099          1002     +97     1032     +67  tum kalemler
    8         1256          1050    +206     1160     +96  tum kalemler
    9         1413          1098    +315     1288    +125  tum kalemler
   10         1570          1146    +424     1416    +154  tum kalemler
   11         1727          1194    +533     1544    +183  tum kalemler
   12         1884          1242    +642     1672    +212  tum kalemler

tum kalemler devredilirse esik: 7 ekip; secici devirde: 5 ekip (devir 666 ve 136)
artik isi sifir olan kalem: 0 / 18; artigi ekip isinin %40'ini asan kalem: 4 — sinama kosumu (%66.7, esik 11), dort gosterge baglama (%62.5, esik 10), olcekleme kurali (%60.0, esik 9), uyari kurali (%66.7, esik 8)
```

## Eşik Nerede

İlk iki satır peşin bedeli verir: bir ekibin yedi kursun tamamını kendi kurup üç yıl sürdürmesi
**157 iş günü**, aynı kalemleri platformun devralması **666 iş günü**dür — tek bir ekibin işinin
dört katından fazlası. Devirden sonra ekipte duran iş **48 iş günü**, ekip başına işin
**%30,6**'sı. Tür başına en yüksek artık gösterge kalemlerindedir (%54,2), çünkü hangi göstergenin
izleneceği ve uyarının hangi değerde çalacağı ekibin kendi işine bağlıdır; en düşüğü kayıt
kalemleridir (%15,8), altyapı durum kaydının tutulma biçimi ekipten ekibe değişmez.

Tablo kararı kalem başına verir. `surum kaydi` dört ekipte kendini öder; `sinama kosumu` on bir
ekipten önce ödemez, çünkü altı iş gününün dördü ekipte kalır ve net kazanç ikiye iner. **Beş
ekiplik bir kuruluşta on sekiz kalemin yalnız dördü kendini öder.**

Tarama üç bölge gösterir. **Bir ile dört ekip arasında platformsuz düzen kazanır**; tek ekipte tüm
kalemleri devretmek 557 iş günü kaybettirir. Beş ve altı ekipte seçici devir öne geçer. **Yedi
ekipten sonra tüm kalemlerin devri kazanır** ve fark açılır: on iki ekipte 642 iş günü. Beş ekiplik
satır bu kursun ilk kararıdır: beş ekip tüm kalemleri platforma taşıdığında **121 iş günü
kaybeder**, platformsuz düzenin %15,4 üstüne çıkar; aynı beş ekip seçici devirle 9 iş günü kazanır.
Soru "platform kuralım mı" değil, **"kaç ekip ve hangi kalemler"** sorusudur.

Son satır sızmayı adlandırır: on sekiz kalemin hiçbirinde artık iş sıfır değildir, dördünde ekip
işinin %40'ını aşar ve bu dördünün eşikleri 8, 9, 10 ve 11'dir — listenin en geç ödeyen ucu.
İki sayı aynı kaynaktan gelir: artık büyüdükçe net kazanç küçülür, eşik yukarı çıkar. **En çok
sızan kalem, en geç kendini ödeyen kalemdir.**

## Beş Ekip ve Dışına Çıkanlar

**PY5 — ölçüm ağının yazılımını beş ekip üretir ve her ekibin platformun biçimine sığmayan
kalemleri vardır.** **PY6 — dışına çıkan ekip o kalemin tam bedelini öder, üstüne platformun
ürettiği biçimle kendi biçimini bağdaştırmak için `ceil(ekip / 4)` uyum bedeli öder.** Gerekçe:
dışarı çıkmak platformdan kurtulmak değildir; ekip yine platformun sınırına değer ve çıktısını
onun beklediği biçime çevirmek zorunda kalır.

```js
// ekipler.mjs — bes ekip, disina cikilan kalemler ve muafiyetli esik
import { readFileSync } from "node:fs";
const KALEM = JSON.parse(readFileSync("kalem.json", "utf8"));
const bul = (ad) => KALEM.find((k) => k.ad === ad);

// PY5 — bolgesel olcum aginin yazilimini ureten bes ekip ve platformun bicimine sigmayan
// kalemleri; ekipler de gerekceler de kurgudur. PY6 — disina cikan ekip kalemin tam
// bedelini oder, ustune bagdastirma icin ceil(ekip / 4) uyum bedeli oder.
const EKIP = [
  ["sayac okuma", { "gelistirme ortami": "donanim benzetimi", "ag kurali": "dogrudan hat" }],
  ["dogrulama", { "olcekleme kurali": "gece toplu kosumu", "is yuku tanimi": "uzun is" }],
  ["faturalama", { "altyapi durum kaydi": "saklama zorunlulugu",
    "surum kaydi": "geriye donuk hesap", "gizli deger dondurme": "ayri imza zinciri" }],
  ["saha", { "dagitim adimi": "baglantisiz calisma", "gunluk toplama": "aralikli baglanti",
    "gelistirme ortami": "donanim benzetimi" }],
  ["raporlama", {}],
].map(([ad, disari]) => ({ ad, disari }));

const uyum = (k) => Math.ceil(k.ekip / 4);
const TAM = KALEM.reduce((t, k) => t + k.ekip, 0);
const bedel = (e, uygun) => KALEM.reduce((t, k) => t + (uygun(k)
  ? (k.ad in e.disari ? k.ekip + uyum(k) : k.kalan) : k.ekip), 0);
console.log("ekip".padEnd(13) + "disina cikan".padStart(13) + "disarida is".padStart(13) +
  "iceride artik".padStart(15) + "toplam".padStart(8) + "kurtulan".padStart(10));
for (const e of EKIP) {
  const d = Object.keys(e.disari);
  e.dis = d.reduce((t, ad) => t + bul(ad).ekip + uyum(bul(ad)), 0);
  e.ic = KALEM.filter((k) => !d.includes(k.ad)).reduce((t, k) => t + k.kalan, 0);
  e.toplam = e.dis + e.ic;
  console.log(e.ad.padEnd(13) + `${d.length}`.padStart(13) + `${e.dis}`.padStart(13) +
    `${e.ic}`.padStart(15) + `${e.toplam}`.padStart(8) + `${TAM - e.toplam}`.padStart(10));
}

const ODENEN = EKIP.reduce((t, e) => t + e.toplam, 0);
const DEVIR = KALEM.reduce((t, k) => t + k.devir, 0);
const dokunulan = new Set(EKIP.flatMap((e) => Object.keys(e.disari)));
const ort = ODENEN / EKIP.length;
console.log(`\nen az bir ekibin disina ciktigi kalem: ${dokunulan.size} / ${KALEM.length}; ` +
  `toplam disari cikma: ${EKIP.reduce((t, e) => t + Object.keys(e.disari).length, 0)}`);
console.log(`5 ekip — platformsuz ${5 * TAM}, tum kalemler muafiyetsiz ${DEVIR + 5 * 48}, ` +
  `tum kalemler muafiyetli ${DEVIR + ODENEN} is gunu`);
console.log(`muafiyetli ortalama ekip bedeli ${ort.toFixed(1)}; net kazanc ` +
  `${(TAM - ort).toFixed(1)}; esik ${Math.ceil(DEVIR / (TAM - ort))} ekip`);

// Secici devir ayni bes ekipte, muafiyetler yerinde dururken tekrar denenir.
const sec = (k) => k.esik <= 5;
const S = KALEM.filter(sec).reduce((t, k) => t + k.devir, 0) +
  EKIP.reduce((t, e) => t + bedel(e, sec), 0);
console.log(`5 ekip, secici devir, muafiyetli: ${S} is gunu — platformsuza gore ` +
  `${5 * TAM - S} is gunu, %${(100 * (5 * TAM - S) / (5 * TAM)).toFixed(1)}`);
```

```
ekip          disina cikan  disarida is  iceride artik  toplam  kurtulan
sayac okuma              2           24             43      67        90
dogrulama                2           19             42      61        96
faturalama               3           35             43      78        79
saha                     3           38             40      78        79
raporlama                0            0             48      48       109

en az bir ekibin disina ciktigi kalem: 9 / 18; toplam disari cikma: 10
5 ekip — platformsuz 785, tum kalemler muafiyetsiz 906, tum kalemler muafiyetli 998 is gunu
muafiyetli ortalama ekip bedeli 66.4; net kazanc 90.6; esik 8 ekip
5 ekip, secici devir, muafiyetli: 783 is gunu — platformsuza gore 2 is gunu, %0.3
```

Tek bir ekip platformun tarif ettiği ekiptir: `raporlama` on sekiz kalemin hepsini devralır ve 109
iş günü kurtarır. Diğer dördü kurtardığı işin bir kısmını geri verir. `faturalama` üç kalemin
dışındadır — saklama zorunluluğu, geriye dönük hesap ve ayrı imza zinciri yüzünden — ve 79 iş günü
kurtarır, `raporlama`nın otuz iş günü gerisinde. `saha` da 79 iş günü kurtarır ama dışarıda kalan
işi daha ağırdır (38'e karşı 35), çünkü bağlantısız çalışma dağıtım adımının tamamını dışarı taşır.

**On sekiz kalemin dokuzunda en az bir ekip yolun dışındadır**; kalem kümesinin yarısı beş ekibin
hepsine birden hizmet edemiyor. `gelistirme ortami` iki ekibin birden dışındadır: sayaç okuma da
saha da donanım benzetimine ihtiyaç duyar.

Muafiyetlerin faturası son iki satırdadır. Muafiyetsiz hesapta beş ekip 906 iş günü ödüyordu;
muafiyetlerle **998 iş gününe** çıkar, platformsuz düzenin (785) **%27 üstüne**. Ortalama ekip
bedeli 48'den 66,4'e çıktığı için net kazanç 109'dan 90,6'ya iner ve **eşik yedi ekipten sekize
kayar**. Seçici devir bile kaçamaz: `faturalama` seçili dört kalemden birinin, `surum kaydi`nin
dışındadır; seçici devrin beş ekipteki kazancı 9 iş gününden **2 iş gününe**, 785 iş günlük
toplamın **%0,3**'üne düşer. Bu ölçüde bir fark karar taşımaz.

## Özet

- Yedi kursun bıraktığı iş altı türde on sekiz kaleme ayrıldı: bir ekibin hepsini kendi kurup üç
  yıl sürdürmesi 157, platformun devralması 666 iş günüdür.
- Devirden sonra ekipte kalan artık 48 iş günü, ekip başına işin %30,6'sıdır; hiçbir kalemde sıfır
  değildir, en yükseği gösterge kalemlerindedir (%54,2).
- Ekip taraması üç bölge verdi: 1–4 ekipte platformsuz düzen, 5–6 ekipte seçici devir, 7 ekipten
  sonra tüm kalemlerin devri kazanır. Beş ekipte hepsini devretmek 121 iş günü kaybettirir.
- Beş ekiplik kuruluşta on sekiz kalemin yalnız dördü kendini öder; en çok sızan dört kalemin
  eşikleri 8, 9, 10 ve 11'dir — artık büyüdükçe eşik yukarı çıkar.
- Beş ekibin dördü en az bir kalemin dışına çıkar, on sekiz kalemin dokuzunda muafiyet vardır.
  Muafiyetler beş ekiplik toplamı 906'dan 998 iş gününe, eşiği yedi ekipten sekize, seçici devrin
  kazancını 9 iş gününden 2 iş gününe (%0,3) taşır.

## Sonraki Adım

Platform burada bir maliyet hesabı olarak kuruldu: devredilen kalem, ekipte kalan artık ve kendini
ödeme eşiği. Hesap kalem bedellerinin bilindiğini varsayıyordu; ekiplerin hangi kalemi isteyip
istemediği hiç sorulmadı. Devir bedeli ödendikten sonra bir kalemin kullanılmaması, onu 666 iş
günlük yatırımın ölü bir parçasına çevirir. Sonraki ders platformu iki işletme biçiminde koşturur —
talep üzerine yapılan ve ürün gibi yönetilen — ve benimsemeyi, hiç kullanılmayan yetenekleri, onlara
harcanan işi, geri bildirim döngüsünün uzunluğunu ve ürün yaklaşımının ürün ekiplerinden çektiği
kişi sayısını ölçer.
