Beş ajan bir ajandan hızlı değildir. Orkestrasyon tam olarak bu problem.
DRAVION'da worker sayısını artırmak işi hızlandırmadı — koordinasyon maliyetini artırdı. Paralellik bedava değil, ve ajanlarda faturası insan ekiplerinden ağır.
DRAVION'un mimarisi şöyle: kullanıcı bir Manager Agent ile konuşuyor, Manager planı parçalara bölüyor ve her parça için izole bir sandbox'ta bir worker açıyor. Worker'lar dosya yazıyor, test çalıştırıyor, commit atıyor.
Bu mimariyi kurduktan sonraki ilk içgüdüm şuydu: worker sayısını artırırsam iş hızlanır. Yanılmışım. Ve yanıldığım nokta, yazılım ekipleri hakkında kırk yıl önce yazılmış olan şeyin ajanlar için daha da sert geçerli olması.
Paralelliğin gerçek maliyeti
İki worker'a "bu iki dosyayı düzenle" dediğinizde iş gerçekten paralel gidiyor. Ama gerçek görevler böyle bölünmüyor.
Bir endpoint'e hız sınırı eklemek isteyin. Bir worker middleware'i yazıyor, biri testleri yazıyor. Test yazan worker, middleware'in imzasını bilmek zorunda. Henüz yazılmadığı için bilmiyor. Ya bekliyor — o zaman paralellik yok — ya tahmin ediyor, ve tahmini yanlış olduğunda iki worker'ın çıktısı birbirine uymuyor.
İnsan ekipte bu sorun bir Slack mesajıyla çözülüyor. Ajanlarda çözülmüyor, çünkü ajanlar birbirlerine "bu arada imzayı değiştirdim" demiyor. Söylemelerini istiyorsanız, o iletişimi siz protokol olarak tasarlamak zorundasınız.
Ajanlarda koordinasyon maliyeti insan ekiplerinden yüksek. Çünkü ajanlar sormuyor — varsayıyor.
Manager'ın gerçek işi plan yapmak değil
Başlangıçta Manager Agent'ı bir planlayıcı olarak düşünüyordum: isteği al, adımlara böl, dağıt. Zamanla anladım ki asıl işi başka.
Manager'ın gerçek işi sözleşme belirlemek. Yani worker'ları başlatmadan önce, aralarındaki arayüzü sabitlemek. Fonksiyon imzası, dosya yolları, dönüş tipi, hata biçimi. Bunlar sabitlendikten sonra worker'lar birbirinden habersiz çalışabiliyor, çünkü tahmin etmeleri gereken bir şey kalmıyor.
Sözleşmeyi sabitlemeyip "worker'lar anlaşsın" demek, en pahalı hata türünü üretiyor: iki tarafı da kendi başına doğru, birlikte çalışmayan iki değişiklik.
Kaç worker doğru sayı
Bizde pratikte çıkan cevap beklediğimden küçük.
Görev doğal olarak ayrık parçalara bölünüyorsa — farklı modüller, birbirine dokunmayan dosyalar — paralellik gerçek ve kazanç net. Görev tek bir mantık zincirini takip ediyorsa, worker eklemek yalnızca birleştirme işini büyütüyor.
Bu yüzden Manager'ın verdiği karar "kaç worker açayım" değil, "bu iş gerçekten ayrık mı". Ayrık değilse tek worker daha hızlı bitiriyor, ve daha az hata çıkarıyor.
Sıralı olmak bir başarısızlık değil
Otonom ajan ürünlerinde paralellik bir pazarlama malzemesine dönüştü. "On ajan aynı anda çalışıyor" cümlesi etkileyici duruyor.
Ama bir kullanıcının umursadığı şey kaç ajanın çalıştığı değil, sonucun doğru olması ve ne kadar sürdüğü. Sıralı çalışan üç adım, paralel çalışıp sonra birbirini bozan altı adımdan hem hızlı hem güvenilir.
Bunu ölçmeden bilemezsiniz — ve ölçmek, her koşuyu yeniden oynatılabilir kaydetmenin bir yan faydası. Bir görevi hem paralel hem sıralı planla çalıştırıp hangisinin daha az başarısızlık ürettiğini görebiliyorsunuz. Bizde cevap görev tipine göre değişti, ve varsayılan planı buna göre değiştirdik.
Yani orkestrasyonun zor kısmı ajanları çoğaltmak değil. Ne zaman çoğaltmamak gerektiğini bilmek.