---
title: 'Al veya Geliştir Kararı'
source: 'https://academia.sh/tr/kurslar/kurumsal-baglam/al-veya-gelistir-karari'
course: 'Kurumsal Bağlam ve Tümleştirme'
language: tr
updated: '2026-08-17T18:10:34+00:00'
license: 'CC BY-SA 4.0'
---

# Al veya Geliştir Kararı

Bir yeteneğin iki seçeneğinin toplam sahip olma maliyetiyle karşılaştırılması: uyarlama, tümleştirme bağı, eğitim, sürüm yükseltme ve çıkış kalemlerinin ayrı ayrı toplanması, satın alma 402 saat artı yılda 114 saatken geliştirmenin 606 saat artı yılda 54 saat olması, kazananın 3,40 yıllık ufukta değişmesi, sahibi dışarıda olan sekiz noktanın kesilme riski eklendiğinde başabaş ufkun 1,79 yıla inmesi ve ürünün yerleşik kapsamı büyüdükçe aynı sınırın 12,00 yıla çıkması.

Önceki ders elde olanla çalıştı: değiştirilemeyen bir sistem duruyordu, çevresine bir katman
kuruldu ve sahipliği adım adım devredildi. O sistem bir zamanlar ya satın alınmıştı ya içeride
yazılmıştı; bugün ödenen sarmalayıcı, koordinasyon ve pencere maliyetlerinin hepsi o eski kararın
devamıdır. Bu ders, kararın kendisini ölçmeye çalışır.

Bölgesel kütüphane ağının kurgu modelinde yönetim birimi bir raporlama yüzeyi istiyor. İki
seçenek var: dışarıdan bir ürün almak ya da içeride yazmak. Karar "hangisi daha ucuz" diye
sorulursa yanıtsız kalır, çünkü ucuzluk bir zaman aralığı belirtilmeden tanımlı değildir.

## Toplam Sahip Olma Maliyeti Kalem Kalemdir

Satın alma kararı çoğu zaman tek bir sayıyla — kurulum bedeliyle — savunulur. Oysa bir yeteneğin
ömrü boyunca ödediği beş ayrı kalem vardır ve ikisi yalnız bir kez, ikisi her yıl, biri de
ayrılırken ödenir.

**TM20: yetenek sayısı, kullanıcı sayısı ve saat katsayıları kurgudur.** **TM21: çıkış maliyeti
bu derste ölçülmez; bir kaynak ağacı taranarak başka bir derste ölçülmüştü ve buraya hazır bir
kalem olarak girer — satın alınan yol için 96, geliştirilen yol için 24 saat.** **TM22: toplam
sahip olma maliyeti bir kez ödenen kalemlerin toplamı artı ufuk çarpı yıllık kalemlerdir; çıkış
ufkun sonunda ödenir.**

