İçeriğe geç

Neden AWS Kesintileri Kodlama Hayatımızı Etkiliyor ve Neler Yapmalı?

Geçenlerde evde oturmuş, çocuğumla bir yapboz yapıyorduk. Tam en kritik parçayı yerine oturtmak üzereydim ki, internet gitti. Hani böyle insanı çileden çıkaran cinsten, ışıklar yanıyor ama o tanıdık modem ışığı sönmüş. İlk aklıma gelen, ‘Acaba yine mi bir şeyler oldu?’ oldu. Meğersem bu seferki ‘bir şeyler’ bambaşka bir seviyedeymiş. Çocuğumun o tatlı yüzündeki hayal kırıklığını görünce ‘Tamam’ dedim, ‘Bu işin peşini bırakmayacağız’. Birkaç saat sonra internet geldi ama içimdeki o ‘neden’ sorusu gitmedi.

İşte o gün anladım ki, bizim gibi sürekli online olan, bulut tabanlı servislerle haşır neşir olanlar için bu tür kesintiler sadece ‘internetim yok’ demek değil. Hele ki benim gibi C# ile REST API geliştirip, verileri PostgreSQL’e aktaran biri için AWS gibi devasa bir altyapının çökmesi demek, domino taşlarının devrilmesi gibi bir şey. Sabah bir uyandık, her yer ‘AWS Outage’ olmuş. Snapchat’ten tutun da, bankacılık uygulamalarına kadar her şey sallantıda.

Bu durum beni bir hayli düşündürdü. Hani hep ‘güvenli bulut’, ‘kesintisiz hizmet’ diye konuşuyoruz ya, işte bu tür olaylar o güvenli limanın ne kadar da sallantılı olabileceğini gösteriyor. Düşünsenize, siz harıl harıl kod yazıyorsunuz, bir yandan da projenizin API’si AWS üzerinde çalışıyor. Birden her şey duruyor. Ne bir istek gidebiliyor, ne bir cevap gelebiliyor. Bu da doğal olarak sizin geliştirdiğiniz uygulamanın da çökmesi demek. Kendi adıma konuşayım, bu tür durumlar benim için hem bir sinir krizi hem de ‘Acaba ben neyi eksik yapıyorum?’ sorusunu sorduran bir durum.

AWS Kesintileri Neden Bu Kadar Büyük Sorun?

Aslında mesele basit. Günümüzde çoğu uygulama ve servis, büyük ölçüde bulut altyapılarına dayanıyor. AWS de bu altyapıların en başında gelenlerinden. Yani siz bir web sitesine giriyorsunuz, bir uygulama kullanıyorsunuz, bir online oyun oynuyorsunuz; bunların hepsi arka planda AWS gibi büyük veri merkezleri tarafından destekleniyor. Bu kesintiler olduğunda, o sunuculara bağlı her şey etkileniyor. Düşünün ki sizin de üzerinde çalıştığınız bir proje bu servislerden birine bağımlı. İşte o zaman sizin de projeniz duruyor, kullanıcılarınız mağdur oluyor. Benim gibi C# ve .NET ile REST API geliştirenler için bu durum daha da kritik çünkü API’ler genellikle sürekli erişilebilir olmalı.

Bir de işin şu boyutu var: Bu tür büyük kesintiler, sadece o anki hizmetleri etkilemiyor. Güven algısını da zedeliyor. İnsanlar ‘Ben paramı veriyorum, sürekli çalışması lazım’ diye düşünüyor. Haklılar da. Bir de üzerine siber saldırı gibi şeyler eklenince, işler daha da karışık bir hal alıyor. Hani bazı günler olur ya, her şey üst üste gelir, işte o günlerden biri gibi düşünün. AWS’in kendisi de bunu kabul etmiş durumda, kesintinin nedenlerini araştırıyorlar, raporlar yayınlıyorlar ama bu o an yaşadığınız mağduriyeti ortadan kaldırmıyor ne yazık ki. Hele ki kod yazarken veya bir devreyi test ederken böyle bir durumla karşılaşmak gerçekten insanı çileden çıkarıyor. Bu arada, geçenlerde bir elektronik devre tasarımı yaparken, kullandığım bir entegre çipin datasheets’ini bulmakta zorlanmıştım, sanki internetim yokmuş gibi hissettim o an ama meğersem sadece benim internetimde değil, daha büyük bir sorun varmış, neyse efendim.

