65.534, 65.535 ve 65.536 numaralı satırlardan oluşan mono bir sütun, satırları kesen sert lime bir çizgi, altında solarak kaybolan hayalet satırlar ve çizginin altında kalan 15.841 satırı işaret eden bir altyazı
İçgörüler
Strateji

Çizginin Altında Kalan 15.841 Satır

iFinances Editörlüğü22 Temmuz 20267 dk

2020 sonbaharında sekiz gün boyunca İngiltere'nin günlük vaka raporlarında 15.841 pozitif vaka eksikti — çünkü bir veri hattı, 65.536. satırda duran bir dosya formatına yazıyordu. Format sözünü tuttu; toplamları izleyen kimse yoktu.

Gözden Kaçanlar · Bölüm 07/10

3 Ekim 2020, Cumartesi gecesinin ilk saatleri. İngiltere'nin halk sağlığı veri altyapısında otomatik bir görev, aylardır her gece yaptığı işi yapıyor: ticari laboratuvarlardan gelen COVID-19 test sonuçlarını — her kaydın bir satır olduğu düz CSV dosyalarını — topluyor ve ülkenin her öğleden sonra izlediği panelleri besleyen bir şablona yüklüyor.

Şablon doluyor. Satır 65.530. Satır 65.534. Satır 65.535. Satır 65.536.

Sonra hiçbir şey. Hata mesajı yok, uyarı yok, başarısız durum kodu yok. Görev tamamlanıyor. Dosya yoluna devam ediyor. Panel güncelleniyor. Günlük vaka sayısı akşam haberlerinde beliriyor, dünküyle karşılaştırılıyor, modelleri besliyor, kararları şekillendiriyor.

Çizginin üstündeki satırların hepsi gerçek. Çizginin altındaki satırlar da gerçek — yalnızca, raporlama sürecinin görebildiği hiçbir yerde artık yoklar. Sekiz gündür İngiltere'nin günlük vaka sayıları zamanında, düzgün biçimlendirilmiş ve eksik geliyor. Hattın içindeki kimse bunu bilmiyor; çünkü hattın her bileşeni "başarılı" raporu veriyor.

Bu gece biri, nihayet, rakamların anlamlı olmaktan çıktığını fark ediyor.

Gerçekte ne oldu

4 Ekim 2020'de Birleşik Krallık hükümeti, 25 Eylül – 2 Ekim arasındaki dönemde 15.841 pozitif COVID-19 vakasının günlük raporlanan rakamlarda eksik olduğunu duyurdu. Vakaların kendisi geçerliydi: testler yapılmış, sonuçlar pozitif çıkmış ve ilgili kişilere bildirilmişti. Başarısız olan aradaki adımdı — laboratuvar dosyalarından merkezi raporlama ve temas takibi sistemlerine aktarım.

Mekanizma neredeyse sıradandı. Test sonuçları laboratuvarlardan CSV dosyaları olarak geliyordu. Public Health England'daki otomatik bir süreç bunları, eski .xls Excel formatında kaydedilmiş miras bir şablona yüklüyordu — şartnamesi bir çalışma sayfasını 65.536 satırla sınırlayan bir format. Her vaka şablonda birden çok satır kapladığından, pratik tavan dosya başına yaklaşık 1.400 vakaya iniyordu. Bir parti bu tavanı aştığında, ötesindeki satırlar reddedilmiyor, işaretlenmiyor, kuyruğa alınmıyordu. Yalnızca dışarıda kalıyordu.

Public Health England'ın geçici genel müdürü Michael Brodie, kurumun açıklamasında keşfi şöyle tarif etti: "2 Ekim Cuma gecesi, pozitif laboratuvar sonuçlarını raporlama panellerine aktaran veri yükleme sürecinde teknik bir sorun tespit edildi."

Aktarılan ilk çözüm ise basitti: gelen dosyaları daha küçük partilere bölmek — böylece hiçbir dosya tavana ulaşamayacaktı. Sınır on yıllardır yerinden oynamamıştı; hat ise bundan hiç haberdar edilmemişti.

Sonuç asimetrikti. Eksik vakalara sonuçları bildirilmişti; yani kişiler durumu biliyordu. Ama temasları takip ekiplerine iletilmemişti; yani temas ettikleri kişiler bilmiyordu. Birikmiş kayıtlar izleyen günlerde takip sistemine aktarıldı — sürecin tasarlandığından günler sonra.

Format sözünü tuttu

Bu olayı "Excel hatası" diye dosyalamak cazip; nitekim haberlerin çoğu öyle yaptı. Oysa kayıt, daha dikkatli okunmayı hak ediyor.