```js
// karar.mjs — bir yetenegin iki secenegi: satin almak ve gelistirmek. Butun kalemler model
// buyuklukleriyle hesaplanir; cikis kalemi disaridan girdi olarak alinir (TM21).
const IHTIYAC = 18;        // yonetim biriminin istedigi rapor yetenegi
const KULLANICI = 9;       // yuzeyi kullanan kisi
const KAYNAK_BAG = 5;      // baglanacak kaynak sistem

// TM20: saat katsayilari ve buyuklukler kurgudur.
const K = { kurulum: 40, uyarlamaSaat: 14, yazmaSaat: 26, alBag: 22, gelBag: 12,
  egitimAl: 4, egitimGel: 6, surumSayisi: 2, surumNokta: 3, bakimYetenek: 2.5,
  cikisAl: 96, cikisGel: 24 };

// Bir secenegin kalemleri. "yerlesik": urunun hazir sagladigi yetenek sayisi.
function kalemler(yerlesik) {
  const uyarlanan = IHTIYAC - yerlesik;
  const alBag = KAYNAK_BAG + 1;                     // urun kendi veri kopyasini da ister
  const al = {
    uyarlama: [K.kurulum + uyarlanan * K.uyarlamaSaat, 0],
    "tumlestirme bagi": [alBag * K.alBag, 0],
    egitim: [KULLANICI * K.egitimAl, KULLANICI * 2 * K.surumSayisi],
    "surum yukseltme": [0, K.surumSayisi * (uyarlanan + alBag) * K.surumNokta],
    cikis: [K.cikisAl, 0],
  };
  const gel = {
    uyarlama: [IHTIYAC * K.yazmaSaat, 0],
    "tumlestirme bagi": [KAYNAK_BAG * K.gelBag, 0],
    egitim: [KULLANICI * K.egitimGel, KULLANICI],
    "surum yukseltme": [0, IHTIYAC * K.bakimYetenek],
    cikis: [K.cikisGel, 0],
  };
  const topla = (o, i) => Object.values(o).reduce((t, v) => t + v[i], 0);
  return { al, gel, alBir: topla(al, 0), alYil: topla(al, 1),
    gelBir: topla(gel, 0), gelYil: topla(gel, 1), uyarlanan, alBag };
}

// TM22: toplam sahip olma maliyeti = bir kez odenen + ufuk x yillik.
const tso = (bir, yil, ufuk) => bir + ufuk * yil;
// Iki dogrunun kesistigi ufuk; negatifse kesisim yok.
const basabas = (b1, y1, b2, y2) => (b1 - b2) / (y2 - y1);

const m = kalemler(11);
console.log(`ihtiyac ${IHTIYAC} yetenek, urun ${IHTIYAC - m.uyarlanan} tanesini yerlesik sagliyor, ` +
  `${m.uyarlanan} tanesi uyarlanacak; bag: al ${m.alBag}, gelistir ${KAYNAK_BAG}\n`);
console.log("kalem              al (bir kez)  al (yillik)  gelistir (bir kez)  gelistir (yillik)");
console.log("------------------ ------------ ------------ ------------------- ------------------");
for (const ad of Object.keys(m.al))
  console.log(`${ad.padEnd(18)} ${m.al[ad][0].toFixed(0).padStart(12)} ${m.al[ad][1].toFixed(0).padStart(12)} ` +
    `${m.gel[ad][0].toFixed(0).padStart(19)} ${m.gel[ad][1].toFixed(0).padStart(18)}`);
console.log(`${"toplam".padEnd(18)} ${m.alBir.toFixed(0).padStart(12)} ${m.alYil.toFixed(0).padStart(12)} ` +
  `${m.gelBir.toFixed(0).padStart(19)} ${m.gelYil.toFixed(0).padStart(18)}`);

// TM23: sahibi disarida olan yol yilda 0,12, sahibi iceride olan yol 0,20 olasilikla kesilir.
// Dis yol yalniz "al" seceneginde vardir; ic yol (kaynak sistemler) iki secenekte de.
const DIS = 0.12, IC = 0.20;
const disBedel = K.cikisAl + (K.kurulum + m.uyarlanan * K.uyarlamaSaat) + m.alBag * K.alBag;
const icBedelAl = KAYNAK_BAG * K.alBag, icBedelGel = KAYNAK_BAG * K.gelBag;
const alYilR = m.alYil + DIS * disBedel + IC * icBedelAl;
const gelYilR = m.gelYil + IC * icBedelGel;

console.log("\nufuk (yil)      al  gelistir  kazanan   fark    al (riskli)  gelistir (riskli)  kazanan");
console.log("---------- ------- --------- -------- ------ -------------- ------------------ --------");
for (const ufuk of [1, 2, 3, 4, 5, 8]) {
  const a = tso(m.alBir, m.alYil, ufuk), g = tso(m.gelBir, m.gelYil, ufuk);
  const ar = tso(m.alBir, alYilR, ufuk), gr = tso(m.gelBir, gelYilR, ufuk);
  console.log(`${String(ufuk).padStart(10)} ${a.toFixed(0).padStart(7)} ${g.toFixed(0).padStart(9)} ` +
    `${(a < g ? "al" : "gelistir").padStart(8)} ${Math.abs(a - g).toFixed(0).padStart(6)} ` +
    `${ar.toFixed(0).padStart(14)} ${gr.toFixed(0).padStart(18)} ${(ar < gr ? "al" : "gelistir").padStart(8)}`);
}
console.log(`\nsahibi disarida olan nokta: al ${m.uyarlanan + 1}, gelistir 0; ` +
  `sahibi iceride olan bag: iki secenekte de ${KAYNAK_BAG}`);
console.log(`kesilme bedeli: dis ${disBedel} saat (al), ic ${icBedelAl} / ${icBedelGel} saat; ` +
  `yillik beklenen al ${(DIS * disBedel + IC * icBedelAl).toFixed(1)}, gelistir ${(IC * icBedelGel).toFixed(1)} saat`);
console.log(`basabas ufuk: risksiz ${basabas(m.alBir, m.alYil, m.gelBir, m.gelYil).toFixed(2)} yil, ` +
  `riskli ${basabas(m.alBir, alYilR, m.gelBir, gelYilR).toFixed(2)} yil`);

console.log("\nyerlesik  uyarlanan  al (bir kez)  al (yillik)  basabas ufuk (yil)  5 yilda kazanan");
console.log("--------- ---------- ------------- ------------ ------------------- ----------------");
for (const yerlesik of [6, 9, 11, 14, 17]) {
  const s = kalemler(yerlesik);
  const b = basabas(s.alBir, s.alYil, s.gelBir, s.gelYil);
  const kazanan = tso(s.alBir, s.alYil, 5) < tso(s.gelBir, s.gelYil, 5) ? "al" : "gelistir";
  console.log(`${String(yerlesik).padStart(9)} ${String(s.uyarlanan).padStart(10)} ` +
    `${s.alBir.toFixed(0).padStart(13)} ${s.alYil.toFixed(0).padStart(12)} ${b.toFixed(2).padStart(19)} ` +
    `${kazanan.padStart(16)}`);
}
```

