Ders 13 / 14
Veri Aktarımı ve Çıkış Maliyeti
Bölge ve internet çıkışının ölçülmesi: aynı altı bin yüz seksen GB'ın tek alanda bin dört yüz kırk, iki alanda dört bin üç yüz seksen, iki bölgede yedi bin üç yüz yirmi birim yazması, sıkıştırmanın bin dört yüz altmış üç birim indirirken ikinci okuma kopyasının bin dört yüz birim eklemesi, aynı bin GB'ın içeri girerken sıfır çıkarken dokuz bin birim tutması, ve yirmi dört ayda biriken otuz üç bin altı yüz GB'ı çıkarmanın altmış dokuz aylık faturaya denk gelmesi.
İçindekiler
Bir önceki ders önbelleği yanlış alana koymanın yedi yüz yirmi iki birimlik bir kalem yazdığını gösterdi. O kalem tek bir akıştan geliyordu ve tek bir fiyatı vardı.
Ölçüm ağının tamamına bakıldığında sekiz ayrı akış var: sayaç toplayıcısı veri katmanına yazıyor, uygulama veri katmanından ve okuma kopyasından okuyor, önbelleğe yazıyor, veri katmanı okuma kopyasına çoğaltıyor, yedekler bir depoya gidiyor, günlükler toplayıcıya akıyor ve pano yanıtları genel ağa çıkıyor. Sonuncusu dışında hiçbiri istemci trafiği değil; yedisi sistemin kendi iç trafiği. Ve hepsi ücretli olabiliyor.
Belirleyen şey bayt miktarı değil, iki ucun nerede durduğudur. Bu ders aynı mimariyi üç yerleşimde koşturuyor, çıkış ücretini kalem kalem çıkarıyor, beş tasarım kararının bu ücrete etkisini tek tek ölçüyor ve verinin girmesiyle çıkması arasındaki bakışımsızlığı sayıyor.
- YV31. Kurgu bölgesel ölçüm ağının aylık akışları GB olarak şunlardır: toplayıcı → veri katmanı 1.400, veri katmanı → uygulama 900, uygulama → önbellek 780, veri katmanı → okuma kopyası 1.400, okuma kopyası → uygulama 620, veri katmanı → yedek 600, uygulama → günlük 320, uygulama → internet 160. Toplam 6.180 GB.
- YV32. Fiyatlar kurgudur, para biriminin adı birimdir: alan içi 0, alanlar arası 1, bölgeler arası 2, internete 9 birim/GB. İnternetten içeri giren bayt ücretsizdir. Modelin gerçeğe dayandığı tek nokta bu sıralamadır.
- YV33. Üç yerleşim ölçülür: her şey tek alanda; okuma kopyası, yedek ve günlük toplayıcısı ikinci alanda; aynı üçü ikinci bölgede.
- YV34. Sıkıştırma yalnız günlük, yedek ve pano yanıtlarına uygulanır ve kurgu oranı 0,38’dir. Çoğaltma akışı zaten sıkıştırılmış, sayaç yazmaları sıkıştırmaya değmeyecek kadar küçüktür.
- YV35. Kenar isabeti yüzde altmış yedidir ve kenar çıkışı GB başına beş birimdir. İkisi de M23/K02’de ölçüldü; burada girdi olarak kullanılır, yeniden ölçülmez.
- YV36. Veri katmanı ve nesne deposu birlikte ayda net 1.400 GB büyür; toplu çıkarma bir Gbit/s hattan yapılır. İkisi de kurgudur.
// veri/cikis.mjs — model: ayni mimari uc yerlesimde kosturulup cikis ucreti kalem kalem // cikariliyor. Akislar, fiyatlar ve buyume kurgudur; para biriminin adi "birim"dir. // Kenarin isabet orani M23/K02'de olculdu, burada girdidir. Rastgelelik yok. const AKIS = [ // [kaynak, hedef, aylik GB] ["toplayici", "veri", 1400], ["veri", "uygulama", 900], ["uygulama", "onbellek", 780], ["veri", "kopya", 1400], ["kopya", "uygulama", 620], ["veri", "yedek", 600], ["uygulama", "gunluk", 320], ["uygulama", "internet", 160], ]; const TEK = { toplayici: "b1a1", veri: "b1a1", uygulama: "b1a1", onbellek: "b1a1", kopya: "b1a1", yedek: "b1a1", gunluk: "b1a1" }; const ALAN = { ...TEK, kopya: "b1a2", yedek: "b1a2", gunluk: "b1a2" }; const BOLGE = { ...TEK, kopya: "b2a1", yedek: "b2a1", gunluk: "b2a1" }; const FIYAT = { "alan ici": 0, "alanlar arasi": 1, "bolgeler arasi": 2, "internete": 9 }; const sinif = (y, k, h) => h === "internet" ? "internete" : y[k] === y[h] ? "alan ici" : y[k][1] === y[h][1] ? "alanlar arasi" : "bolgeler arasi"; const hesap = (akis, y) => { const gb = { "alan ici": 0, "alanlar arasi": 0, "bolgeler arasi": 0, "internete": 0 }; for (const [k, h, v] of akis) gb[sinif(y, k, h)] += v; const toplam = Object.keys(gb).reduce((a, s) => a + gb[s] * FIYAT[s], 0); return { gb, toplam, tumGB: akis.reduce((a, f) => a + f[2], 0) }; }; const sutun = (E, sol = 1) => (h) => h.map((d, i) => String(d)[i < sol ? "padEnd" : "padStart"](E[i])).join(""); const y1 = sutun([16, 12, 16, 17, 12, 11, 15]); console.log(y1(["yerlesim", "alan ici", "alanlar arasi", "bolgeler arasi", "internete", "toplam GB", "ucret(birim)"])); for (const [ad, y] of [["tek alan", TEK], ["iki alan", ALAN], ["iki bolge", BOLGE]]) { const r = hesap(AKIS, y); console.log(y1([ad, ...Object.values(r.gb), r.tumGB, r.toplam.toFixed(0)])); } // --- Tasarim kararinin faturaya yazdigi ------------------------------------------ // Taban: iki alan. Her karar tabana tek basina uygulanir. const TABAN = hesap(AKIS, ALAN); const degis = (akis, hedef, carpan) => akis.map(([k, h, gb]) => [k, h, h === hedef ? gb * carpan : gb]); const SIK = 0.38, ISABET = 0.67, KENAR = 5; // sikistirma orani; kenar isabeti ve birim/GB const kenarli = 160 * KENAR + 160 * (1 - ISABET) * FIYAT["internete"]; const KARAR = [ ["ikinci okuma kopyasi", hesap([...AKIS, ["veri", "kopya2", 1400]], { ...ALAN, kopya2: "b1a2" })], ["gunluk ornekleme 1/5", hesap(degis(AKIS, "gunluk", 0.2), ALAN)], ["yedegi uzak bolgeye", hesap(AKIS, { ...ALAN, yedek: "b2a1" })], ["kenar, isabet %67", { tumGB: TABAN.tumGB, toplam: TABAN.toplam - 160 * 9 + kenarli }], ["sikistirma, oran 0.38", hesap(["gunluk", "yedek", "internet"] .reduce((a, h) => degis(a, h, SIK), AKIS), ALAN)], ]; const y2 = sutun([24, 13, 14, 15]); console.log("\n" + y2(["karar", "GB farki", "ucret farki", "yeni toplam"])); console.log(y2(["taban: iki alan", TABAN.tumGB.toFixed(0), "-", TABAN.toplam.toFixed(0)])); for (const [ad, r] of KARAR) console.log(y2([ad, (r.tumGB - TABAN.tumGB).toFixed(0), (r.toplam - TABAN.toplam).toFixed(0), r.toplam.toFixed(0)])); // --- Girmesi ucuz, cikmasi pahali ------------------------------------------------ const y3 = sutun([22, 14, 18]); console.log("\n" + y3(["1000 GB nereye", "birim/GB", "ucret(birim)"])); console.log(y3(["internetten iceri", 0, 0])); for (const s of Object.keys(FIYAT)) console.log(y3([s, FIYAT[s], 1000 * FIYAT[s]])); const BUYUME = 1400, HAT = 1; // net buyume GB/ay; cikarma hatti Gbit/s const y4 = sutun([10, 14, 18, 18, 14]); console.log("\n" + y4(["ay", "biriken GB", "cikarma(birim)", "kac aylik fatura", "hat(gun)"])); for (const ay of [12, 24, 36]) { const gb = BUYUME * ay, uc = gb * FIYAT["internete"]; console.log(y4([ay, gb, uc, (uc / TABAN.toplam).toFixed(1), (gb * 8 / HAT / 86400).toFixed(1)])); }
yerlesim alan ici alanlar arasi bolgeler arasi internete toplam GB ucret(birim) tek alan 6020 0 0 160 6180 1440 iki alan 3080 2940 0 160 6180 4380 iki bolge 3080 0 2940 160 6180 7320 karar GB farki ucret farki yeni toplam taban: iki alan 6180 - 4380 ikinci okuma kopyasi 1400 1400 5780 gunluk ornekleme 1/5 -256 -256 4124 yedegi uzak bolgeye 0 600 4980 kenar, isabet %67 0 -165 4215 sikistirma, oran 0.38 -670 -1463 2917 1000 GB nereye birim/GB ucret(birim) internetten iceri 0 0 alan ici 0 0 alanlar arasi 1 1000 bolgeler arasi 2 2000 internete 9 9000 ay biriken GB cikarma(birim) kac aylik fatura hat(gun) 12 16800 151200 34.5 1.6 24 33600 302400 69.0 3.1 36 50400 453600 103.6 4.7
Aynı Bayt, Üç Fatura
Birinci tablonun en önemli sütunu toplam GB’dir ve üç satırda da aynıdır: 6.180. Hiçbir yerleşimde tek bir bayt fazla ya da eksik taşınmıyor. Aynı bileşenler, aynı akışlar, aynı hacim.
Fatura ise bin dört yüz kırk, dört bin üç yüz seksen ve yedi bin üç yüz yirmi birim. Beş kattan fazla fark. Tek değişen, hangi bileşenin nerede durduğudur.
Tek alan satırında 6.020 GB alan içi kalıyor ve alan içi sıfır ücretlidir; geriye yalnız yüz altmış GB internet çıkışı ve onun bin dört yüz kırk birimi kalıyor. Bu satırın faturası tümüyle istemciye giden trafiktir; iç trafiğin bedeli yoktur.
İkinci satırda okuma kopyası, yedek deposu ve günlük toplayıcısı komşu alana taşınıyor. Taşınan bileşen sayısı üç, taşınan akış sayısı dört: veri katmanından kopyaya çoğaltma (1.400), kopyadan uygulamaya okuma (620), veri katmanından yedeğe (600) ve uygulamadan günlüğe (320). Toplam 2.940 GB, sınıf değiştirdiği anda GB başına bir birim yazıyor. Fatura üç katına çıkıyor ve karşılığı tek bir alanın kaybını atlatabilmektir.
Üçüncü satır aynı üç bileşeni ikinci bölgeye taşıyor. Akışlar aynı, hacim aynı, tek fark fiyatlandırma sınıfının değişmesi: 2.940 GB artık iki birim. Fatura yedi bin üç yüz yirmi. Dayanıklılığı bir alandan bir bölgeye çıkarmanın bedeli, aynı baytlar için iki bin dokuz yüz kırk birim daha yazmaktır.
İkinci satırın 2.940 GB’ı dört akışa eşit dağılmıyor. Çoğaltma tek başına 1.400 GB, yani sınır geçen trafiğin yüzde kırk yedisi; kalanı kopyadan okuma (620), yedek (600) ve günlük (320) paylaşıyor. Çoğaltma akışının büyüklüğü de tesadüf değil: toplayıcının veri katmanına yazdığı 1.400 GB ile birebir aynı. Okuma kopyası, yazma akışının bir aynasıdır ve alanlar arası faturanın yarısı bu yüzden okuma hacmine değil yazma hacmine bağlıdır. Okumayı önbelleğe alarak bu kalemi küçültmenin yolu yoktur.
Buradaki karar iki parçalıdır ve yalnız biri sende. Sınıfların nerede başlayıp bittiğini ve her sınıfın fiyatını sağlayıcı belirler; hangi bileşenin hangi sınıfın içinde duracağını sen belirlersin. Model bu ayrımı görünür kılıyor: fiyat listesi bir sabit, yerleşim haritası bir değişken.
Tasarım Kararının Faturaya Yazdığı
İkinci tablo iki alanlı yerleşimi taban alıyor ve beş kararı tek tek uyguluyor.
İkinci okuma kopyası faturaya bin dört yüz birim ekliyor. Sebebi doğrudandır: her kopya, veri katmanından kendisine akan çoğaltma trafiğinin tamamını yeniden yazdırır. Okuma kopyası eklemek okuma kapasitesi satın almak gibi görünür; faturada ise bir aktarım kalemi olarak da görünür ve o kalem kopya sayısıyla doğrusal büyür.
Günlük örnekleme en ucuz kazançtır: günlükleri beşte bire indirmek 256 GB ve 256 birim düşürüyor. GB farkı ile ücret farkının eşit olması alanlar arası fiyatın bir olmasındandır; aynı karar bölgeler arası yerleşimde iki katını kazandırırdı.
Yedeği uzak bölgeye almak GB farkı sıfırken faturaya altı yüz birim ekliyor. Tabloda bu iki sütunun ayrıştığı ilk satırdır ve dersin cümlesi buradadır: taşınan bayt değişmeden ücret değişebilir. Altı yüz birim, yedeğin bölge kaybından da kurtulmasının fiyatıdır.
Kenar yüz altmış GB’lık internet çıkışını yeniden fiyatlandırıyor: yüz altmış GB kenar çıkışından beş birim, ıskalanan yüzde otuz üçlük pay kaynak çıkışından dokuz birim. Toplam fark eksi yüz altmış beş birim — dört bin üç yüz seksenlik fatura içinde yüzde dörtten az. Kenarın asıl kazancı bu tabloda görünmez; o kazanç kaynak yükündeydi ve daha önce ölçüldü.
Sıkıştırma açık ara en büyük kalemdir: bin dört yüz altmış üç birim, tabanın üçte biri. Altı yüz yetmiş GB’lık düşüşün bin dört yüz altmış üç birim kazandırması, düşen baytların pahalı sınıflarda olmasındandır. Yüz GB’ı internete çıkmaktan kurtarmak dokuz yüz birim, komşu alana gitmekten kurtarmak yüz birimdir. Aynı sıkıştırma oranı, uygulandığı akışa göre dokuz kat farklı sonuç verir.
İki uç satır birlikte okunmalı: sıkıştırma bin dört yüz altmış üç birim indiriyor, ikinci kopya bin dört yüz birim ekliyor. Biri bir yapılandırma satırı, diğeri bir dayanıklılık kararı — ve faturada neredeyse birbirini götürüyorlar.
Beş satırın her biri tabana tek başına uygulandı ve toplanmaları doğru olmaz: sıkıştırma zaten örneklenmiş bir günlüğe uygulandığında ikinci kez aynı payı kazandırmaz. Satırların ayrıldığı asıl nokta geri alınabilirliktir. Günlük örnekleme ve sıkıştırma birer yapılandırma satırıdır; ertesi gün kapatılabilir ve fatura eski hâline döner. Kopya eklemek ve yedeği başka bölgeye almak ise veri taşımayı gerektirir; o kararlardan dönmek yeni bir aktarım kalemi yazar. Aynı tabloda hem bedava geri alınabilen hem de dönüşü paralı olan kararlar var.
Girmesi Ucuz, Çıkması Pahalı
Üçüncü tablo aynı bin GB’ı beş hedefe gönderiyor. İnternetten içeri girmek sıfır, alan içinde dolaşmak sıfır, komşu alana geçmek bin, komşu bölgeye geçmek iki bin, internete çıkmak dokuz bin birim.
Bu tablo tek bir olguyu gösteriyor: veriyi içeri koymak bedava, dışarı almak fiyat listesinin en üst satırı. Saha fotoğrafları ayda yüzlerce GB olarak sisteme giriyor ve girişleri hiçbir satıra yazılmıyor; aynı fotoğraflar bir gün dışarı çıkarılmak istendiğinde GB başına dokuz birim yazılacak. Bakışımsızlık bir hata değil, fiyatlandırmanın kendisidir.
Birinci tablonun akış listesinde girişin hiç yer almaması da bundandır: sahadan gelen fotoğraf ve sayaç okuması ücretsiz olduğu için modele girmesi faturayı değiştirmez. Sistemi büyüten akış, faturada hiç görünmeyen akıştır. Aylık gidere bakarak veri büyümesini izlemek bu yüzden çalışmaz; gider yatay seyrederken biriken hacim, dolayısıyla dördüncü tablonun çıkarma sütunu her ay yükselir.
Dördüncü tablo bu bakışımsızlığın zamanla ne yaptığını ölçüyor. Ayda net 1.400 GB büyüyen bir veri katmanı on iki ayda 16.800, yirmi dört ayda 33.600, otuz altı ayda 50.400 GB biriktiriyor. Bu birikimi bir kerede internete çıkarmak sırasıyla 151.200, 302.400 ve 453.600 birim tutuyor — yani 34,5, 69,0 ve 103,6 aylık faturaya denk geliyor.
Son sütun ikinci bir sınırı gösteriyor. Bir Gbit/s hattan 33.600 GB’ı geçirmek 3,1 gün sürüyor, 50.400 GB’ı 4,7 gün. Bu süre boyunca eski sistem çalışmaya, yeni veri birikmeye ve iki taraf da faturalanmaya devam eder.
Çıkış Ücreti ve Çıkış Maliyeti
Bu iki terim birbirine benziyor ve ayrılmaları gerekiyor. Çıkış ücreti her ay faturada duran bir kalemdir; bu modelde dört bin üç yüz seksen birimin bir bölümüdür ve tasarım kararlarıyla küçültülebilir. Çıkış maliyeti ise M23/K01’de kurulan kavramdır: kiralanan bir yerden ayrılmanın toplam bedeli. Bağ tek cümledir: çıkış ücreti çıkış maliyetinin fiyat etiketidir ve biriken veriyle birlikte her ay büyür.
Bu kursun geri alınamayan kalemi burada görünüyor. Yerleşim kararı kâğıt üzerinde geri alınabilir; bir bileşeni ikinci alandan birinci alana geri taşımak bir yapılandırma değişikliğidir. Ama bileşenin verisi taşınmadan bileşen taşınmaz ve o taşımanın kendisi bir çıkış kalemi yazar: otuz üç bin altı yüz GB’ı komşu bölgeden geri getirmek altmış yedi bin iki yüz birimdir, yani on beş aylık fatura. Yanlış yerleşimden çıkmak, yanlış yerleşimde kalmaktan pahalıya gelebilir.
Devredilen karar da bu tablodan okunuyor. Sağlayıcıda dört kalem var: dört sınıfın fiyatı, sınıf sınırlarının nerede çizildiği, bir akışın hangi sınıfa düştüğü ve girişin ücretsiz kalmaya devam edip etmeyeceği. Sende beş kalem var: hangi bileşenin nerede duracağı, kaç kopya tutulacağı, günlüğün ne kadarının gönderileceği, yedeğin nereye yazılacağı ve sıkıştırmanın açık olup olmayacağı. Dokuz kalemin beşi sende, ama tablodaki sayıların büyüklüğünü belirleyen çarpanlar öteki dörttedir.
Özet
- Aynı 6.180 GB üç yerleşimde bin dört yüz kırk, dört bin üç yüz seksen ve yedi bin üç yüz yirmi birim yazıyor. Bayt miktarı değil, iki ucun nerede durduğu fiyatlandırıyor.
- İki alana yayılmak 2.940 GB’ı alan içi sınıfından çıkarıp faturayı üç katına taşıyor; aynı üç bileşeni ikinci bölgeye almak iki bin dokuz yüz kırk birim daha ekliyor.
- Beş karar tek tek ölçüldüğünde sıkıştırma bin dört yüz altmış üç birim indiriyor, ikinci okuma kopyası bin dört yüz birim ekliyor. Yedeği uzak bölgeye almak GB farkı sıfırken altı yüz birim yazıyor: taşınan bayt değişmeden ücret değişebilir.
- Aynı bin GB içeri girerken sıfır, komşu alana bin, komşu bölgeye iki bin, internete dokuz bin birim tutuyor. Yirmi dört ayda biriken 33.600 GB’ı çıkarmak 302.400 birim, yani altmış dokuz aylık fatura ve bir Gbit/s hatta 3,1 gündür.
- Geri alınamayan kalem yerleşimin kendisi değil, altındaki veridir: bir bileşeni geri taşımak verisini de taşımak demektir ve o taşıma otuz üç bin altı yüz GB için altmış yedi bin iki yüz birim yazar.
Sonraki Adım
Bu ders veriyi bir yerden bir yere taşımanın fiyatını çıkardı ve yedek akışını sıradan bir kalem gibi ele aldı: ayda altı yüz GB, hedefine göre altı yüz ya da bin iki yüz birim.
Yedek, taşındığı için değil geri alınabildiği için vardır. Fiyat listesinde görünen o altı yüz GB’ın karşılığı, bir gün yanlış bir yazma ya da bozulmuş bir tablo bulunduğunda hangi ana dönülebileceğidir. Yönetilen bir veritabanında bu soru artık elde tutulan bir dosyaya değil, sağlayıcının anlık görüntü takvimine ve tuttuğu günlüklere bağlıdır.
Sonraki ders bunu ölçer: dönülebilen en eski nokta nerede, dönüş ne kadar sürüyor, dönerken hangi pencere kaybediliyor ve saklama süresi ile depolama ücreti arasındaki denge nereye oturuyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.