Milyonlarca kullanıcıyı etkileyen ve dünya çapında kritik hizmetleri devre dışı bırakan Amazon Web Services (AWS) kesintisinin, şirket mühendisleri tarafından yayınlanan bir incelemeye göre, Amazon'un geniş ağındaki sistemden sisteme yayılan tek bir hatadan kaynaklandığı belirtildi.
Amazon'dan yapılan açıklamada, yaşanan bir dizi hatanın 15 saat 32 dakika sürdüğü bildirildi. Ağ istihbaratı şirketi Ookla'ya göre, DownDetector hizmeti 3.500'den fazla kuruluşa ait hizmetlerde yaşanan kesintilerle ilgili 17 milyondan fazla rapor aldı. Raporların en yoğun geldiği ilk üç ülke ABD, İngiltere ve Almanya oldu. En çok etkilenen hizmetler arasında Snapchat, AWS ve Roblox yer aldı. Ookla, olayın Downdetector kayıtlarındaki en büyük internet kesintilerinden biri olduğunu ifade etti.
Her Şey DNS ile Başlıyor
Amazon, kesintinin temel nedeninin DynamoDB DNS yönetim sistemini çalıştıran yazılımdaki bir hata olduğunu açıkladı. Sistem, AWS ağındaki uç noktalar için periyodik olarak yeni DNS yapılandırmaları oluşturarak yük dengeleyicilerin kararlılığını izliyor. "Yarış koşulu" olarak adlandırılan bu hata türü, bir işlemin geliştiricilerin kontrolü dışındaki değişken zamanlama veya olay sıralamasına bağlı hale gelmesiyle ortaya çıkıyor ve beklenmedik davranışlara, potansiyel olarak zararlı arızalara neden olabiliyor.
Bu durumda yarış koşulu, DynamoDB'nin bir bileşeni olan ve koşullar değiştikçe yük dengelemeyi optimize etmek için tek tek AWS uç noktalarındaki alan adı çözümleme tablolarını sürekli güncelleyen DNS Enactor'da meydana geldi. Enactor çalışırken, "bazı DNS uç noktalarındaki güncellemesini yeniden denemesi gerektiğinde olağandışı gecikmeler yaşadı". Enactor bu gecikmeyle uğraşırken, ikinci bir DynamoDB bileşeni olan DNS Planner yeni planlar üretmeye devam etti. Ardından, ayrı bir DNS Enactor bunları uygulamaya başladı.
Bu iki enacto'nun zamanlaması, tüm DynamoDB'yi devre dışı bırakan yarış koşulunu tetikledi. Amazon mühendislerinin de açıkladığı gibi:
Bu hata, Amazon'un ABD-Doğu-1 bölgesindeki uç noktasında DynamoDB'ye bağımlı sistemlerin bağlantı kurmasını engelleyen hatalar yaşamasına neden oldu. Hem müşteri trafiği hem de AWS'nin kendi iç hizmetleri etkilendi.
DynamoDB hatasından kaynaklanan hasar, ABD-Doğu-1 bölgesindeki Amazon'un EC2 hizmetleri üzerinde bir baskı oluşturdu. DynamoDB normale döndükten sonra bile bu baskı devam etti, çünkü bu bölgedeki EC2, "işlenmesi gereken önemli miktarda ağ durumu yayılımı birikimini" ele almak zorunda kaldı. Mühendisler ayrıca şunları belirtti: "Yeni EC2 örnekleri başarıyla başlatılabilse de, ağ durumu yayılımındaki gecikmeler nedeniyle gerekli ağ bağlantısına sahip olamayacaklardı."
Bu durum, sırasıyla AWS hizmetlerinin kararlılığı için güvendiği bir ağ yük dengeleyiciye taşındı. Sonuç olarak, AWS müşterileri ABD-Doğu-1 bölgesinden bağlantı hataları yaşadı. Etkilenen AWS ağ fonksiyonları arasında Redshift kümelerinin oluşturulması ve değiştirilmesi, Lambda çağrıları ve Yönetilen Apache Airflow İş Akışları gibi Fargate görev başlatmaları, Outposts yaşam döngüsü işlemleri ve AWS Destek Merkezi yer alıyordu.
Amazon, şu an için yarış koşulunu düzeltmek ve yanlış DNS planlarının uygulanmasını önleyici tedbirler eklemek üzere çalışırken, dünya çapında DynamoDB DNS Planner ve DNS Enactor otomasyonunu devre dışı bıraktı. Mühendisler ayrıca EC2 ve ağ yük dengeleyicisinde de değişiklikler yapıyor.
Uyarıcı Bir Hikaye
Ookla, Amazon'un bahsetmediği ancak katkıda bulunan bir faktörü öne çıkardı: ABD-Doğu-1 uç noktası üzerinden bağlantılarını yönlendiren çok sayıda müşterinin olması ve bölgeyi atlayarak başka bir yere yönlendirme yeteneğinin olmaması. Ookla şu şekilde açıkladı:
Bu olay, tüm bulut hizmetleri için bir uyarıcı niteliği taşıyor: Ağ tasarımında yarış koşulları ve benzeri hataları önlemekten daha önemli olan, tekil hata noktalarını ortadan kaldırmaktır.
Ookla'ya göre "İleriye giden yol, sıfır hata değil, çoklu bölge tasarımları, bağımlılık çeşitliliği ve disiplinli olay hazırlığı yoluyla elde edilen sınırlı hata olmalıdır. Düzenleyici gözetim ile bulutu ulusal ve ekonomik dayanıklılığın sistemik bileşenleri olarak ele almaya doğru ilerlenmelidir."