İçeriğe geç

Amazon Outage: Bulut Kesintileri ve Bizim Kodlama Dünyamız

Şimdi bu AWS kesintileri, malumunuz, son zamanlarda iyice can sıkmaya başladı. Hani böyle bir iş yapıyorsunuzdur, tam da en kritik yerinde, sistem bir anda çöküyor. İşte o an insanın içi gidiyor resmen. Hele bir de siz o altyapıya güvenip projelerinizi ona göre şekillendirmişseniz, vay halinize!

Benim de başıma geldi bu durum, geçenlerde bir projede ciddi bir veri işleme yapıyorduk. Veriler akıyor, sistem tıkır tıkır çalışıyor, her şey süper. Tam raporları alıp işin içinden çıkacakken, bir baktık ki API’den yanıt gelmiyor. AWS East-1 bölgesinde bir sorun varmış galiba. O anda dünyanız başınıza yıkılıyor resmen. Ne yaparsın, oturup beklersin öylece.

Bu kesintiler sadece bizim değil, dünyanın dört bir yanındaki milyonlarca kullanıcının da hayatını etkiliyor. Düşünsenize, bir anda bankacılık sistemleri, e-ticaret siteleri, hatta oyun sunucuları bile kullanılamaz hale geliyor. Bu da ister istemez güvenliği ve iş sürekliliğini sorgulatıyor insana. Acaba hep bu kadar dışa bağımlı olmak doğru mu diye düşünmeden edemiyorum.

Tabi her şeyin bir de olumlu yanı var. Bu tür kesintiler bizi daha dayanıklı sistemler kurmaya zorluyor. Yani tek bir noktaya bağlı kalmak yerine, dağıtık sistemler, yedeklilik gibi konulara daha fazla eğilmemiz gerekiyor. Zaten biz de bu yüzden Dapper gibi ORM’leri kullanırken, veritabanı tarafında da PostgreSQL’in sağladığı yüksek erişilebilirliği göz önünde bulunduruyoruz.

Bu arada aklıma geldi, geçenlerde bir haber okudum, AWS’in bu tür kesintilerini azaltmak için ne kadar yatırım yaptığından bahsediliyordu. Yapay zeka ile sorunları daha önceden tespit etmeye çalışıyorlarmış. Bakalım ne kadar başarılı olacaklar, göreceğiz hep beraber.

Teknik olarak baktığımızda, bu tür olaylar bize altyapının ne kadar kritik olduğunu bir kez daha hatırlatıyor. C# ile .NET Core üzerinde REST API geliştirirken, veritabanı olarak PostgreSQL kullanmak işleri kolaylaştırıyor ama altta yatan altyapı sağlam değilse, ne kadar iyi kod yazarsan yaz, bir yere kadar. Dapper ile hızlı sorgular yazmak harika ama o sorguların çalışacağı sunucular ayaktaysa tabii 🙂

Amazon Outage’ların Kodlama Hayatımıza Etkisi

Şimdi bu bulut bilişim meselesi hayatımıza girdi gireli, her şey daha kolaylaştı gibi görünüyor. Sunucu derdi yok, bakım derdi yok, her şey hazır. Ama madalyonun öbür yüzü de var işte. AWS’in veya herhangi bir büyük bulut sağlayıcısının yaşadığı bir kesinti, sizin bütün dünyanızı durdurabiliyor.

Benim gibi gömülü sistemler üzerine de çalışan birisi için bu durum daha da ilginç bir hal alıyor. Bir tarafta internete bağlı, sürekli erişilebilir olması gereken web servisleri, diğer tarafta ise lokalde çalışan, belki de internete hiç çıkmayan sistemler. Ama ne olursa olsun, o lokal sistemlerin de bir gün bir yerlere bağlanması gerekiyor. İşte o zaman bulutun sağlamlığı devreye giriyor.

Geçenlerde bir arkadaşımla konuşuyorduk, bir e-ticaret sitesi kurmuşlar. Her şey harika, Vue.js ile ön yüzü geliştirmişler, backend’i C# ile .NET Core ve Dapper kullanarak PostgreSQL’e bağlamışlar. Hatta performans için de Redis cache kullanıyorlar. Tam her şey yolunda derken, AWS’in bir kesintisi yüzünden siteleri saatlerce kapalı kalmış. Müşteriler tabii ki sinirlenmiş, para kaybedilmiş. Bu durum, benim de hep aklımda bir soru işareti oluşturuyor. Acaba ne kadar dışa bağımlı olmalıyız?

Bu arada, bu tür kesintilerde kendi yazdığım basit bir proxy programı vardı, onu test etme fırsatım da oldu. Hani bazen internet filtrelerini aşmak için kullanırdık ya eskiden. Ama bu sefer durum farklıydı, DNS sorguları bile yanıt vermiyordu. Kendi küçük programım bu büyük soruna çare olamadı tabii, ne yapalım 🙂

Ne Yapmalı?

Bu noktada yapabileceğimiz en iyi şey, riski dağıtmak. Yani tek bir bulut sağlayıcısına veya tek bir veri merkezine bağlı kalmamak. Belki de hibrit bir model düşünmek, yani hem kendi sunucularımızı kullanıp hem de bulutun nimetlerinden faydalanmak. Ya da farklı bölgelerde (region) çalışan servisler kurmak. Bursa’da yaşıyorum ben, orada da internet kesintisi yaşanabiliyor, ama dünyanın diğer ucundaki bir veri merkezinin çökmesi bambaşka bir durum.

Teknoloji geliştikçe, sistemler daha karmaşık hale geliyor. Bu karmaşıklık beraberinde yeni riskleri de getiriyor. Ama aynı zamanda, bu riskleri yönetmek için de yeni çözümler ortaya çıkıyor. Önemli olan, bu çözümleri doğru zamanda, doğru şekilde uygulamak.

Aslında bu durum, biraz da dağcılığa benziyor. Tepede hava birden bozabilir, rotayı değiştirmek zorunda kalabilirsiniz. Ama hazırlıklıysanız, doğru ekipmanınız varsa, her türlü zorluğun üstesinden gelebilirsiniz. Kodlama da böyle, beklenmedik durumlar her zaman olur, önemli olan hazırlıklı olmak.

Bu arada, eşimle ve çocuğumla vakit geçirirken bu tür teknik konular aklıma gelmiyor değil. Bazen şehir turlarına çıkıyoruz, etrafı geziyoruz, yeni yerler görüyoruz. O anlarda aklımda hep sistemlerin nasıl çalıştığı, nasıl daha iyi hale getirilebileceği gibi düşünceler dönüyor. Tabii ailemle vakit geçirirken kodlama yapmıyorum ama fikir üretmek her zaman mümkün.

Sonuç olarak, AWS gibi bulut sağlayıcılarının kesintileri can sıkıcı olsa da, bize aynı zamanda geliştirme ve mimari konusundaki eksiklerimizi de gösteriyor. Daha dayanıklı, daha güvenli sistemler kurmak için bir fırsat olarak görmeliyiz bence. Ve tabii ki, bu süreçte kendi yazdığımız kodların ne kadar sağlam olduğunu da test etmiş oluyoruz. Ne güzel değil mi?