```
ihtiyac 18 yetenek, urun 11 tanesini yerlesik sagliyor, 7 tanesi uyarlanacak; bag: al 6, gelistir 5

kalem              al (bir kez)  al (yillik)  gelistir (bir kez)  gelistir (yillik)
------------------ ------------ ------------ ------------------- ------------------
uyarlama                    138            0                 468                  0
tumlestirme bagi            132            0                  60                  0
egitim                       36           36                  54                  9
surum yukseltme               0           78                   0                 45
cikis                        96            0                  24                  0
toplam                      402          114                 606                 54

ufuk (yil)      al  gelistir  kazanan   fark    al (riskli)  gelistir (riskli)  kazanan
---------- ------- --------- -------- ------ -------------- ------------------ --------
         1     516       660       al    144            582                672       al
         2     630       714       al     84            762                738 gelistir
         3     744       768       al     24            942                804 gelistir
         4     858       822 gelistir     36           1122                870 gelistir
         5     972       876 gelistir     96           1302                936 gelistir
         8    1314      1038 gelistir    276           1841               1134 gelistir

sahibi disarida olan nokta: al 8, gelistir 0; sahibi iceride olan bag: iki secenekte de 5
kesilme bedeli: dis 366 saat (al), ic 110 / 60 saat; yillik beklenen al 65.9, gelistir 12.0 saat
basabas ufuk: risksiz 3.40 yil, riskli 1.79 yil

yerlesik  uyarlanan  al (bir kez)  al (yillik)  basabas ufuk (yil)  5 yilda kazanan
--------- ---------- ------------- ------------ ------------------- ----------------
        6         12           472          144                1.49         gelistir
        9          9           430          126                2.44         gelistir
       11          7           402          114                3.40         gelistir
       14          4           360           96                5.86               al
       17          1           318           78               12.00               al
```

## Kazanan Zaman Ufkuna Bağlıdır

