Siren sesleri arasında bir trafik kazası mahalline ulaştığınızda ve araçtan bilinci kapalı, nabzı zayıflayan bir kazazedeyi çıkardığınızda, ambulanstaki o dar ve sallantılı sedyede geçen her saniyenin hayati bir ağırlığı vardır. Kıdemli bir paramedik sedyenin soluna, siz sağına geçersiniz. Yaptığınız ilk reflekslerden biri nedir biliyor musunuz? Hastanın kolunu bağlayıp hızla geniş çaplı bir damar yolu (genellikle 14 veya 16 gauge, o gri ya da turuncu kalın intraketlerden biri) açmak.

Sol koldan damar yolunu başarıyla açtığınız an, henüz stajyer olan birinin içi rahatlayabilir: "Tamam, kanala girdik, serumu ve acil ilaçları verebiliriz."

Ama tecrübeli paramedik durmaz. Hemen diğer kolu işaret eder: "Sağ kola da bir tane aç."

Stajyer şaşırır: "Ama zaten sol koldan açtık, sıvı akıyor, neden hastayı tekrar delelim?"

Cevap, acil tıbbın mezarlıklarla ödenmiş en acımasız kurallarından biridir: Tek damar yolu, hiç damar yolu demektir.

Çünkü o hasta birazdan şoka girebilir, damarları büzüşüp çökebilir. Ambulans hızla viraj alırken iğne yerinden kayabilir, damar patlayabilir (ekstravazasyon), verdiğiniz kritik ilaç doku altına sızabilir. Kalp durduğunda ya da tansiyon sıfıra yaklaştığında, patlamış bir damarın başında yeni bir delik arayacak 10 saniyeniz bile olmaz. İkinci bir damar yolu bir lüks veya aşırılık değildir; o an ile ölüm arasındaki yegane emniyet kemeridir.

Bulutun Sahte Güvenlik İllüzyonu

Şimdi bu sahneden çıkıp, kahve kokulu açık ofislere veya evdeki o konforlu çalışma masalarımıza dönelim.

Yazılım dünyasında bu duruma verilen teknik bir isim var: Single Point of Failure (SPOF) — yani "Tek Hata Noktası". Tanımı basittir: Çöktüğü anda arkasındaki tüm sistemi felç eden tekil bileşen. Teoride her bilgisayar mühendisliği öğrencisi bunu bilir. Sistem tasarımı mülakatlarında herkes tahtaya çift load balancer, yedekli veritabanları (multi-AZ replication) ve dağıtık kuyruklar çizer.

Ama iş gerçek hayattaki mimarilere geldiğinde, devasa şirketlerin bile akıl almaz bir saflıkla "tek bir damar yoluna" mahkûm yaşadığını görürsünüz.

Tüm kimlik doğrulama sistemini tek bir üçüncü parti SaaS servisine (mesela Auth0) bağlarlar. Tüm DNS trafiğini tek bir sağlayıcının ellerine teslim ederler. Bütün CI/CD süreçlerini tek bir platformun sunucularına emanet ederler. Ve sonra ne olur?

Cloudflare bir BGP yönlendirme hatası yapar; dünya internetinin yarısı kararır. AWS'in us-east-1 veri merkezinde bir API gateway aksar; akıllı süpürgelerden bankacılık uygulamalarına kadar her şey taş devrine döner. Bir güvenlik yazılımı (adını hepimizin bildiği o ünlü güncelleme vakası) tek bir bozuk konfigürasyon dosyası yollar; havaalanlarında uçuşlar durur, hastane monitörleri mavi ekrana düşer.

O gün Slack kanallarında yöneticilerin ve mühendislerin dövünüşünü izlersiniz: "Bizim kodumuzda hata yok, servis sağlayıcı çöktü!"

Evet, sizin kodunuzda hata yoktu. Tıpkı ambulansta damarı patlayan hastanın kendi kendine şoka girmemesi gibi. Ama siz, tek bir damar yoluna güvenerek hastayı yola çıkarmıştınız.

Yedeklilik (Redundancy) Masraf Değildir

Yazılımcılar ve özellikle şirketlerin finans departmanları, gerçek anlamda yedekli (redundant) bir altyapı kurmayı çoğu zaman "gereksiz maliyet" olarak görür.

"Neden Cloudflare'in yanına ikinci bir DNS yapılandırması kuralım ki? Zaten adamlar %99.99 SLA veriyor."
"Neden Stripe'ın yanına alternatif bir ödeme geçidi entegre edelim? Kod tabanı iki kat karmaşıklaşır."
"Neden veritabanının soğuk bir yedeğini tamamen farklı bir bulut sağlayıcıda (mesela AWS dışındaki bağımsız bir bare-metal sunucuda) tutalım?"

Bu soruları soran zihniyet, ambulansta "Zaten sol kolda damar yolu açık, ikinci intraket 5 lira, o parayı harcamayalım" diyen zihniyetle aynıdır.

Sistem sorunsuz çalışırken yedeklilik gerçekten de göze batar. Fazladan konfigürasyon demektir, fazladan bakım demektir, faturada fazladan satır demektir. Tıpkı kazazedenin sağ koluna takılı duran ve içinden henüz tek bir damla ilaç geçmemiş o boş plastik intraket gibi... Orada öylece, anlamsızca durur.

Ta ki o sol koldaki damar patlayana kadar.

O an geldiğinde, o boş plastik parçası dünyanın en değerli nesnesine dönüşür. Saniyeler içinde ilacı sağ koldan verir, hastanın kalbini ritimde tutarsınız. Ne ambulans durur, ne müdahale kesilir.

Yazılımda da durum farksızdır. Birincil ödeme sağlayıcınız zaman aşımına uğradığında trafiği saniyesinde ikinci sağlayıcıya yönlendirebilecek bir "circuit breaker" mimariniz varsa; bir DNS sağlayıcısı çöktüğünde secondary DNS devreye giriyorsa, kullanıcılarınız aradaki kesintiyi fark etmez bile. Şirketiniz milyonlarca liralık ciro kaybından ve en önemlisi silinmesi aylar süren o güven erozyonundan kurtulur.

Gerçek Mühendislik Krizden Önce Başlar

Sahada hayat kurtaran şey mucizeler değildir; kötü gün senaryolarına duyulan saygıdır. Paramedik, hastanın her an kötüleşebileceğini kabullendiği için hazırlıklıdır.

Sistem mühendisliği de tam olarak budur. Eğer bir mimari tasarlarken "X servisi asla çökmez" varsayımıyla yola çıkıyorsanız, henüz mühendislik yapmıyorsunuz demektir; sadece kumar oynuyorsunuzdur. Çünkü doğanın, elektriğin, kabloların ve insanların olduğu her yerde her şey çöker. Sunucular yanar, fiber kabloları kepçeler koparır, en güvenilir şirketlerin veri merkezleri su basar.

Bir dahaki sefere sisteminizin mimari şemasına baktığınızda kendinize şu soruyu sorun:
"Eğer şu an en çok güvendiğim kutucuk haritadan silinseydi, sistemim yaşamaya devam eder miydi?"

Eğer bu sorunun cevabı derin bir sessizlik ve soğuk bir ter damlasıysa; bilin ki hastanız sedyede tek bir damar yoluyla yatıyor. Ve yol çok engebeli.