Bu şirketler kötü yazılımcılardan mı muzdaripti?
Geçmişe bakıldığında, tarihin en pahalı yazılım kazalarının hepsinin ardında bir ortak soru var: Bu kadar büyük şirketler nasıl bu kadar basit hatalar yapar?
Cevap herkesi şaşırtıyor: Çoğunda sorun, yazılımcıların yetersizliği değildi. Yazılımcılar kodun kendi bölümünü eksiksiz yazmıştı. Sorun, bu bölümlerin birbirlerine nasıl bağlandığına, daha eski sistemlerine nasıl dokunulduğuna ve hangi kararların hangisi oturup düşünmeden alındığına aitti.
Bu yazıda hem Türkiye'den hem de küresel ölçekten, gerçekten olmuş on felaketi inceliyoruz. Her vakanın ardından bir cümlelik "çıkarılacak ders" var. Yazıyı bitirdiğinizde, büyük çöküşlerin neden küçük ama yanlış kararlardan başladığını farklı bir gözle görüyor olacaksınız.
1. Knight Capital: 45 Dakikada 460 Milyon Dolar
Ne Oldu?
2012 yılında ABD'li borsa işlem şirketi Knight Capital, sistemine yeni bir güncelleme yükledi. Güncelleme sekiz sunucunun yedisine doğru şekilde kuruldu; bir sunucu gözden kaçtı.
O sunucuda yıllardır kimsenin yanına uğramadığı eski bir kod parçası uyuyordu. Güncelleme, yanlışlıkla bu eski kodu uyandırdı. 45 dakika boyunca sistem, kimsenin istemediği hisse senedi emirleri gönderdi. Şirket kapıları açılır açılmaz yaklaşık 460 milyon dolar kaybetti; ertesi hafta borsa tarihinden silindi.
Teknik Terim Kutucuğu
Teknik Borç — Bir yazılımda yıllar içinde biriken, bakımsız bırakılmış eski kod parçalarına verilen isim. Sanki evin yatağının altına çöp atmak gibidir: göze batmaz, ama bir gün mutlaka sorun çıkarır.
Çıkarılan Ders
Sistemde yaşayan her eski kod parçası, bir gün aktif hale gelebilir. Kullanılmayan kodları temizlemek, zaman kaybı değil, gelecekteki felaketi önlemektir.
2. Akbank: 43 Saatlik Türkiye Çöküşü (2021)
Ne Oldu?
Ekim 2021'de Akbank, ana bilgisayar sisteminin (IBM Mainframe) yazılımına bir güncelleme yaptı. Güncelleme sonrası beklenmedik bir çakışma yaşandı ve bu çakışma zincirleme tepkiye yol açtı.
Şubeler kapandı, ATM'ler yanıt vermedi, mobil bankacılık dondu, kredi kartları çalışmaz hale geldi. 43 saat boyunca on milyonlarca müşteri temel bankacılık hizmetlerine erişemedi. Akbank o günlerde yaklaşık 20 milyar TL piyasa değeri kaybı yaşadı.
Teknik Terim Kutucuğu
Ana Bilgisayar / Mainframe — Büyük kurumların onlarca yıldır üstüne kurulu işlettiği, devasa veri işleme kapasitesindeki merkezi sistemler. Bir binada yıllarca değiştirilmeyen taşıyıcı bir duvar gibi düşünün: her şey ona yaslanmış, ama içine girmek giderek zorlaşmıştır.
Felaket Kurtarma Planı (Disaster Recovery) — "Bu sistem bugün çökseydi ne yapardık?" sorusunun önceden yazılmış cevabı. Akbank'ın bu planı vardı; ancak kazanın boyutu planın kapsadığının çok üzerinde çıktı.
Çıkarılan Ders
Büyük ve eski sistemlere dokunmak en büyük risklerden biridir. Bu dokunuşların test edilmesi, mümkün olduğunda kademeli yapılması ve bir geri adım planının her zaman masada tutulması gerekir.
3. CrowdStrike: Dünyayı Durduran Güncelleme (2024)
Ne Oldu?
Temmuz 2024'te siber güvenlik şirketi CrowdStrike, koruma yazılımına bir güncelleme yolladı. Bu güncelleme, içinde yanlış bir mantık kontrolü barındırıyordu: Yazılım, var olmayan bir veriyi okumaya çalıştı ve hata verdi.
Sorun şuydu: Bu güncelleme, aynı anda dünyadaki milyonlarca Windows bilgisayara gönderilmişti. Havalimanları, hastaneler, bankalar, haber kanalları. Hepsi aynı anda mavi ekrana döndü. Kesintinin küresel maliyetinin beş milyar doların üzerinde olduğu tahmin ediliyor.
Teknik Terim Kutucuğu
Kademeli Dağıtım (Staged Rollout) — Bir güncellemeyi önce çok küçük bir kullanıcı grubuna gönderip, sorun yoksa yavaş yavaş herkese açmak. Bir ilaç firmasının ilacı piyasaya sürmeden önce kısıtlı deneme yapmasına benzetilebilir. CrowdStrike bu adımı atlamıştı.
Çıkarılan Ders
Bir güncellemenin ne kadar küçük göründüğü önemli değildir. Herkese aynı anda göndermek, içinde gizlenmiş küçük bir hatayı anında küresel bir felakete dönüştürebilir.
4. Mars İklim Yörünge Aracı: Ölçü Birimi Hatası (1999)
Ne Oldu?
NASA'nın Mars'a gönderdiği 125 milyon dolarlık uzay aracı, Mars'ın yörüngesine girme manevrası sırasında atmosfere çok derin girdi ve parçalandı.
Sorunun kaynağı inanılmaz derecede basitti: NASA'nın bir ekibi hesapları metrik sistemde (kilogram, metre) yaparken, müteahhit şirket Lockheed Martin'in ekibi inç ve pound ile çalışıyordu. Hiçbiri diğerinin ne kullandığını sormamıştı.
Teknik Terim Kutucuğu
Arayüz Kontratı — İki farklı ekibin birbirine hangi formatta veri göndereceğini, hangi dilde konuşacağını önceden yazılı olarak belirlediği anlaşma. Tıpkı iki farklı ülkeden ambulansların aynı hastanede çalışabilmesi için aynı kan grubu sistemini kullanmaları gibi.
Çıkarılan Ders
Sistem tasarım hatası değildi. Organizasyon hatasıydı. İki ekip birbirinden bağımsız çalışmış, veri aktarım kuralını başlangıçta netleştirmemişti. Büyük sistemlerde bağlantı noktaları her şeyden önce tanımlanmalıdır.
5. Ariane 5 Roketi: Kopyala-Yapıştır Felaketi (1996)
Ne Oldu?
Avrupa Uzay Ajansı'nın Ariane 5 roketi, fırlatılışından sadece 37 saniye sonra patladı. 370 milyon dolarlık kayıp.
Nedeni: Roketin yazılımındaki bir modül, Ariane 4'ten olduğu gibi kopyalanmıştı. O modül, Ariane 4'ün hız değerlerine göre çalışıyordu. Ariane 5 çok daha hızlıydı; bu hız değeri o modülün anlayabileceğinden büyüktü. Sayı, ayrılan kutuya sığmadı ve sistem çöktü.
Teknik Terim Kutucuğu
Sayı Taşması (Integer Overflow) — Bir sayacın sayabileceğinin üzerine çıkılınca sıfırdan başlaması veya hata vermesi. Dijital bir mutfak terazisini düşünün: 5 kg üzeri tartamazsa, 6 kg koyduğunuzda ekran anlamsız bir şey gösterir. Burada da hız değeri, ondalık sayı kutusuna sığmayıp çöktü.
Çıkarılan Ders
Başka bir ortamda mükemmel çalışan kod, bağlamı değiştiğinde tehlikeli olabilir. Kopyala-yapıştır, eski kodu anlayarak yeniden test etmeden yapılırsa çok pahalıya mal olur.
6. TSB Bankası: "Bigbang" Göçü Krizi (2018)
Ne Oldu?
İngiliz bankası TSB, eski sistemden yeni bir platforma taşınmaya karar verdi. Mühendislerin önerdiği kademeli geçiş planı yerine, üst yönetim bir gecede tam geçiş kararı aldı.
Geçiş gecesinde sistem çöktü. Yaklaşık 1,9 milyon müşteri günler boyunca hesaplarına girememedi, bazı müşterilerin bakiyeleri yanlış göründü. Bankanın bu krizden kaynaklanan toplam maliyeti yaklaşık 330 milyon sterline ulaştı.
Teknik Terim Kutucuğu
"Bigbang" Geçişi — Eski sistemden yenisine, her şeyi tek seferde ve aynı anda taşımak. Bir evin tüm elektrik tesisatını bir gecede değiştirmeye benzer: Sabah kalktığınızda ya her şey çalışır ya da tamamen karanlıkta kalırsınız. Yazılım dünyasında bu kumar çoğunlukla ikinci sonuçla biter.
Çıkarılan Ders
Eski sistemden yenisine geçişlerde karar baskısı, teknik gerçekliği geri plana itebilir. Bir gecede geçiş kararları genellikle teknik bir tercih değil, yönetimsel baskının ürünüdür. Ve riski asıl çeken sistemin kullanıcılarıdır.
7. Equifax: Güncellemeyi Erteleyen 1.4 Milyar Dolar
Ne Oldu?
2017'de ABD'nin en büyük kredi derecelendirme kuruluşlarından Equifax, yaklaşık 147 milyon kişinin kişisel ve finansal verisinin çalındığını duyurdu.
Saldırganların kullandığı yöntem, internetten ücretsiz kullanılan bir yazılım kütüphanesindeki bilinen bir güvenlik açığıydı. Bu açıkla ilgili yama iki ay önce yayınlanmıştı. Equifax güncellemeyi yapmamıştı. İnceleme sonrası yöneticiler istifa etti, şirketin maliyeti 1.4 milyar doları aştı.
Teknik Terim Kutucuğu
Yazılım Bağımlılığı (Dependency) — Bir uygulamanın çalışabilmek için ihtiyaç duyduğu, başkalarının yazdığı hazır kod kütüphaneleri. Tıpkı marketten aldığınız konserve gibi: kendi üretmiyorsunuzdur ama içeride kullanıyorsunuzdur. Konservenin son kullanma tarihi geçmişse, farkında olmadan tehlikeli bir şey servis edebilirsiniz.
Çıkarılan Ders
Dışarıdan gelen kod, kendi kodunuzdan az sorumlu değildir. Güncellenmemiş bağımlılıklar bir teknik borç değil, açık bir güvenlik riskidir.
8. GitLab: Beş Yedekleme Sistemi, Sıfır Çalışan Yedek (2017)
Ne Oldu?
Yazılım geliştirme platformu GitLab'da bir sistem yöneticisi, hatalı bir silme komutu çalıştırdı ve üretim veritabanının büyük bölümü silindi. Ekip yedeklerden geri dönmeye çalıştığında şunu keşfetti: Beş farklı yedekleme mekanizmasının hiçbiri ya doğru çalışmıyordu, ya yapılandırılmamıştı, ya da çok eski verileri içeriyordu.
GitLab o sırada şeffaflık kararı alıp tüm süreci canlı yayında anlattı. Veri kaybının bir kısmı telafi edildi ama bazı veriler kalıcı olarak gitti.
Teknik Terim Kutucuğu
Felaket Kurtarma Testi — Gerçek bir felaket olmadan önce, bir şey bozulursa ne yaparız? senaryosunu gerçek ortamda deneme. Yangın tatbikatı gibi: tatbikatsız yangın söndürücü sadece duvarda duran bir silindir olarak kalır.
Çıkarılan Ders
Test edilmemiş bir yedekleme sistemi, yokmuş gibidir. Yedeğin varlığı değil, çalıştığının kanıtlanması güven verir.
9. Toyota: Spagetti Kodun Faturası (2009–2014)
Ne Oldu?
Toyota, bazı araçlardaki istem dışı hızlanma şikayetleri nedeniyle on milyonlarca aracı geri çağırmak zorunda kaldı. Kaza sonrası yapılan hukuki incelemede motor kontrol yazılımına bakıldı.
Bağımsız yazılım uzmanları, kodun üretim mühendisliğinin temel kurallarını ihlal ettiğini tespit etti: 10.000'i aşkın "global değişken" (yani sistemin her yerinden erişilebilen değer) ve olası hataları takip etmeyi neredeyse imkânsız hale getiren, birbirinin üstüne katlanmış karmaşık bir yapı. Toyota bu davaları yaklaşık 1.2 milyar dolar ile kapattı.
Teknik Terim Kutucuğu
Global Değişken — Bir yazılımda her yerden görülebilen ve değiştirilebilen ortak bir kutu. Bir ofiste herkesin aynı beyaz tahtaya yazıp silebilmesi gibi: kim ne yazdığı artık takip edilemez, çakışmalar kaçınılmaz olur.
Spagetti Kod — Birbiriyle öyle iç içe geçmiş ki nereden başlayıp nerede bittiği anlaşılamayan kod yapıları. İsmini, tabaktan çıkarılmaya çalışılan ve her çekişte yeni bir karışıklık yaratan spagettiden alır.
Çıkarılan Ders
Mimari basitlik lüks değil, güvenliktir. Can güvenliğine dokunan sistemlerde sonra düzeltiriz yaklaşımı kabul edilemez.
10. Mt. Gox: Güvenliği Sona Bırakmak (2014)
Ne Oldu?
2014'te dünyanın en büyük Bitcoin borsası Mt. Gox, yaklaşık 850.000 Bitcoin'in (o günkü değeriyle yaklaşık 460 milyon dolar) kaybolduğunu açıkladı.
Saldırganlar, sistemdeki bir işlem kaydı açığından yararlandı. Platformun güvenlik mimarisi, hizmet hızla büyürken bir kez daha ele alınmamıştı. Güvenlik bir başlangıç kararı değil, ürün hazır olduktan sonra bakılacak bir şey olarak görülmüştü.
Teknik Terim Kutucuğu
Tasarımdan Gelen Güvenlik (Security by Design) — Güvenlik önlemlerini ürün bittikten sonra eklemek yerine, ilk satırdan itibaren sistemin içine işlemek. Kilit takmak için evin bitmesini beklemek yerine, kapı kasasını sıfırdan kilitlenebilir tasarlamak gibi.
Çıkarılan Ders
Güvenlik, sonradan eklenen bir özellik değildir. Başlangıçta alınmayan güvenlik kararı, büyüme hızıyla birlikte katlanarak tehlikeli bir birikime dönüşür.
Bu Hatalarda Ortak Olan Neydi?
On vakanın yalnızca ikisinde (Ariane 5 ve Mt. Gox) sorun tamamen teknikti. Diğer sekizinde hata şu kategorilerden birine giriyordu:
- Eski ve bakımsız bırakılmış kod
- Ekipler arası iletişimsizlik
- Yönetimsel baskıyla hızlandırılan teknik geçişler
- Test edilmemiş yedekleme ve kurtarma planları
- Güncellemenin herkese aynı anda gönderilmesi
Bu hataların hiçbiri bilgi ile değil, karar ile ilgilidir. Yazılım geliştirme süreçlerinde teknik kalite kadar, bu süreci çevreleyen kararların kalitesi de belirleyicidir.
On milyar dolarlık yazılım felaketleri çoğunlukla on satırlık yanlış kararla başlar. Ve o kararlar, ekiplerin en iyi niyetle attığı adımlar arasında gizlenir.
Peki ya AI bu tabloyu nasıl değiştiriyor? Süreçlerin daha az "yazma" daha çok "inceleme" yönünde evrildiğini merak ediyorsanız, Artık Kod Yazmıyoruz - Review Yapıyoruz yazımızı da inceleyebilirsiniz.