İlk tablo iki seçeneği beş kaleme ayırıyor ve kalemlerin farklı yönlere baktığını gösteriyor.
Satın alma bir kez ödenende üçte bir kadar ucuz (402'ye karşı 606 saat) ama yıllıkta iki kattan
fazla pahalı (114'e karşı 54 saat). İki kalem bu farkı üretiyor. Sürüm yükseltme kalemi satın
almada 78 saat, geliştirmede 45 saattir; satın almadaki sayı ürünün kendi takvimine değil, o
takvimin **kaç noktaya dokunduğuna** bağlıdır — yedi uyarlama noktası ve altı bağ. Uyarlama
azalırsa yükseltme de ucuzlar; uyarlama arttıkça her sürüm daha pahalıya gelir.

Bağ kalemi ikinci farkı taşıyor. Satın alınan yol beş kaynağa değil altısına bağlanıyor, çünkü
ürün veriyi kendi kopyasında ister; ve her bağ kendi uyarlayıcısını gerektirdiği için bağ başına
maliyet 22 saat, içeride yazılanda 12 saattir. Aynı beş kaynak, iki seçenekte 132'ye karşı 60
saat ediyor.

İkinci tablo bu iki doğruyu ufuk boyunca izliyor. Bir yıllık ufukta satın alma 144 saat önde, üç
yılda fark 24 saate iniyor, dördüncü yılda geliştirme öne geçiyor. Kesişim tam olarak **3,40
yıldadır**. Üç yıllık satırdaki 24 saatlik fark, katsayıların birini biraz farklı seçmenin
kazananı değiştireceği kadar küçüktür; kararı savunan belge tek bir kazanan adı değil, ufku ve
farkı da yazmalıdır.

## Bağımlılık Riski de Bir Kalemdir

Buraya kadarki hesap iki yolun da sorunsuz sürdüğünü varsayıyor. Kurum ölçeğinde bu varsayım
tutmaz: bir yolun sahibi başkasıysa o yol kesilebilir ve kesilme bedeli ölçülebilir.

**TM23: sahibi dışarıda olan bir yol yılda 0,12, sahibi içeride olan bir yol 0,20 olasılıkla
kesilir.** Satın alınan yolda sahibi dışarıda olan sekiz nokta var: yedi uyarlama noktası ve
ürünün kendi veri kopyası bağı. Bunların kesilmesinin bedeli çıkış artı yeniden uyarlama artı
bağlar, yani 366 saat. Geliştirilen yolda dışarıda sahip yoktur; iki seçenekte de beş kaynak
bağının sahibi başka ekiplerdir ve onların kesilme bedeli satın almada 110, geliştirmede 60
saattir.

Yıllık beklenen bedel satın almada 65,9, geliştirmede 12,0 saat çıkıyor. Bu iki sayı yıllık
kalemin üstüne eklendiğinde başabaş ufku **3,40 yıldan 1,79 yıla** iniyor: risk hesaba katılmadan
üç yıl boyunca kazanan görünen seçenek, katıldığında ikinci yıldan itibaren kaybediyor. Bağımlılık
riski bir uyarı cümlesi değil, yıllık bir kalemdir; kaleme çevrilmediği sürece karara giremez.

Son tablo kararın aslında hangi değişkene bağlı olduğunu gösteriyor. Ürünün yerleşik sağladığı
yetenek 6'dan 17'ye çıktığında başabaş ufku 1,49 yıldan 12,00 yıla uzuyor ve beş yıllık ufkun
kazananı değişiyor. İki seçenek arasındaki fark, seçeneklerin adında değil, ürünün ihtiyacın ne
kadarını hazır karşıladığındadır. Kapsam yükseldikçe uyarlama noktası azalıyor, uyarlama azaldıkça
hem bir kez ödenen hem yıllık sürüm kalemi düşüyor; aynı hesap aynı katsayılarla ters yöne dönüyor.

## Özet

- Toplam sahip olma maliyeti beş kalemdir: satın alma 402 saat artı yılda 114, geliştirme 606 saat
  artı yılda 54; bir kez ödenende ucuz olan seçenek yıllıkta pahalıdır (TM20, TM22).
- Sürüm yükseltme kalemi ürünün takvimine değil uyarlanan nokta sayısına bağlıdır: yedi uyarlama
  ve altı bağ yılda 78 saat ederken içeride yazılanın bakımı 45 saattir.
- Satın alınan yol beş kaynağa değil altısına bağlanır ve bağ başına 22 saat öder; aynı kaynaklar
  içeride yazılanda 60 saat eder. Bir ürünün kendi veri kopyası bir bağ kalemidir.
- Kazanan ufka bağlıdır: başabaş 3,40 yıl, üç yıllık ufuktaki fark yalnız 24 saat. Kararı savunan
  belge kazanan adıyla birlikte ufku ve farkı yazmalıdır.
- Bağımlılık riski yıllık bir kalemdir. Sahibi dışarıda olan sekiz nokta ve 366 saatlik kesilme
  bedeli yılda 65,9 saate karşılık geliyor; bu kalem eklendiğinde başabaş ufku 1,79 yıla iniyor
  (TM21, TM23).

## Kurs Kapanışı

Kurs boyunca aynı kurgu ağ on kez modellendi ve her ders aynı ağdan farklı bir niceliği okudu.

| Ders | Modellenen kurum nesnesi | Ölçülen nicelik | Kararın bedeli |
|---|---|---|---|
| Kurumsal Mimari Kavramı | 9 sistem, 6 sahip, 13 yetenek, 10 veri varlığı | Hizalama 11/13; 2 boşluk, 6 örtüşme, 1 yetim sistem; 23 yönlü bağın 20'si sahiplik sınırını geçiyor | 6 örtüşmenin 5'i iki ayrı sahibe yayılıyor ve 5 uzlaşma gerektiriyor |
| Çerçeveler | Katman, görünüm, yönetişim döngüsü, olgunluk basamağı | Ayrıntılı biçim 12 sorunun 10'unu 106 kalemle, hafif biçim 5'ini 22 kalemle yanıtlıyor | Ek yanıt başına 16,8 kalem; değişiklik başına bakım 18'e karşı 2 kalem |
| İş Süreç Modelleme | 16 adımlı süreç; aktör, girdi kümesi, çıktı | 10 adım otomatik, 4'ü insan kararı; 8 aktör, 5 sahip, 10 el değiştirmenin 9'unda sahip değişiyor | Sınır zorlanınca 62 dokunuş kazanılıyor ama 10 yanlış karar ve 30 geri dönüş çıkıyor; başabaş 6,20 dokunuş |
| Yetenek Haritalama | Yetenek, karşılayan sistem, yazılan veri, okuyan sistem zinciri | 13 yeteneğin 11'i izlenebiliyor; kısa zincir 1,55, tam zincir 4,73 sistem gösteriyor | Koordinasyon turu 5'ten 29'a çıkıyor; dokunulacak sistemlerin yüzde 67'si ilk halkada görünmüyor |
| Tümleştirme Kalıpları | Tek bir bağın dört kalıpla kurulmuş hali | Uzak çağrıda yüz sorguya 100 kaynak isteği, ötekilerde 0; tazelik penceresi 0 ve 1 tik | Kaynak tek bir sütun adını değiştirince 5 bağın 3'ü sessizce yanlış yanıt veriyor, 3 sahibin 2'siyle koordinasyon gerekiyor |
| Kurumsal Servis Veri Yolu | Dokuz akışın ikili ve merkezî düzeni | 9'a karşı 8 yazılan birim; merkez 6 olay için 24 ileti işliyor; merkez kapalıyken 18 teslimden 0'ı gerçekleşiyor | Yedinci sistem 5 birim ve 4 sahipten 2 birim ve 2 sahibe iniyor; karşılığında merkezde sahibi başkası olan 4 kural birikiyor |
| Ana Veri Yönetimi | Üç sistemde tutulan üye kaydı ve altın kayıt | 720 yazma olayı dağıtık düzende 131, altın kayıtla 95 çakışan (üye, alan) çifti üretiyor | Kalan tutarsızlık iki düzende de 48; yazma adımı 1,00'dan 1,61'e çıkıyor, kaynak kapalıyken kabul edilen yazma 496/720'den 238/720'ye iniyor |
| Veri Ambarı ve Dönüştürme Hatları | Beş rapor, dört kaynak, sekiz adımlı dönüştürme hattı | Günde 163 sorgu ve 5.354.308 okunan kayıt; dönem taramasında işletim yükü yüzde 90,2, 27,2 ve 79,2 | Tek bir alan değişimi tek adımı kırıyor ama beş raporun beşi düşüyor; tazeliği bir saat olan rapor hiçbir dönemde ambara geçemiyor |
| Eski Sistemlerle Çalışma | Kaynak koduna erişilemeyen kayıt sistemi ve sarmalayıcı | 16 (çağıran, işlem) çiftinin 9'u kapanıyor, yüzde 71,8 çağrı; 7 çift ve 16.927 çağrı dışarıda kalıyor | Koordinasyon 24 adımdan 13'e iniyor ama birlikte yazılan pencere en yavaş sahibin turu yüzünden 30 günün altına inmiyor |
| Al veya Geliştir Kararı | Bir yeteneğin iki seçeneği ve beş maliyet kalemi | Satın alma 402 saat artı yılda 114, geliştirme 606 artı yılda 54; başabaş 3,40 yıl | Sahibi dışarıda olan 8 nokta yılda 65,9 saatlik beklenen bedel getiriyor ve başabaş ufku 1,79 yıla iniyor |

On dersin ortak kuralı tek cümledir: **kurum ölçeğinde ölçü bağdır.** Bir sistemin içinde ölçüm
birimi çağrı, kayıt ya da saniyeydi. Kurum ölçeğinde bunların hiçbiri tek başına karar taşımıyor;
her tabloda belirleyici olan bağ sayısı ve yönü, o bağın hangi sahiplik sınırını geçtiği ve bir
değişimin kaç sahibi koordinasyona çağırdığı oldu. Sarmalayıcının kapsamı da, altın kaydın seçimi
de, ambarın dönemi de aynı yerde sınırlandı: kendi kararının ulaşamadığı sahipte.

Kursun bıraktığı boşluk şudur. Bağlar kuruldu ve sayıldı, sahiplik ayrıldı, alınacak ile
geliştirilecek ayrıldı — ama bu kararların hiçbiri **hangi niteliği** koruduğunu söylemedi. Bir
merkezî düzen neyin uğruna seçildi: erişilebilirlik mi, değiştirilebilirlik mi, tutarlılık mı?
Üstelik kararların kâğıtta kalıp kalmadığını, verildikleri gibi sürüp sürmediğini denetleyen bir
mekanizma da kurulmadı. Sıradaki kurs, **M20/K04 Kalite Nitelikleri ve Yönetişim**, bu iki
soruyla açılır.
