Nörolojinin 20. yüzyıldaki en sarsıcı keşiflerinden biri Nöroplastisite (Beyin Plastisitesi) kavramıdır.
Eski tıp kitapları, insan beyninin gelişimini tamamladıktan sonra değişmez, statik ve katı bir devre tahtası gibi çalıştığını varsayardı: "Bir bölge hasar görürse, o fonksiyon sonsuza kadar yok olur."
Oysa gerçek çok daha mucizevi bir dayanıklılığı barındırıyordu.
Ağır bir inme (felç) geçiren, beyninin sol tarafındaki konuşma merkezi (Broca alanı) kanama nedeniyle tamamen tahrip olan hastaların aylar süren rehabilitasyonun ardından yeniden konuşabildiğini gördük. Nasıl mı? Çünkü beyin katı bir makine değildi. Hasar gören bölgenin etrafındaki sağlam nöronlar, aralarında yepyeni sinaptik köprüler örüyor, rol değiştiriyor ve ölen dokunun görevini sırtlanıyordu.
Bedenimiz hayatta kalabilmek için kırılmayı değil; şekil değiştirmeyi (adaptasyonu) seçmişti.
Şimdi bu biyolojik esnekliği alın ve bilgisayar mühendisliğinin o katı, kırılgan ve hassas mimari dünyasıyla karşılaştırın.
Camdan Kuleler: Geleneksel Yazılımın Kırılganlığı
Geleneksel yazılım mimarileri çoğu zaman sert bir porselen vazo gibi tasarlanır. Dışarıdan baktığınızda pürüzsüz, simetrik ve kusursuz görünür. Ancak en ufak bir sarsıntıda, tek bir bağlantının kopmasında ya da beklenmedik bir yük dalgasında paramparça olur.
Tek bir monolitik sunucu düşünün. İçinde ödeme servisi, bildirim servisi, raporlama modülü ve kullanıcı yönetimi hepsi aynı bellek alanında (in-memory) yan yana çalışır.
Günün birinde raporlama modülündeki acemi bir geliştirici, arkasında LIMIT olmayan devasa bir SQL sorgusu çalıştırır. Bellek tükenir. Ve ne olur?
Sadece raporlama modülü çökmez; ödeme sistemi de çöker, kullanıcı girişi de durur, tüm şirket felç olur.
Sisteminizin bir parmağı incinmiştir; ama bütün beden komaya girmiştir. Çünkü sisteminizde plastisite (esneklik) yoktur; katılık (rigidity) vardır.
Kendi Kendini Onaran (Self-Healing) Mimariler
Son yıllarda modern dağıtık sistemlerin (Distributed Systems), bulut mimarilerinin ve Kubernetes gibi orkestrasyon araçlarının çözmeye çalıştığı asıl problem; hızı artırmak değil, biyolojik plastisiteyi kod tabanına kazandırmaktır.
Gerçekten dayanıklı (resilient) bir mimari, felaketlerin "asla yaşanmayacağını" iddia eden mimari değildir. Tam aksine; sistemin her an bir organının iflas edebileceğini peşinen kabul eden ve bu hasara rağmen yaşamaya devam eden mimaridir:
- Hasarlı Düğümü İzole Etmek (Circuit Breaker): Tıpkı beynin hasarlı damarı tıkayıp kanamayı durdurması gibi; bir mikroservis çöktüğünde veya yanıt vermeyi kestiğinde, Circuit Breaker (Devre Kesici) mekanizması devreye girer. O servise giden istekleri anında keser; hatanın diğer servislere bulaşmasını (cascading failure) engeller.
- Kademeli Trafik Yönlendirme (Dynamic Traffic Re-Routing): Bir veri merkezindeki sunuculardan biri yandığında, Service Mesh trafiği hiçbir insanın müdahalesine gerek kalmadan, milisaniyeler içinde sağlıklı diğer düğümlere (node) akıtır. Tıpkı felçli beyindeki sinir sinyallerinin yeni sinapslardan akması gibi.
- Otomatik Hücre Yenilenmesi (Auto-Restart & Healing): Kubernetes'te bir pod bellek hatasından öldüğünde, kontrolcü (controller) o cesedin başında yas tutmaz. Anında yeni bir pod ayağa kaldırır, hazır olduğunda trafiği ona devreder. Bedenimizin her gün milyarlarca ölen epitel hücresinin yerine yenisini üretmesi gibi.
Nassim Taleb ve "Antifrajil" Kod
Felsefeci Nassim Nicholas Taleb'in meşhur bir kavramı vardır: Antifragile (Kırılgan Olmayan / Darbeden Güçlenen).
Taleb der ki: "Kırılgan olan şey rüzgarda söner; ama ateş rüzgardan beslenir ve daha da büyür."
Yazılımda da en üstün mimari seviyesi; sadece hatalara karşı "dayanıklı" (robust) olan değil, hatalardan beslenerek kendini kalibre eden sistemlerdir. Netflix'in meşhur Chaos Monkey aracını hatırlayın. Kendi canlı üretim (production) sunucularındaki servisleri mesai saatleri içinde rastgele öldüren bir yazılım botu!
Neden bir şirket kendi sistemini bilerek sabote eder?
Çünkü sistemin plastisitesini test etmek isterler. Bir sunucu aniden öldüğünde mimarinin kasları refleks olarak kasılmalı, trafik anında diğer yöne akmalı ve sistem bu travmayı sindirerek daha güçlü bir adaptasyon geliştirmelidir.
Yaşayan Bir Kod Tabanı İnşa Etmek
Bir sistemin mimarisini tasarlarken kendinize şu soruyu sormak zorundasınız:
"Ben kırılmaz bir kale mi inşa ediyorum, yoksa yaşayan bir organizma mı?"
Kaleler depremde yıkılır; çünkü esnemezler. Ama yaşayan organizmalar hayatta kalır; çünkü darbe aldıkları yerde şekil değiştirir, yükü diğer organlarına paylaştırır ve nefes almaya devam ederler.
En iyi mimariler asla çökmeyenler değildir.
En iyi mimariler; çöktüğü an bunu zarafetle karşılayan, hasarlı parçasını sessizce bypass eden ve kullanıcılarına hissettirmeden hayatta kalmayı başaran sistemlerdir.