.xls formatı bir 1980'ler mühendisliği ürünü — kökeni 1987'ye uzanıyor — ve 1997'den beri yürürlükte olan son sürümü kapasitesini açıkça söylüyor: 65.536 satır, bir satır bile fazla değil. Bu bir hata ya da zayıflık değil; yirmi yılı aşkın süredir tam olarak belgelendiği gibi duran, yayımlanmış bir sınır. 2 Ekim 2020 gecesi format, belgelerinin söylediğini harfiyen yaptı. Araç sözünü tuttu.

Kırılan, onun çevresindeki her şeydi. Öyle bir hat kurulmuştu ki bir dosya belgelenmiş kapasitesine ulaşıp yoluna devam edebiliyordu — sessizce, tekrar tekrar, gece gece — ve hiçbir bileşen şu bariz soruyu sormuyordu: çıkan satır sayısı, giren satır sayısıyla eşleşiyor mu?

Sessiz hatayı tehlikeli yapan da budur: gürültü çıkarmaz. Çöken bir sistem kendini duyurur; eksik yükleyen bir sistem ise ertesi gece de rapor üretmeye devam eder. Rakamlar gelir, tablolar dolar, toplantılar yapılır — eksik olan, ancak biri iki bağımsız kaynağı yan yana koyduğunda görünür hale gelir.

Sinyaller ortadaydı. Parti parti, tam olarak aynı satır sayısında biten dosyalar. Test pozitifliği düşmezken yataylaşan vaka sayıları. Kendisini üreten girdileri izlemeyi sessizce bırakmış bir raporlama toplamı. Bunlardan herhangi birini yakalamak öngörü de yeni teknoloji de istemiyordu. Tek işi bir sınırın iki yakasında toplamları izlemek olan bir katman istiyordu — elektronik tablodan da bilgisayardan da eski bir kontrol: kontrol toplamı. Gireni sayın, çıkanı sayın ve aradaki her farkı, süreç ilerlemeden yanıtlanması zorunlu bir soru olarak ele alın.

Satır sınırı, okumak isteyen herkes için şartnamede yazılıydı. Eksik olan, toplamları izleyen katmandı — dosyaların hep aynı satırda bittiğini fark edecek olan.

Sessiz kesilme — verinin fark edilmeden budanması — bir elektronik tablo sorunu değildir. Verinin bir sınırı geçtiği ve karşı tarafta hiçbir şeyin eksiksiz geldiğini doğrulamadığı her yerde yaşanır.

Sizin kapanışınız için anlamı

Ay sonu kapanışınız da bir veri hattıdır. Banka ekstresi dışa aktarımları, ERP çıktıları, e-fatura listeleri, defter dökümleri, sistemler ve ekipler arasında elden ele geçen dosyalar — her aktarım bir sınırdır ve her sınır, kayıtların tek bir hata mesajı bile üretmeden kaybolabileceği bir yerdir.

Üstelik finans tarafında dosyalar, halk sağlığı verisinden çoğu zaman daha çeşitlidir: her bankanın ekstresi ayrı bir düzenle gelir, her ERP kendi sütun adlarını kullanır, e-fatura listeleri döneme ve platforma göre değişir. Biçim çeşitliliği arttıkça bir aktarımın sessizce eksik kalma ihtimali de artar — ve "dosya açıldı, veri geldi" rahatlığı tam da bu yüzden yanıltıcıdır.

  • Hatasız yüklenen dosya, eksiksiz dosya demek değildir. "İçe aktarma başarılı" yalnızca sürecin çalıştığını söyler; yolda neyin düştüğü hakkında hiçbir şey söylemez.
  • Her sınırda sayıları ve toplamları mutabık kılın: kaynaktaki satır sayısı ve toplamlar ile hedeftekiler. Tek satırlık fark bile bir yuvarlama artığı değil, bir sorudur.
  • Düzenlilikten şüphelenin. Hep aynı rakamda duran veri — aynı satır sayısı, aynı dosya boyutu, aynı kesim tarihi — gerçeklik gibi değil, bir sınır gibi davranıyordur.
  • Araçların sınırları tasarım gereğidir; kusur bu değildir. Süreçler, aralarındaki toplamları kimse izlemediğinde kırılır. Kontrol araca değil, sürece aittir.

Bu ilkelerin hiçbiri yeni değildir. Muhasebe mesleği mizanı ve mutabakatı tam da bu yüzden geliştirdi: iki bağımsız kaydın birbirini doğrulaması, tek bir kaydın kendini doğrulamasından her zaman daha güçlüdür. Ay sonunda banka bakiyesi ile defter bakiyesini karşılaştırırken yaptığınız şey, özünde o gece eksik olan kontrolün ta kendisidir — iki tarafın toplamını yan yana koymak ve farkın hesabını sormak. Fark yoksa süreç ilerler; fark varsa, açıklanana kadar hiçbir rakam rapora girmez.

Toplamları izleyen katman

