- 19–20 Ekim 2025'te AWS N. Virginia bölgesinde (us-east-1) Amazon DynamoDB dahil birçok kritik hizmet uzun süreli kesinti yaşadı
- Kesinti, DynamoDB'nin otomatik DNS yönetim sistemi içindeki gizli bir yarış durumu (race condition) nedeniyle hatalı boş bir DNS kaydının oluşturulmasıyla başladı
- Bunun sonucunda EC2 instance oluşturma hataları, Network Load Balancer (NLB) bağlantı hataları, Lambda·ECS·Redshift dahil çok sayıda hizmette API gecikmeleri ve hatalar zincirleme şekilde ortaya çıktı
- AWS, sorunun kök nedenini DynamoDB DNS Enactor'ları arasındaki anormal eşzamanlı güncelleme çakışması olarak belirledi ve manuel kurtarma ile 20 Ekim saat 14:20 civarında tam toparlanma sağladı
- Bu olay, AWS içindeki otomasyon sistemleri arasındaki karşılıklı bağımlılıkların karmaşıklığını ortaya koyarken, gelecekte DNS·EC2·NLB dayanıklılığını güçlendirmeye yönelik yapısal iyileştirmelerin geleceğine işaret ediyor
Olay özeti
- Kesinti 19 Ekim 2025 saat 23:48'de (PDT) başladı ve 20 Ekim saat 14:20'de (PDT) sona erdi
- Üç ana etki dönemi vardı:
- 19 Ekim 23:48 ~ 20 Ekim 02:40: DynamoDB API hata oranında keskin artış
- 20 Ekim 05:30 ~ 14:09: NLB bağlantı hatalarında artış
- 20 Ekim 02:25 ~ 10:36: EC2 yeni instance oluşturma hataları ve ağ bağlantı sorunları
- Kesinti, DynamoDB DNS yönetim sistemindeki bir kusurla başladı ve EC2, NLB, Lambda, Redshift gibi çok sayıda hizmete yayıldı
DynamoDB kesintisinin nedeni ve etkileri
- DynamoDB'nin otomatik DNS yönetim sistemindeki gizli bir kusur tetiklendi ve
dynamodb.us-east-1.amazonaws.com için DNS kaydı yanlışlıkla boş duruma güncellendi
- Sistem iki bileşene ayrılıyor:
- DNS Planner: yük dengeleyici durumunu izler ve yeni DNS planı oluşturur
- DNS Enactor: değişiklikleri Route53'e uygular
- Üç Availability Zone'a (AZ) bağımsız şekilde dağıtılmış DNS Enactor'lar arasında yarış durumu (race condition) oluştu
- İlk Enactor gecikmeli durumda eski planı uyguladı
- İkinci Enactor güncel planı uyguladıktan sonra eski planı silince tüm IP adresleri kaldırıldı ve sistem tutarsız duruma geçti
- Otomatik kurtarma başarısız olduğu için manuel müdahale (manual intervention) gerekti
- Saat 23:48'de kesinti başladıktan hemen sonra, DynamoDB'ye bağımlı tüm hizmetler ve müşteri trafiği bağlantı hataları yaşamaya başladı
- Global Tables kullanan müşteriler isteklerini diğer bölgelerdeki kopyalara yönlendirebildi, ancak replikasyon gecikmesi (replication lag) oluştu
- 00:38'de AWS mühendisleri sorunun nedeninin DNS durumu olduğunu doğruladı
- 01:15'te geçici kurtarma adımıyla bazı iç hizmet bağlantıları geri geldi
- 02:25'te DNS bilgileri tamamen geri yüklendi, 02:40'ta tüm bağlantılar normale döndü
Amazon EC2 etkisi ve kurtarma süreci
- 19 Ekim 23:48 ~ 20 Ekim 13:50 arasında EC2 API hata oranı arttı, instance oluşturma başarısız oldu ve gecikmeler yükseldi
- Hâlihazırda çalışan instance'lar etkilenmedi
- EC2 instance yönetiminde iki alt sistem kullanılıyor: DropletWorkflow Manager (DWFM) ve Network Manager
- DWFM fiziksel sunucuların ('droplet') durumunu yönetir ve periyodik sağlık kontrolleri yapar
- Network Manager instance ağ yapılandırmasını yayar
- DynamoDB kesintisi nedeniyle DWFM'nin durum kontrolleri başarısız olunca droplet kiraları (lease) sona erdi
- 02:25'te DynamoDB geri geldikten sonra DWFM yeniden bağlanmayı denedi, ancak çok sayıdaki droplet nedeniyle congestive collapse yaşandı
- 04:14'te mühendisler seçici olarak DWFM host'larını yeniden başlatarak kuyruğu temizledi ve toparlanmayı ilerletti
- 05:28'de tüm droplet lease'leri geri yüklendi ve yeni instance oluşturma yeniden başladı
- Ardından Network Manager gecikmiş ağ durumu yayılımı backlog'unu işlerken ağ bağlantısı gecikmeleri yaşandı
- 10:36'da ağ yayılım süresi normale döndü
- 11:23'te istek sınırlamasını (throttling) gevşetme başladı, 13:50'de EC2 tamamen toparlandı
Network Load Balancer (NLB) etkisi
- 20 Ekim 05:30 ~ 14:09 arasında bazı müşteriler NLB bağlantı hatalarında artış yaşadı
- NLB çok kiracılı bir yapıda çalışır ve trafiği arka uç EC2 instance'larına yönlendirir
- Sorunun nedeni ağ durumu yayılım gecikmesi yüzünden health check başarısızlıklarıydı
- Yeni eklenen EC2 instance'larının ağ yapılandırması tamamlanmadığı için health check'ler başarısız oldu
- Health check sonuçları kararsız biçimde tekrarlandığından NLB düğümleri DNS'ten çıkarılıp yeniden geri dönüyordu
- 06:52'de izleme sistemi sorunu algıladı ve mühendisler müdahaleye başladı
- Health check alt sistemindeki yük artışı nedeniyle otomatik AZ DNS failover tetiklendi
- 09:36'da otomatik failover devre dışı bırakılarak tüm sağlıklı düğümler geri getirildi
- 14:09'da EC2 toparlandıktan sonra otomatik failover yeniden etkinleştirildi
Diğer AWS hizmetlerine etkiler
- AWS Lambda:
- 19 Ekim 23:51 ~ 20 Ekim 14:15 arasında API hataları ve gecikmeler
- DynamoDB kesintisi nedeniyle fonksiyon oluşturma/güncelleme başarısız oldu, SQS/Kinesis olay işleme gecikti
- 07:04'te NLB health check başarısızlığı nedeniyle iç sistem küçüldü, eşzamansız çağrılar sınırlandı
- 14:15'te tüm backlog işlendi ve hizmet normale döndü
- ECS, EKS, Fargate:
- 19 Ekim 23:45 ~ 20 Ekim 14:20 arasında container çalıştırma hataları ve cluster ölçekleme gecikmeleri
- Amazon Connect:
- 19 Ekim 23:56 ~ 20 Ekim 13:20 arasında çağrı·sohbet·vaka işleme hataları
- DynamoDB toparlandıktan sonra işlevlerin çoğu normale döndü, ancak 07:04 sonrasında NLB ve Lambda etkileri yüzünden yeniden hatalar oluştu
- 13:20'de tam toparlanma sağlandı
- AWS STS:
- 19 Ekim 23:51 ~ 20 Ekim 09:59 arasında kimlik doğrulama API hataları ve gecikmeler
- DynamoDB toparlandıktan sonra geçici olarak normale döndü, NLB sorunu nedeniyle yeniden hatalar görüldü
- IAM oturum açma ve Identity Center:
- 19 Ekim 23:51 ~ 20 Ekim 01:25 arasında kimlik doğrulama başarısızlıklarında artış
- DynamoDB toparlandıktan sonra normale döndü
- Amazon Redshift:
- 19 Ekim 23:47 ~ 20 Ekim 02:21 arasında sorgu ve cluster değişikliği başarısızlıkları
- DynamoDB toparlandıktan sonra bazı cluster'lar EC2 kesintisi nedeniyle hâlâ anormal durumdaydı
- 21 Ekim 04:05'te tam toparlanma sağlandı
- IAM API bağımlılığı nedeniyle global bölgede de geçici sorgu hataları görüldü
- Diğer hizmetler:
- Managed Workflows for Apache Airflow, Outposts, AWS Support Center gibi hizmetler de etkilendi
Olay sonrası önlemler ve iyileştirme planı
- DynamoDB DNS Planner ve Enactor otomasyonu tamamen devre dışı bırakıldı; yeniden etkinleştirmeden önce yarış durumu düzeltilecek ve koruma mekanizmaları eklenecek
- NLB: health check başarısız olduğunda tek bir NLB'nin kaldırabileceği kapasiteyi sınırlayan bir rate control mekanizması devreye alınacak
- EC2:
- DWFM kurtarma iş akışını da içeren yeni bir test suite oluşturulacak
- Veri yayılım sisteminde daha akıllı throttling iyileştirmeleri ile bekleme kuyruğu boyutuna göre istek sınırlama özelliği eklenecek
- AWS, hizmetler arasındaki tüm karşılıklı bağımlılıkları analiz ederek kurtarma süresini kısaltma ve benzer olayları önleme yöntemlerini ayrıca gözden geçiriyor
Sonuç ve özür
- AWS, bu olayın müşteriler üzerindeki etkisi için resmî olarak özür diledi
- Kendi hizmetlerinde yüksek erişilebilirliği koruduklarını, ancak bu kesintinin müşteri işlerine ciddi etki ettiğini kabul etti
- Bu olaydan ders çıkararak otomasyon sistemlerinin dayanıklılığını ve kesinti müdahale süreçlerini güçlendirme sözü verdi
2 yorum
Kıdemli çalışanları işten çıkarmanın artçı etkisi olduğu söyleniyordu... doğru mu?
Hacker News görüşleri
Bu konuda hep aynı şeyi söyleyen kişilerden biriyim. Eğer hâlâ Richard Cook'un yazısını okumadıysanız, bu postmortemi şimdi durdurup önce How Complex Systems Fail yazısını okumanızı öneririm. Karmaşık sistem arızaları üzerine yazılmış en iyi teknik metinlerden biri. Cook, “kök neden (root cause)” kavramının kendisini reddediyor; bence bu olayda da haklı
İnternet giderek merkezileşmiş tek bir ağ (mononet) hâline geliyor. Soğuk Savaş döneminde dağıtık ağ olarak doğan internet, artık tek bir deployment hatasıyla dünyanın dört bir yanında bankacılığı, alışverişi ve seyahati durdurabilecek bir yapıya dönüştü. Bulut metaforu çoktan sınırlarını aştı.
Startup'lar veya Ar-Ge için hâlâ yararlı olabilir ama büyüme aşamasındaki şirketler ve devletler kendi sunucularına, kendi bulutlarına ve kendi çekirdek servislerine sahip olmalı. Bunun için teknoloji de insan kaynağı da var
AWS'nin postmortemindeki kesin zaman çizelgesi görselleştirmesi çok etkileyiciydi. GDC'deki efsanevi “I Shot You First” konuşmasında olduğu gibi zaman akışını eğik oklarla gösterip “gecikme tam olarak nerede oluştu?” diye sormak çok faydalıydı.
Ama beni daha çok şaşırtan şey, EC2 düğüm kira yönetim servisinin bir kurtarma prosedürüne (runbook) sahip olmamasıydı. AWS'nin çekirdek servislerinden birinde neredeyse her istisna durum için hazırlık vardır diye düşünürdüm
Bu olayın özü, DNS sistemlerindeki cache invalidation sorununun bir türevi gibi görünüyor. İki DNS Enactor farklı zamanlamalarla planı uygulayınca bir race condition oluşmuş ve eski plan yenisinin üzerine yazmış
Enactor, yeni değeri uygulamadan önce mevcut kaydın sürümünü karşılaştıran bir CAS yapmalıydı. Verim biraz düşse bile bu temel bir güvenlik önlemidir. Hatta bunu DynamoDB'nin kendisi halledebilirdi
DynamoDB'nin bölge başına yüz binlerce DNS kaydını yönettiği açıklaması beni şaşırttı.
dynamodb.us-east-1.amazonaws.comadresinin yüz binlerce IP'ye çözümlenebilmesi, Route53'ün sınırlarını aşan bir ölçekte gibi görünüyor. Muhtemelen TTL düşük tutulup her seferinde yalnızca bir kısmı güncelleniyordurBug'lar her zaman vardır. Biçimsel doğrulama (formal verification) zordur ve düşük olasılıklı bug'lar ancak yıllar sonra ortaya çıkabilir.
Bu yüzden sistemlerin mutlaka arızalanacağını varsaymalı ve zararı sınırlayan yapılar tasarlamalısınız. Hücre tabanlı mimari, kademeli rollout ve izole zone'lar bunun örnekleri.
AWS de hücre tabanlı yaklaşımı deniyor ama özellikle us-east-1'de eski çapraz bağımlılıklar hâlâ duruyor. Uzun vadede bölgeler tamamen bağımsız olacak şekilde tasarlanmalı.
Bu tür işler üst düzey yönetici desteği olmadan ilerlemez ama hissedar açısından şirketin varlığını riske atan unsurları azaltan temel bir yatırımdır
Raporda UTC yerine PT saat dilimi kullanılması şaşırtıcıydı
endpoint başına sürüm yönetimi ya da 2PC, tek writer lease gibi örüntülerin olmaması şaşırtıcıydı. Yine de AWS'nin bunu bu kadar şeffaf biçimde paylaşmasını takdir ediyorum
Bana göre bu olayın doğrudan nedeni, DynamoDB DNS yönetim sistemindeki gizli bir race condition'dı. Eski plan en güncel planın üzerine yazdı ve bölgesel endpoint'in DNS kayıtları boş kaldı
Referans: How Complex Systems Fail