Knight Capital: 45 Dakikada 440 Milyon Dolar Kaybettiren Kod
Yazılım dünyasında "küçük bir hata" genellikle basit bir bug veya arayüz kayması anlamına gelir. Ancak yüksek frekanslı işlem (HFT) dünyasında, tek bir satır kod veya hatalı bir konfigürasyon, devasa bir finans devini 45 dakika içinde iflasın eşiğine getirebilir. 1 Ağustos 2012'de Knight Capital Group’un başına gelen olay, tarihin en pahalı mühendislik felaketlerinden biri olarak kayıtlara geçti.
Bu vaka; ölü kod (dead code), hatalı deployment süreçleri ve yetersiz izleme mekanizmalarının birleştiği bir sistem mühendisliği otopsisidir.
1. Teknik Arka Plan: SMARS ve "Power Peg"
Knight Capital, New York Borsası'ndaki en büyük işlemcilerden biriydi. Şirket, SMARS adını verdiği karmaşık bir emir yönlendirme algoritması kullanıyordu. SMARS'ın görevi, gelen devasa hisse emirlerini piyasayı sarsmamak için küçük parçalara bölmek ve en iyi fiyatları bulmaktı.
Sistemin içinde, 2003 yılından kalma ve artık kullanılmayan "Power Peg" isimli eski bir özellik bulunuyordu. Power Peg, emirleri gerçekleştirirken hisse fiyatlarını belirli bir seviyede tutmak için tasarlanmıştı ancak modern piyasa koşullarında artık geçersizdi. Kodun içinde "uyuyan bir hücre" gibi duruyordu.
2. Felakete Giden Yol: Eksik Deployment (Yayına Alma)
Knight Capital, borsanın yeni bir programı için SMARS sistemini güncelledi. Yeni kodda, Power Peg özelliğinin yıllar önce kullandığı "bayrak" (flag) yani kontrol değişkeni, tamamen farklı bir işlev için yeniden tanımlandı.
Deployment süreci o dönemde manuel olarak yapılıyordu. Teknik ekip, güncellemeyi şirketin sahip olduğu 8 sunucuya sırayla yüklemeye başladı. Ancak trajik bir hata yapıldı: 8. sunucuya yeni kod yüklenmedi.
- 7 Sunucu: Yeni kodla çalışıyor ve gelen "bayrak" komutunu yeni işleviyle (sayaç kontrolü) doğru anlıyordu.
- 8. Sunucu: İçinde hala 2003'ten kalma eski kod (Power Peg) duruyordu ancak yeni bayrak komutuna maruz kalıyordu.
3. 45 Dakikalık Kaos: Algoritmanın Çıldırması
1 Ağustos sabahı borsa açıldığında SMARS sistemi çalışmaya başladı. 8. sunucu, kendisine gelen yeni komutu eski koddaki "Power Peg" fonksiyonunu çalıştırma emri olarak yorumladı. Bu eski fonksiyonun içinde, ana emir miktarının dolup dolmadığını kontrol eden sayaç (yeni koddaki mantık) yer almıyordu.
Sonuç tam bir yıkımdı:
- 8. sunucu, her saniye binlerce işlem yaparak piyasadan kontrolsüzce hisse almaya başladı.
- Algoritma, ana emir miktarını doldurduğunu fark etmiyordu çünkü bu kontrol mekanizması o sunucuda yüklü olmayan yeni kodun içindeydi.
- Knight Capital, piyasa fiyatının çok üzerinde alışlar yapıp hemen ardından daha ucuza satışlar yaparak saniyede milyonlarca dolar kaybetmeye başladı.
Kritik Müdahale Hatası: Şirket bir sorun olduğunu anladığında yapılan müdahale felaketi katladı. Mühendisler, sorunu çözmek amacıyla çalışan 7 düzgün sunucudaki yeni kodu da silip eski koda döndüler (Rollback). Bu hareket, hatalı "Power Peg" özelliğini tüm sunucularda aktif hale getirdi.
4. Mühendislik Çıkartımları ve Alınan Dersler
Knight Capital vakası, modern yazılım mühendisliğinde kriz yönetimi ve sistem tasarımı konusunda temel bir ders niteliğindedir:
- Ölü Kod (Dead Code) Temizliği: Eğer bir kod bloğu artık kullanılmıyorsa, sadece "devre dışı" bırakılmamalı; kod tabanından tamamen silinmelidir.
- Otomatik Deployment (CI/CD): Manuel deployment her zaman insan hatasına açıktır. Infrastructure as Code (IaC) ve otomatik dağıtım süreçleri, sunucular arasındaki versiyon farklılıklarını engeller.
- Gözlemlenebilirlik (Observability): Hatalı işlemler saniyeler içinde binlere ulaştığında sistemin otomatik olarak alarm vermesi ve anormal trafiği fark edip kendini kilitlemesi gerekirdi.
- Kill Switch (Acil Durdurma Butonu): Karmaşık sistemlerde, işler kontrolden çıktığında tüm trafiği saniyeler içinde durduracak merkezi bir mekanizma bulunmalıdır.
Sonuç
Knight Capital, 45 dakika içinde yaklaşık 440 milyon dolar kaybetti. Şirketin toplam sermayesi yaklaşık 365 milyon dolardı; yani şirket dakikada 10 milyon dolar kaybederek teknik olarak battı ve kısa süre sonra bir başka finans kuruluşu tarafından satın alınmak zorunda kaldı. Bu vaka, yazılımın sadece mantıksal bir yapı değil, aynı zamanda çok sıkı yönetilmesi gereken bir mühendislik süreci olduğunu kanıtlayan en büyük örneklerden biridir.
Bu Yazıyı Beğendiniz Mi?
Yazara destek olmak için karta dokunun

Yorumlar
0