Anomali tespitinin bir finans yığınındaki yeri tam olarak burasıdır. Daha akıllı bir tablo değil, kullandığınız araçların yerine geçen bir şey de değil — sınırların üzerine oturan ve toplamlar anlamlı olmaktan çıktığında bunu fark eden bir katman. Örüntünün öngördüğünden kısa gelen bir banka hareketi partisi. Sayısı artık kaynak sistemle uyuşmayan bir fatura listesi. Eksik kayıtlar ve mükerrerler kendilerini aynı biçimde duyurur: hata olarak değil, örüntüden sapma olarak — ve görülebilmeleri için birinin örüntüyü izliyor olması gerekir.

Bu izleme işini yalnızca insan dikkatine bırakmak, ölçek büyüdükçe gerçekçi olmaktan çıkar. Binlerce satırlık bir ekstrede partilerin hep aynı sayıda bittiğini fark etmek, bir kişinin uyanıklığına değil bir sistemin görev tanımına ait olmalıdır; insan dikkati istisnayı yorumlamak, sistem dikkati istisnayı bulmak içindir.

iFinances soruna böyle yaklaşır. Banka, e-fatura ve defter verinizi yan yana okur, her kaynağın sayı ve toplamlarını görünürde tutar ve örüntüyü bozan satırı — ya da satırın yokluğunu — işaretler. Gösterir, önerir, gerekçesini yazar; bir işaretin ne anlama geldiğine ve ne yapılacağına karar vermek insana kalır. Amaç araçlarınıza güvensizlik değildir. Elektronik tablolar tasarlandıkları işte yetkindir; ötesine geçmek bir ölçek meselesidir, suçlama meselesi değil. Mesele şudur: hiçbir araç kendi bütünlüğünü dışarıdan denetleyemez. Sınırda durup sayan bir başka katman gerekir.

Sık Sorulan Sorular

Eksik vakalardan Excel mi sorumluydu?

Hayır. Miras .xls formatı, on yıllardır belgelenmiş 65.536 satırlık sınırını tam olarak uyguladı — format, şartnamesine uygun çalıştı. Hata, çevresindeki veri hattındaydı: otomatik bir süreç sınırın ötesine yazdı ve hiçbir katman çıkan satırların giren satırlarla eşleştiğini doğrulamadı. Aynı sessiz kesilme, sınırı sessizce aşılan her araçla yaşanabilir.

Bu kaybı daha erken hangi kontrol yakalardı?

Bir bütünlük kontrolü — elektronik tablodan eski bir disiplin olan kontrol toplamı. Kaynakta kayıtları sayar, kilit tutarları toplarsınız; hedefte aynısını yapar ve her farkı süreci durduran bir istisna olarak ele alırsınız. Bu vakada, üst üste aynı satır sayısında biten dosyalar, tekil kayıtlar yerine verinin örüntüsünü izleyen herhangi bir katmanda ayrıca bir anomali olarak yüzeye çıkardı.

2020 tarihli bir halk sağlığı olayının finansal mutabakatla ilgisi ne?

Ay sonu kapanışı aynı mimariyle çalışır: bir sistemden dışa aktarılıp diğerine içe aktarılan dosyalar — bankalar, ERP'ler, e-fatura platformları ve defterler arasında. Bu aktarımların her biri sessizce kesilebilir: bir sayfa sınırında duran banka dökümü, satır düşüren bir çıktı. Mutabakat, her sınırda gelenin gönderilenle aynı olduğunu doğrulama disiplinidir.

Bu gece, sizin altyapınızda da o göreve çok benzeyen bir iş çalışıyor: dosyaları topluyor, şablonları dolduruyor, "başarılı" raporu veriyor. Neredeyse hepsi doğruyu söylüyor. Sorun şu ki doğruyu söylemeyen tek iş de aynı cümleyi kuruyor: görev tamamlandı. 3 Ekim 2020 gecesinin geride bıraktığı soru, araçlarınızın sınırlarına sadık kalıp kalmayacağı değil — kalacaklar; harfiyen, tam belgelendiği gibi. Soru şu: toplamların sessizce anlamlı olmaktan çıktığı gece bunu fark edecek bir katman sürecinizde var mı; yoksa ilk işaret, birinin nihayet iki kez okuduğu bir panel rakamı mı olacak?

✦ iFinances — Görmediğini gör.

Aylık bülten

Bir yazı, bir ay.

Yeni içgörüleri e-posta kutunuza alın. Spam yok, sadece kıvamında yazı.

iFinances Editörlüğü
Mevzuat, mutabakat, mühendislik. Türkiye finans ekiplerinin masasından.
Aylık bülten

Sonraki ay 2-3 yazı daha. Bültene kayıt olun.

Yeni içgörüleri e-posta kutunuza alın. Spam yok.

info@iwise.co

WhatsApp ile yazın