Bir gönderiyi metni, görseli ve bağlantısıyla bir kez kuyruğa alırsınız, hangi sayfalara gideceğini seçer ve saatini verirsiniz. Bir işçi süreç gönderiyi yayınlar ve her hedef için yayınlanıp yayınlanmadığını, yayınlandıysa nereye düştüğünü kaydeder. Bugün Facebook Sayfaları, Instagram Business ve LinkedIn kurumsal sayfaları çalışıyor.
Bu son ayrıntı tasarımın tamamıdır. Çoğu araç gönderinin gönderildiğini bildirir. Bu sistem her platform için yayınlanan gönderinin kimliğini ve kalıcı bağlantısını saklar; böylece Instagram'a gerçekten yayınlandı mı sorusu bir varsayım olmaktan çıkıp tıklanabilir bir şeye dönüşür.
Tek gönderi, birbirinden bağımsız hedefler
Gönderi tek bir kayıttır. Nereye gideceği ise hesap başına birer kayıttır; her biri kendi durumu, dış kimliği, kalıcı bağlantısı, hatası ve deneme sayısıyla bağımsız yayınlanır. Instagram başarısız oldu diye Facebook'taki başarı kaybolmaz.
Ana kayıt; hepsi başarılıysa yayınlandı, hiçbiri değilse başarısız, bir kısmı başarılıysa kısmi olarak toparlanır. Kısmi gerçek bir durumdur, yuvarlama hatası değil. Olmadığında ya bir başarısızlığı gizlersiniz ya da bir başarıyı çöpe atarsınız; ikisi de birileri kontrol ettiği ilk anda güvene mal olur.
Kırılgan kısım jetonlardır
Erişim jetonları AES-256-GCM ile şifreli saklanır; anahtar sunucu ortamındadır ve tarayıcıya hiç gitmez. Yalnızca bir veri tabanı kopyası, kimsenin müşteri adına paylaşım yapmasına yetmez. Hesap durumu açıktır: aktif, süresi dolmuş, iptal edilmiş ya da hatalı. Süresi dolmuş bir jeton yutulacak bir istisna değil, gösterilecek bir durumdur.
LinkedIn jetonları yaklaşık altmış günde sona erer ve bir hatadan sonra değil, süre dolmaya yaklaşınca yayından önce yenilenir. Önce başarısız olup sonra bir insandan yeniden bağlanmasını istemek, çözülmüş bir problemi destek talebine çevirir. Meta sistem kullanıcısı jetonları sona ermez; boşuna yenileme mantığı çalıştırmak yerine bu yoldan muaf tutulur.
Platform tuhaflıkları adaptörlerde durur
Çekirdek hiçbir platformu tanımaz. Görsel bağlantısını imzalar, taze jetonu alır, adaptörü çağırır ve sonucu yazar. Her adaptör tek bir platformun tuhaflığını üstlenir; böylece yeni bir platform eklemek, başka hiçbir yere dokunmadan tek bir adaptör yazmak demektir.
Instagram iki adımda yayınlar: önce bir medya konteyneri oluşturulur, sonra yayınlanır. Konteyner sorduğunuz anda çoğu zaman hazır değildir; buna dürüst yanıt, gayet sağlam bir gönderiyi başarısız saymak yerine bir sonraki turda yeniden denemektir. Meta görseli kendisi çeker; bu yüzden medya özel bir kovada durur ve yayın anında otuz dakikalık imzalı bir bağlantı alır: çekim için yeterince uzun, ortalıkta açık bir varlık olarak kalmayacak kadar kısa.
Tur beş dakika, bilerek
Paylaşım günde bir ile üç kez olur. Dakika hassasiyeti hiçbir şey kazandırmaz, çalışma sayısını beşe katlar. Bu yüzden işçi süreç beş dakikada bir çalışır ve her turda sınırlı sayıda gönderi üstlenir. Birikmiş iş, tek bir çalışmanın her şeyi yapmaya kalkıp yarıda zaman aşımına uğraması ve gönderileri yayınlanıyor durumunda bırakması yerine, birkaç tura yayılarak boşalır.
Yapmadıkları
Yalnızca görsel, video yok: video her platformda farklı bir yükleme akışıdır ve varsayılmak yerine ayrıca kapsamlandırılmayı hak eder. Yalnızca Facebook, Instagram ve LinkedIn. Yayın doğrulanır; erişim ve etkileşim geri okunmaz. Yani bu bir yayın sistemidir, analitik sistemi değil.
Asıl zamanı alan şey kod değil, platform onaylarıdır: müşterinin sayfalarına paylaşım için Meta App Review ve kurum adına paylaşım için kolay verilmeyen LinkedIn Community Management API. Onayları koddan önce başlatın. Kod birkaç gün; onaylar değil.