"Hangi çerçeveyi kullanalım?"
Toplantı bu soruyla başlıyor ve iki saat sonra aynı soruyla bitiyor.
Soru yanlış sırada. Kararı belirleyen şey aracın özellikleri değil, ekibin taşıyabileceği yük. Bu yazı sırayı anlatıyor.
Önce görev listesi
Araç seçmeden önce hangi görevleri koşturacağını yaz.
Tek bir metin üreten görev ile araç çağıran, veri yazan ve birden çok adımı sıralayan görev aynı altyapıyı istemiyor.
Listeyi somut yaz: "müşteri mesajını sınıflandır", "faturayı okuyup alanları çıkar", "raporu hazırlayıp onaya gönder". Genel ifadeler karar üretmiyor.
Her görevin yanına sıklığını da yaz: günde kaç kez koşacak? Günde üç kez koşan görevle saniyede üç kez koşan görev, aynı altyapıyı istemiyor.
Liste çıktığında çoğu ekip bir şey fark ediyor: görevlerin yarısı ajan bile istemiyor. Sabit bir akış ve tek çağrı yetiyor.
Listeyi de birlikte çıkar. Ekipteki herkesin aklındaki görev listesi farklı oluyor ve fark ancak yazıldığında görünüyor.
Bu ayrım tek başına altyapı kararının yarısı. Gereksiz yere ajan kuran ekip, gereksiz yere bakım da üstleniyor.
Sabit bir akış hem daha ucuz hem daha öngörülebilir. Ajanı, gerçekten karar verilmesi gereken yerlerde kullan.
Kim bakacak sorusunu yaz
Altyapı kararının en çok atlanan parçası bu.
Model sürümü değişecek, kütüphane kırılacak, sağlayıcı bir uç noktayı kapatacak. Bunlara kim bakacak?
Cevap bir isim olmalı. "Ekip bakar" cevabı, üçüncü ayda kimsenin bakmaması demek.
İsim yazıldığında araç seçimi de değişiyor. Yarım günü olan bir kişiyle, tam zamanlı bir ekibin seçeceği araç aynı değil.
Bakım yükü ayrıca görünmez bir yük. Kimse toplantıda "kütüphane sürümü yükseltilecek" demiyor ve iş her zaman birine kalıyor.
Bu kişinin yükünü de yaz. Haftada kaç saat? Yazılmayan yük, o kişinin asıl işinden çalınıyor ve iki ay sonra şikâyet oluyor.
Yedeği de belirle. Tek kişiye bağlı bir altyapı, o kişi izne çıktığında duruyor ve bu durum her ekipte yaşanıyor.
Bakım yükünü öne al
Hazır çerçeveler hızlı başlatıyor. Karşılığında sürüm takibini getiriyor.
Kendi yazdığın ince bir katman yavaş başlıyor. Karşılığında okuduğunda anlıyorsun ve bozulduğunda nereye bakacağını biliyorsun.
İkisi arasında doğru cevap yok. Doğru soru şu: ekibin hangi yükü taşıyabilir?
Küçük ekiplerde ince katman genellikle daha uzun yaşıyor. Büyük ekiplerde ortak bir çerçeve, herkesin aynı dili konuşmasını sağlıyor.
Arada kalınan durumda da ölçüt aynı: hangi seçeneğin bozulduğunda ne yapacağını biliyorsun?
Kararı da yazılı ver. Gerekçesi yazılmamış teknik karar, altı ay sonra yeniden tartışılıyor.
Yazılı karar ayrıca değiştirilebilir de oluyor. Gerekçe belliyse, gerekçe değiştiğinde kararı gözden geçirmek kolay.
Çıkış maliyetini ölç
Bugün seçtiğin şeyi yarın bırakmak zorunda kalabilirsin. Sağlayıcı kapanıyor, fiyat değişiyor, ihtiyaç kayıyor.
Ölçüt tek soru: bu aracı bırakmak istesek kaç dosyaya dokunmamız gerekir?
Cevap "her yere" ise araç uygulamanın içine karışmış demektir. Bu, aracın kötü olduğunu göstermiyor; sınırın çizilmediğini gösteriyor.
Sınırı çizmenin yolu da basit: model çağrılarını tek bir yerden geçir. Uygulamanın geri kalanı hangi sağlayıcıyı kullandığını bilmesin.
Bu tek kural, sonraki bütün kararları ucuzlatıyor. Model değişimi bir dosyayı değiştirmek oluyor.
Aynı kural maliyet ve kayıt tarafını da tek yerde topluyor. Tüketimi ölçmek, tek kapıdan geçen çağrılarda çok daha kolay.
Veri sınırını mimariye yaz
Hangi veri nereye gidiyor? Bu soru araç seçiminden önce cevaplanmalı.
Kurumunun sınıflandırması varsa onu al. Yoksa üç kategoriyle başla: dışarı çıkabilen, maskelenerek çıkabilen, hiç çıkmayan.
Sonra her görevi bir kategoriye yerleştir. Bazı görevler bu adımda listeden düşüyor ve bu iyi bir sonuç.
Düşen görevler de tamamen kaybolmuyor. Veri maskelenerek ya da kurum içinde koşan bir seçenekle geri gelebiliyorlar.
Verinin yürüdüğü yolu çizmek ayrı bir rehberde; altyapı kararında o çizim bir girdi oluyor.
Kararı da koda yansıt. Yazılı bir kural, kod tarafında zorlanmıyorsa ilk yoğun haftada delinir.
Zorlamanın yolu da basit: hangi verinin hangi çağrıya girebileceğini tek bir yerde kontrol et. Dağınık kontrol, kontrol değil.
Gözlemlenebilirliği baştan koy
Ajan üretimde bozulduğunda ilk ihtiyacın kayıt oluyor.
Hangi görev, hangi girdi, hangi araç çağrısı, ne döndü, ne kadar sürdü, ne kadar tüketti? Bu altı alan çoğu ekibe yetiyor.
Sonradan eklenen kayıt, geçmişteki hatayı açıklamıyor. Bu yüzden ilk günden koy.
Maliyeti de aynı yerden izle. Tüketim görünmediğinde ay sonunda sürpriz oluyor ve sürpriz, projenin durdurulma sebebi olabiliyor.
Görev başına maliyet de hesapla. Toplam rakam bir şey söylemiyor; hangi görevin pahalı olduğu karar üretiyor.
Kayıtta kişisel veri varsa maskelemeyi de ilk günden kur. Sonradan temizlemek çok daha pahalı.
Maskelemeyi de kayıt yazılmadan önce yap. Kaydedildikten sonra temizlenen veri, kaydedilmiş sayılıyor.
Sınama kümesi altyapının parçası
Altyapı seçimi bir kere yapılıyor, değişiklikler her hafta yapılıyor.
Her değişikliğin ölçülebilmesi için sabit bir sınama kümesi gerekiyor. Üretimdeki tutarsızlığı ölçmek ayrı bir rehberde anlatılıyor.
Kümeyi altyapının bir parçası say. Seçtiğin araç, kümeyi koşturmayı kolaylaştırıyor mu?
Bu soru çoğu karşılaştırmada hiç sorulmuyor ve günlük hayatta en çok fark yaratan soru oluyor.
Aracın belgelerinden çok, kendi görevinle bir gün denemek cevap veriyor. Bir günlük deneme, bir haftalık araştırmadan net.
Kümeyi ekipteki herkesin koşturabilmesi de önemli. Tek kişinin makinesinde çalışan ölçüm, ölçüm değil.
Koşturmayı derleme hattına bağlamak en iyisi. Her değişiklikte kendiliğinden koşan küme, unutulmayan küme oluyor.
Tek görevle başla
Bütün görev listesini aynı anda kurmaya çalışma.
Listeden bir görev seç: sık tekrar eden, kabul ölçütü net ve hatası pahalı olmayan bir görev.
Üç ölçütün üçü de gerekli. Hatası pahalı olan bir görevle başlamak, ilk hatada bütün işi durduruyor.
O tek görevi uçtan uca kur. Kurarken altyapıya dair bütün soruların gerçek cevapları çıkıyor.
İkinci görev çok daha hızlı kuruluyor. Üçüncüsünde artık bir desen oluşuyor ve çerçeve kararı kendiliğinden netleşiyor.
Tersini yapan ekipler, hiç kurulmamış bir altyapıyı aylarca tartışıyor.
Tartışma da bitmiyor çünkü gerçek veri yok. Tek bir çalışan görev, üç toplantının çözemediği soruyu bir haftada kapatıyor.
Kim için
Ekibi için ilk ajan altyapısını kuracak teknik liderler, yazılım mimarları ve kurucu geliştiriciler için.
Araç kıyaslaması arayan için değil. Burada anlatılan şey, hangi aracı seçersen seç kararı sağlam kılan sıra.
Tek kişilik kurulumlar için de fazla. Tek başına çalışıyorsan bakım sahibi zaten sensin ve çıkış maliyeti dışındaki sorular küçülüyor.
Ekip büyüdüğünde ise bu sayfayı yeniden aç. Kararın gerekçeleri, ikinci kişi geldiğinde en çok sorulan şey oluyor.
Bugün yapılacak tek şey
Karşılaştırma tablosu açma.
Bir sayfaya üç şey yaz: koşturulacak görevlerin listesi, bakacak kişinin adı, her görevin veri kategorisi.
Sonra listeden tek bir görev seç ve model çağrılarını tek bir dosyadan geçirerek kur. O dosya, sonraki bütün kararlarının çıkış kapısı oluyor.
Bir hafta sonra o tek görev çalışıyorsa çerçeve sorusu da kendiliğinden cevaplanmış oluyor.