Yazılımcı Gözünden Meslekler serisinde her hafta bir mesleğe kod gözlüğüyle bakıyoruz. İlk konuğumuz: mutfağın kahramanları.
Bir restorana akşam sekizde girdiğinde gördüğün şey sakin bir yemek salonudur. Kapının arkasındaki mutfak ise başka bir dünya: sürekli gelen istekler, sınırlı kaynaklar, sıfır tolerans. Bir yazılımcı için bunun adı belli: yüksek trafikli bir production ortamı.
Mise en place = ortam kurulumu
Aşçılar servisten saatler önce sebzeleri doğrar, sosları hazırlar, her malzemeyi yerine koyar. Buna mise en place derler: "her şey yerli yerinde". Yazılımcı bunu hemen tanır: geliştirme ortamını kurmak, bağımlılıkları yüklemek, test verisini hazırlamak. Fark şu: aşçı bunu her gün yapar ve "bende çalışıyordu" deme şansı yoktur. Müşteri tabakta ne görüyorsa o.
Sipariş fişi = request queue
Garsondan gelen her fiş bir istektir ve mutfakta bir kuyruğa girer. Şef, hangi tabakların aynı masaya aynı anda çıkması gerektiğini hesaplar. Bu, yazılımdaki Promise.all()'un ta kendisi: beş tabak birlikte hazır olmadan hiçbiri çıkmaz. Biri geç kalırsa tüm masa bekler.
"Yes, chef!" = acknowledge
Profesyonel mutfaklarda şefin her talimatına "Yes, chef!" diye cevap verilir. Bu bir saygı ifadesinden öte, bir protokoldur: mesaj alındı, işleniyor. Yani TCP'deki ACK. Sessiz kalan bir aşçı, timeout'a düşmüş bir servis gibidir: şef mesajın ulaşıp ulaşmadığını bilemez.
Tadım = test
İyi aşçı sosu tabaktan önce tadar. Tuzu az mı, asıdit fazla mı? Bu, canlıya çıkmadan önce çalıştırılan test süitidir. Tadım yapmayan aşçı, test yazmayan yazılımcı gibidir: bir süre şansı yaver gider, sonra bir cumartesi akşamı her şey birden patlar.
"86'lamak" = feature flag kapatmak
Mutfak jargonunda bir yemek tükendiğinde "86'landı" denir ve menüden hemen düşülür. Yazılımcı için bu, sorunlu bir özelliği feature flag ile kapatmaktır: sistemi durdurmadan, kullanıcıya hata göstermeden o özelliği ortadan kaldırırsın. Restoran çalışmaya devam eder, sadece levrek yoktur.
Cumartesi akşamı = Efsane Cuma trafiği
Her mutfağın bir zirve saati vardır. O saatte yeni bir tarif denenmez, menü değiştirilmez. Neden? Çünkü aşçılar yazılımcıların zor yoldan öğrendiği kuralı en baştan bilir: yük altındayken deploy edilmez. Mutfakta bunun adı servis disiplini, bizde ise Cuma Deploy Etmedim.
Bulaşıkçı = garbage collector
Kimse onu övmez ama o olmazsa sistem yarım saatte kilitlenir. Temiz tabak kalmaz, bellek dolar, her şey yavaşlar. İyi bir mutfağın sırrı, iyi bir garbage collector gibi sessizce çalışan o kahramandır. Bir dahaki sefere restoranda mutfağa bir teşekkür gönder; onlar da senin gibi production'dalar.
Peki aşçılar yazılımcılardan ne öğrenebilir?
Belki sadece şu: tarifini versiyon kontrolüne koy. O efsane sosun ilk hali neydi, ne zaman değişti, neden değişti? Her aşçının bir git log'a ihtiyacı var.
Mutfakta çalışan bir yazılımcı arkadaşın ya da kod yazan bir aşçı dostun varsa bu yazıyı ona gönder. Hediye arıyorsan da Yazılımcıya Hediye sayfamıza göz at.
Gelecek hafta: öğretmenler, ya da 25 kişilik bir sınıfı aynı anda debug etmek.
// bug değil, tarz.