Damar cerrahisinde ve uzuv replantasyonlarında cerrahların kâbusu "Gözden Kaçan Yan Dal Kanatması"dır (kollateral damar yaralanması). Kopan bir bacağı yerine dikerken cerrah ana femoral arteri ve ana femoral veni büyük bir başarıyla birbirine anastomoz eder. Bacağın nabzı alınır, ayak parmakları pembeleşir. Ameliyathane ekibi derin bir nefes alarak operasyonu başarıyla tamamladığını düşünür.
Fakat derinde, kas planlarının arkasında kalan küçük ama basınçlı bir yan dal arteri (derin sirkumfleks dalı) bağlanmadan unutulmuştur. Hasta servise çıkarılır. İki saat sonra hastanın tansiyonu düşmeye başlar; bacakta devasa bir hematom birikir, doku kompartman sendromuna girer ve hasta iç kanamadan şoka girer. Ana hat bağlanmıştır; fakat kılcal gibi görünen o tek yan arter, tüm vücudun kanını dışarı sızdırmıştır.
Bilişim altyapılarında ve kurumsal sunucu göçlerinde (server migration) sistem mühendislerinin başına gelen en sinsi felaket tam olarak bu unutulmuş yan dal kanamasıdır: Web sitesi taşınırken unutulan statik DNS kayıtları, alt alan adları (subdomains) ve eski sunucuda sessizce dönen "hayalet trafik" (Ghost Traffic).
Hafta sonu bir e-ticaret markasının veya kurumsal rezervasyon portalının altyapısı yeni nesil yüksek performanslı bulut sunuculara taşınır. Veritabanları aktarılır, dosyalar rsync ile kopyalanır, PHP sürümleri ayarlanır.
Sistem yöneticisi Cloudflare veya DNS yönetim paneline girer:
A sirketadi.com -> 198.51.100.50 (Yeni IP)
CNAME www.sirketadi.com -> sirketadi.com
Tarayıcıdan siteye girilir; ana sayfa ışık hızında açılmaktadır. Ürünler listelenir, sepete eklenir. Test siparişi verilir; çalışmaktadır. Sistem ekibi gururla e-posta atar: "Sunucu taşıma işlemi başarıyla tamamlanmıştır. Eski sunucumuz salı günü saat 12:00'de kalıcı olarak kapatılacaktır."
Ve salı günü saat 12:01'de eski sunucunun fişi çekilir (power off).
İşte o saniyede şirketin muhasebesi, ödeme sistemleri ve mobil uygulaması eşzamanlı bir kalp kriziyle yere serilir!
Saat 12:05'te şirketin çağrı merkezi santrali kilitlenir:
Mobil Uygulama Çöktü: iOS ve Android kullanıcıları uygulamayı açtığında hiçbir veri yüklenmemekte, ekran beyaz kalmaktadır.
Sanal POS Bildirimleri Havada Kaldı: Bankaların 3D Secure ekranından dönen müşterilerin kartından para çekilmekte, ancak sipariş veritabanına düşmemektedir!
E-Fatura Entegratörü Kilitlendi: Depodan çıkan kargolara fatura kesilememektedir.
Şirket genel müdürü panikle bağırır: "Az önce site açılıyordu, şimdi kimse alışveriş yapamıyor! Müşterilerin parası çekildi ama sipariş yok! Bize kim saldırdı?"
Sistem yöneticisi DNS yönetim panelini açar ve gerçeğin o soğuk yüzüyle karşılaşır. Taşıma sırasında sadece ana alan adı (sirketadi.com) ve www güncellenmiştir. Oysa şirketin dijital ekosisteminde yıllar içinde açılmış onlarca alt alan adı vardır:
api.sirketadi.com (Mobil uygulamanın bağlandığı API sunucusu) -> Eski Sunucu IP'si!
pos.sirketadi.com (Bankaların 3D Secure dönüş yaptığı Webhook URL'si) -> Eski Sunucu IP'si!
efatura.sirketadi.com (Muhasebe ERP köprüsü) -> Eski Sunucu IP'si!
cdn.sirketadi.com (Ürün detay görselleri) -> Eski Sunucu IP'si!
Siz eski sunucuyu kapattığınız anda, şirketin mobil kullanıcılarının attığı tüm istekler, bankaların gönderdiği tüm ödeme onay sinyalleri kapalı bir sunucunun boş duvarına toslamış ve uzay boşluğunda buharlaşmıştır!
Eski sunucunun hemen kapatılmadığı durumlarda ise felaket çok daha sinsidir: Bölünmüş Beyin (Split-Brain) Sendromu.
Eski sunucu 3 gün daha açık bırakılmıştır. Web sitesinden alışveriş yapan kullanıcıların siparişleri YENİ sunucunun veritabanına yazılmaktadır. Ancak mobil uygulamadan alışveriş yapan binlerce kullanıcının siparişleri api.sirketadi.com üzerinden ESKİ sunucunun veritabanına yazılmaktadır!
Şirket üç gün boyunca iki farklı paralel evrende yaşamıştır:
Depo ekibi yeni sunucunun paneline bakarak sipariş hazırlamaktadır; mobil uygulamadan gelen yüzlerce sipariş eski sunucunun veritabanında unutulduğu için müşterilere hiçbir ürün kargolanmamıştır!
Muhasebe stok sayımı yaptığında veritabanları birbirini tutmamakta, aradaki fark binlerce ürünü bulmaktadır.
İki farklı veritabanını üç gün sonra birbiriyle birleştirmek (merge), cerrahın yanlış dikilmiş iki damarı söküp yeniden dikmesinden çok daha kanlı ve yıpratıcı bir veritabanı ameliyatıdır.
Bir sunucu göçü sadece iki satır DNS değiştirmek değildir. Altyapının tüm damarlarını eksiksiz nakletmek için şu cerrahi protokol izlenmelidir:
Eksiksiz DNS Haritalandırması (Zone Audit): Göçten önce alan adının tüm DNS bölgesi (Zone File) dışa aktarılmalı ve içinde A, CNAME, TXT, SRV kaydı olan her bir alt alan adı tek tek listelenmelidir:
dig axfr sirketadi.com @ns1.dns.com
Uygulama İçi Bağımlılık Taraması: Kaynak kodların içinde grep -rn "sirketadi.com" /var/www/ komutuyla hardcoded olarak kalmış alt alan adları, eski IP adresleri ve webhook URL'leri tespit edilmelidir.
Eski Sunucuda Trafik İzleme (Sniffing): Yeni sunucuya geçildikten sonra eski sunucu hemen kapatılmamalıdır! Eski sunucu üzerinde tcpdump veya ngrep çalıştırılarak hâlâ oraya gelen yetim istekler (hayalet trafik) canlı olarak izlenmelidir:
tcpdump -i any -n "port 80 or port 443" and not src net <ofis_ip>
Eğer eski sunucuya hâlâ HTTP istekleri akıyorsa, DNS'te bir şeyler unutulmuş demektir!
Geçici HTTP 301 / Ters Vekil Köprüsü: Eski sunucunun Nginx yapılandırmasına geçici bir kural yazılarak, oraya gelen tüm istekler şeffaf bir şekilde yeni sunucuya yönlendirilmelidir (proxy_pass https://yeni-sunucu-ip). Böylece DNS güncellenene kadar hiçbir sipariş ve webhook kaybolmaz.
Ana damarı dikip yan dalları açık bırakmak hastayı nasıl iç kanamadan öldürüyorsa, alt alan adlarını eski sunucuda unutup fişi çekmek de şirketin ticaretini öyle komaya sokar. Mühendislik bütünü görmekle başlar; en küçük bir API kaydını bile gözden kaçırmayan titizlik, kriz ile zafer arasındaki o ince çizgidir.