Organ nakli cerrahisinde lojistiğin ve sterilizasyonun en ufak bir hata payı dahi yoktur. Bir donörden bağışlanan kalbi veya karaciğeri vücuttan çıkardığınızda zaman işlemeye başlar. Organ, özel koruyucu hipotermik solüsyonların (Custodiol/UW) içine konur, steril çift katmanlı biyolojik taşıma kaplarına yerleştirilir, dijital sıcaklık takip sensörleriyle donatılır ve polis eskortu eşliğinde ambulans uçakla ameliyathaneye yetiştirilir. Bu süreç bir "soğuk zincir ve güvenlik protokolüdür".
Şimdi gözünüzün önüne şöyle bir sahne getirin: Donörden kalbi çıkaran cerrah, kalbi alelacele bir süpermarket poşetine koyuyor, ağzını düğümleyip şehirlerarası otobüs terminaline koşuyor ve muavine "Kardeşim bunu bagajın altına at, Ankara Şehir Hastanesi'nin önünde hekim bekliyor ona teslim et" diyor. Kulağa bir cinayet girişimi gibi geliyor, değil mi? Çünkü o poşetin içindeki organ yolda mikrop kapar, ezilir, bozulur ve o kalbin takıldığı hasta ameliyat masasında hayatını kaybeder.
Yazılım geliştirme ve sistem mühendisliği dünyasında da 2026 yılında hâlâ her gün binlerce geliştiricinin canlıya çıkış (deploy) yaparken sergilediği davranış tam olarak bu poşetle organ nakli barbarlığıdır: Git reposunu masaüstünde ZIP yapıp cPanel File Manager üzerinden canlı sunucuya boca etmek.
"Son_Hali_v2_Final_Kesin.zip" Faciası
Senaryo kurumsal şirketlerde ve dijital ajanslarda defalarca yinelenen bir kara mizahtır. Şirketin yazılımcısı yerelde günlerce çalışmıştır. Kodda yeni özellikler eklemiş, ödeme sayfası kodlamış, API entegrasyonu yapmıştır.
Modern dünyanın mühendislik standartları bellidir: Kod Git ile versiyonlanır (git commit -m "feat: add payment gateway"), uzak repoya gönderilir (git push), GitHub Actions veya GitLab CI boru hattı (pipeline) tetiklenir, birim testleri (unit tests) ve güvenlik taramaları (security linter) çalışır, başarıyla geçerse kod hedef sunucuya sıfır kesintiyle (zero-downtime deployment / blue-green) aktarılır.
Fakat bizim "alaylı ama gururlu" yazılımcımız için bütün bunlar "zaman kaybı ve gavur icadıdır".
O kendi geleneksel ritüelini uygular:
- Windows Gezgini'nde proje klasörüne girer.
Ctrl + Ayapar.- Sağ tıklar: "Arşive Ekle -> son_hali_kesin_calisiyor.zip".
- cPanel'e girer, Dosya Yöneticisi'ni açar,
public_htmldizinine bu zip'i yükler. - Sağ tıklar: "Extract" (Çıkar) der ve tüm eski dosyaların üzerine körlemesine yazar!
Ve arkasına yaslanıp sigarasından bir nefes çeker: "Deploy ettik işte, ne gerek var CI/CD'ye!"
İnternete Saçılan Hazine: .env ve .git Klasörü
Bu barbarca yöntemin sisteme ödettiği ilk fatura, arşivin içine farkında olmadan nelerin girdiğini bilmemektir. Geliştirici Ctrl + A yaptığında, yerel geliştirme ortamındaki en mahrem dosyaları da o zip'in içine hapsetmiştir:
.env(Veritabanı kök parolaları, AWS S3 secret key'leri, Stripe / İyzico gizli API anahtarları, SMTP şifreleri).gitdizini (Tüm projenin kaynak kod geçmişi, silinmiş eski şifreler, commit logları)node_modulesveya geçici önbellek dizinleri (Sunucunun diskini patlatan 200.000 adet çöp dosya!)
Dosyalar public_html içine çıkarıldığı an, o gizli .env dosyası internette herkese açık (world-readable) bir web dosyasına dönüşür:
https://sirketadi.com.tr/.envİnternette 7/24 tarama yapan kötü niyetli botlar (shodan, censys veya basit bir python scripti), alan adının sonuna /.env yazarak sorgu atar. Ve bingo! Ekranda firmanın tüm veritabanı bağlantı şifreleri, banka sanal POS gizli anahtarları kabak gibi parıldamaktadır!
Ertesi sabah firmanın veritabanı fidye yazılımcıları tarafından şifrelenmiş (ransomware), banka hesaplarından test çekimleri yapılmış ve müşteri verileri Telegram kanallarına saçılmıştır.
Yazılımcı ise patronun karşısında ter dökerek masal anlatır: "Sunucuya siber saldırı yapıldı efendim, Rus hackerlar çok güçlüymüş..."
Geri Dönüşü Olmayan (No-Rollback) Cehennem
Bu deploy ilkelliğinin ikinci faturası ise bir hata anında ortaya çıkar. Yeni atılan kodda kritik bir syntax hatası vardır ve site 500 Internal Server Error vererek çöker.
Patron bağırır: "Derhal eski haline geri alın!"
Yazılımcı panik içinde sunucuya bakar. Eski dosyaların tamamının üzerine yeni dosyalar yazılmıştır (overwrite). Eski çalışan kodun yedeği nerededir? Geliştiricinin masaüstündeki çöp kutusunda mı, iki gün önce aldığı eski_yedek.zip dosyasında mı?
Geri alma (Rollback) imkânsızdır! Geliştirici elleri titreyerek canlı sunucu üzerinde, FTP'den dosya açıp kodları elle düzeltmeye (hotfix in production) çalışır; her dokunuşunda sistemi daha da derin bir bataklığa sürükler.
Modern Cerrahi: CI/CD ve Git Disiplini
Yazılım canlı bir organizmadır ve üretim sunucusu o organizmanın kalp odacığıdır. Oraya dokunurken uyulması gereken asgari cerrahi hijyen kuralları şunlardır:
- Sunucuya Asla Zip Yüklemeyin: cPanel veya sunucu doğrudan bir FTP çöplüğü değildir. Kod sunucuya ya
git pullile çekilmeli ya da otomatik bir dağıtım aracı tarafından aktarılmalıdır. - Hassas Dosyaları
.gitignoreile Mühürleyin:.env,.git, anahtar dosyaları ve kişisel konfigürasyonlar repoya asla girmemeli; sunucu tarafında güvenli bir şekilde elle bir kez tanımlanmalıdır. - Web Kök Dizini Ayrımı (
/publicvs/root): Modern framework'lerde (Laravel, Next.js, Django) uygulamanın ana kodları web kök dizininin (public_html) dışında tutulmalıdır. Ziyaretçinin erişebileceği yer sadece/publicklasörü olmalıdır; böylece kazara bir zip yüklense bile hassas dosyalar asla internete sızmaz. - Tek Tıkla Geri Alma (Atomic Deployment): Deploy araçları (Deployer, Capistrano, GitHub Actions) sunucuda her sürümü
releases/2026031401gibi ayrı klasörlerde açar ve sembolik bir link (symlink) ile ana yayına bağlar. Yeni sürümde hata çıkarsa tek bir komutla önceki sürüme 1 saniyede geri dönülür (instant rollback).
Organı süpermarket poşetine koyup otobüsle yollayan cerraha nasıl hekim denilemezse, projeyi zip yapıp cPanel'e atan kişiye de yazılım mühendisi denilemez. Sürüm kontrolü ve güvenli dağıtım bir lüks değil; mühendislik mesleğinin asgari ahlakı ve onurudur.