Başkasının servisine bağımlı olmak
Bağladığınız her dış servis, ürününüzün kontrol edemediğiniz ve onaramayacağınız bir parçası. Bunda sorun yok — bilerek karar verdiyseniz.
Dış bir API'ye bağlanmak bir yeteneği edinmenin genelde en hızlı yolu ve güvenilirliğinizin bir kısmını sessizce başkasının eline taşıyor. Asıl iş, o el kaydığında ne olacağına karar vermekte.
Kesinti olmadan önce ne olacağına karar verin
Her servis er ya da geç, sizin seçmediğiniz bir anda kesintiye giriyor. Hiçbir şey ters gitmemişken cevaplanmaya değen soru şu: özelliğiniz hata mı veriyor, kısıtlı mı çalışıyor, yoksa bekliyor mu?
Hata vermek isteğe bağlı bir şey için kabul edilebilir — açılmayan bir harita, boş kalan bir zenginleştirme. Ödeme ya da giriş yolundaki hiçbir şey için kabul edilebilir değil; orada bir yedek yola ya da kişiye ne yapacağını söyleyen dürüst bir hataya ihtiyacınız var. Hiç sonuçlanmayan bir dönen çember en kötü sonuçtur; çünkü insanlara başkasının değil sizin ürününüzün bozuk olduğunu öğretir.
Anahtarlar yapılandırma değil, kimlik bilgisidir
Bir API anahtarı, tesadüfen bir yapılandırma dosyasında yazan bir paroladır ve ayara benzediği için yapılandırma muamelesi görür. Sonra depoya, bir ekran görüntüsüne, bir mesaj dizisine düşer.
Anahtarları koddan tamamen ayrı tutun, ortam başına ayrı anahtar kullanın ki bir test canlı veriye asla dokunamasın ve erişimi olan biri ayrıldığında hepsini yenileyin. Ayrıca her anahtara servisin sunduğu en dar kapsamı verin — çoğu API bir anahtarın ne yapabileceğini kısıtlamanıza izin veriyor ve neredeyse kimse bunu, keşke yapsaydım dedirten olaydan önce kullanmıyor.
Hız limitleri ve onları kötüleştiren yeniden denemeler
Çoğu entegrasyonun bir çağrı başarısız olduğunda ilk yaptığı şey hemen tekrar denemek. Başarısızlık bir hız limitiyse durumu az önce kötüleştirdiniz ve yoğun bir sabah kendi elinizle yarattığınız bir kesintiye dönüştü.
Artan gecikmeyle yeniden deneyin, deneme sayısını sınırlayın ve sonrasında döngüye girmek yerine tamamen durun. Ve idempotent olmayan bir yazma işlemini asla körlemesine tekrarlamayın — bu hatanın klasik hâli, ilk çağrı aslında başarılı olduğu ve yalnızca cevabı kaybolduğu için müşteriden iki kez tahsilat yapılmasıdır.
Altınızdan değişecek
Servisler yanıt biçimlerini değiştiriyor, uçları kullanımdan kaldırıyor ve limitleri güncelliyor; genelde okumadığınız bir yerde duyurarak. Bir yıldır çalışan entegrasyon istikrarlı değil; son değiştiğinden beri test edilmemiş demek.
Servis sunuyorsa bir sürüme sabitleyin, sağlayıcının değişiklik duyurularına kimsenin okumadığı ortak bir kutuyu değil gerçek bir kişiyi abone edin ve her gün çalışan, cevabı eskisine benzemeyi bıraktığında sizi uyaran küçük bir otomatik çağrı bulundurun. Sonuncusu yapması bir saat sürüyor ve bozulmayı müşteriden önce buluyor.
Gerçekten sorulan sorular
Dış bir servise bağlanmadan önce neye karar vermeliyim?
Kesinti olduğunda ne olacağına: hata mı verecek, kısıtlı mı çalışacak, bekleyecek mi. İsteğe bağlı bir şeyde hata kabul edilebilir; ödeme ya da giriş yolunda yedek yol veya dürüst bir hata gerekir. En kötüsü hiç sonuçlanmayan bir bekleme.
API anahtarları nasıl yönetilmeli?
Yapılandırma değil, kimlik bilgisi gibi. Depodan uzak tutun, ortam başına ayrı anahtar kullanın ki testler canlı veriye dokunmasın, erişimi olan biri ayrıldığında yenileyin ve her anahtarın kapsamını daraltın.
Yeniden denemeler nasıl olmalı?
Artan gecikmeyle ve sınırlı sayıda, sonra tamamen durarak. Hemen tekrar denemek bir hız limitini kendi yarattığınız kesintiye çevirir; idempotent olmayan bir yazmayı körlemesine tekrarlamak da müşteriden iki kez tahsilat yapar.