Neticede, AWS gibi büyük platformların kesintileri sadece teknoloji dünyasını değil, hepimizi etkiliyor. Benim gibi gömülü sistemlerle uğraşan biri için bile bu tür olaylar önemli. Çünkü bazen geliştirdiğim bir IoT cihazının veriyi göndereceği sunucu da bu tarz bir altyapıda olabilir. Yani işin özü, bulut teknolojileri hayatımızı kolaylaştırırken, aynı zamanda bizi bazı risklere de açık hale getiriyor. Bu da demek oluyor ki, bizim de bu risklere karşı önlem almamız gerekiyor. Kendi adıma, Dapper ile yaptığım PostgreSQL veritabanı bağlantılarımı ve geliştirdiğim REST API’leri bu tür olası kesintilere karşı nasıl daha dayanıklı hale getirebilirim diye düşünmeye başladım.

Peki Ne Yapmalı? Benim Tavsiyelerim

Bu tür kesintiler kaçınılmaz olunca, en iyisi hazırlıklı olmak. Benim gibi aktif olarak kodlama yapanlar için birkaç önerim var:

  • Çoklu Bölge (Multi-Region) Yaklaşımı: Eğer mümkünse, uygulamanızın veya servislerinizin birden fazla AWS bölgesinde çalışmasını sağlayın. Böylece bir bölgede kesinti olduğunda, diğer bölgedeki sunucular devreye girebilir. Bu, özellikle kritik uygulamalar için şart bence.
  • Veri Yedekleme ve Kurtarma Planı: Düzenli olarak verilerinizi yedekleyin ve bu yedeklerden nasıl kurtarma yapabileceğinizi test edin. Benim Dapper ile PostgreSQL’e yazdığım veriler için bu çok önemli. Bir şeyler ters giderse, en azından verilerimi kaybederim diye düşünmem.
  • Alternatif Servisler Düşünün: Eğer projeniz çok kritikse ve AWS’e tamamen bağımlı kalmak istemiyorsanız, başka bulut sağlayıcıları (Azure, Google Cloud gibi) veya kendi sunucularınızı da bir kenarda tutmayı düşünebilirsiniz. Hani derler ya ‘Tüm yumurtaları aynı sepete koymamak’ diye, işte tam olarak öyle.
  • Yerel (On-Premise) Alternatifler: Bazı kritik bileşenler için bulut yerine kendi sunucularınızı kullanmak da bir seçenek olabilir. Tabii bu ek bir maliyet ve yönetim gerektiriyor ama güvenlik ve erişilebilirlik açısından büyük avantaj sağlayabilir. Özellikle gömülü sistemler tasarlarken bazen böyle bir opsiyonu değerlendirmek gerekiyor.
  • Kesinti Bildirimlerini Takip Edin: AWS’in kendi durum sayfalarını (AWS Status Page) veya çeşitli teknoloji haber sitelerini takip ederek olası kesintilerden erken haberdar olmaya çalışın. Hani böyle ani bir panik yaşamamak için.

Açıkçası, bu tür olaylar yaşandığında insanın aklına ilk gelen ‘Acaba benim kodumda mı bir sorun var?’ oluyor. Ben de yaşadım bunu. Bir gün bir baktım, geliştirdiğim bir REST API’den veri çekilemiyor. Hemen kendimi sorguladım, acaba Dapper’da bir hata mı yaptım, PostgreSQL’de mi bir sıkıntı var diye. Saatlerce uğraştım. Meğersem mesele benim kodum değilmiş, tamamen AWS’in yaşadığı bir kesintiymiş. O anki rahatlamayı anlatamam. Ama tabi, bu durum aynı zamanda ‘Keşke daha hazırlıklı olsaydım’ dedirtti bana. Bu yüzden artık böyle bir kesinti olduğunda, ilk işim AWS’in durum sayfasına bakmak oluyor. Bu arada, geçenlerde dağcılık yaparken bir ara kaybolmuştuk eşimle. Tam o sırada telefonumun şarjı bitmişti ve haritaya bakamıyorduk. Ne kadar da benzer bir hismiş, hem teknoloji kesintisi hem de doğada kaybolmak. Neyse efendim, konumuza dönelim.

Sonuç olarak, bulut teknolojileri hayatımızın vazgeçilmez bir parçası haline geldi. AWS gibi platformlar sayesinde inanılmaz şeyler yapabiliyoruz. Ancak bu kolaylığın bir de bedeli var: Kesinti riskleri. Biz geliştiricilere düşen görev ise, bu riskleri minimize edecek stratejiler geliştirmek. Bu, hem bizim projelerimizin güvenilirliğini artırır hem de kullanıcılarımızın mağduriyetini engeller. Unutmamak lazım ki, en iyi kod bile altyapı çökünce bir işe yaramaz. O yüzden bu tür ‘outage’ durumlarını ciddiye almalı ve gerekli önlemleri almalıyız. Bursa’da yaşarken bu tür teknolojik gelişmelerin hayatımıza nasıl entegre olduğunu görmek de ayrı bir keyifli oluyor.