Büyükelçi düzeni
Bir tüketici hizmeti veya uygulaması adına ağ istekleri gönderen yardımcı hizmetler oluşturur. Bir büyükelçi hizmeti, istemciyle birlikte bulunan bir işlem dışı proxy olarak düşünülebilir.
Bu düzen; izleme, günlüğe kaydetme, yönlendirme, güvenlik (TLS gibi) ve dayanıklılık düzenleri gibi ortak istemci bağlantısı görevlerinin dilden bağımsız bir şekilde boşaltılması için kullanışlı olabilir. Genellikle eski uygulamaların veya değiştirilmesi zor olan diğer uygulamaların ağ yeteneklerinin genişletilmesi için kullanılır. Özel bir ekibin bu özellikleri uygulamasına da imkan tanıyabilir.
Bağlam ve sorun
Dayanıklı bulut tabanlı uygulamalar, devre kesme, yönlendirme, ölçüm ve izleme gibi özelliklerin yanı sıra ağla ilgili yapılandırma güncelleştirmelerini gerçekleştirebilme imkanı gerektirir. Eski uygulamaların veya mevcut kod kitaplıklarının kodu artık korunmadığından veya geliştirme ekibi tarafından kolayca değiştirilemediğinden, bunların güncelleştirilerek bu özelliklerin eklenmesi zor olabilir veya mümkün olmayabilir.
Ağ çağrıları da bağlantı, kimlik doğrulama ve yetkilendirme için önemli ölçüde yapılandırma gerekebilir. Bu çağrılar birden çok dil ve çerçeve kullanılarak oluşturulmuş birden çok uygulamada kullanılıyorsa, çağrıların bu örneklerin her biri için yapılandırılmış olması gerekir. Ayrıca, ağ ve güvenlik işlevselliğinin kuruluşunuzdaki merkezi bir ekip tarafından yönetilmesi gerekebilir. Kod tabanı büyükse, bu ekibin aşina olmadığı uygulama kodunu güncelleştirmesi riskli olabilir.
Çözüm
İstemci çerçevelerini ve kitaplıkları uygulamanız ile dış hizmetler arasında proxy görevi gören bir dış işleme yerleştirin. Yönlendirme, dayanıklılık, güvenlik özellikleri üzerinde denetimi mümkün kılmanın yanı sıra konakla ilgili erişim kısıtlamalarından kaçınmak için proxy’yi uygulamanızla aynı konak ortamında dağıtın. Ayrıca, büyükelçi düzenini kullanarak izlemeyi standartlaştırıp genişletebilirsiniz. Proxy tarafından gecikme veya kaynak kullanımı gibi performans ölçümleri izlenebilir ve bu izleme işlemleri uygulamayla aynı konak ortamında gerçekleşir.

Büyükelçiye boşaltılan özellikler, uygulamadan bağımsız olarak yönetilebilir. Büyükelçiyi uygulamanın eski işlevselliğini etkilemeden güncelleştirip değiştirebilirsiniz. Ayrıca, bağımsız ve özel ekiplerin büyükelçiye taşınan güvenlik, ağ veya kimlik doğrulama özelliklerini uygulamasına veya bunların bakımını yapmasına imkan tanır.
Büyükelçi hizmetleri, kendilerini kullanan uygulamanın veya hizmetin yaşam döngüsüne eşlik eden bir sepet olarak dağıtılabilir. Alternatif olarak, bir büyükelçi ortak bir konak üzerindeki birden çok ayrı işlem tarafından paylaşılıyorsa bir daemon veya Windows hizmeti olarak dağıtılabilir. Büyükelçiyi kullanan hizmet kapsayıcılıysa, büyükelçinin aynı konaktaki ayrı bir kapsayıcı olarak oluşturulması ve iletişim için uygun bağlantıların yapılandırılması gerekir.
Sorunlar ve dikkat edilmesi gerekenler
- Proxy biraz gecikme yükü ekler. Doğrudan uygulama tarafından çağrılan bir istemci kitaplığının daha iyi bir yaklaşım olup olmayacağını göz önünde bulundurun.
- Proxy’ye genelleştirilmiş özellikler eklemenin olası etkisini göz önünde bulundurun. Örneğin, büyükelçi yeniden deneme işlemlerini gerçekleştirebilir, ancak tüm işlemler bir kere etkili olmuyorsa bu yöntem güvenli olmayabilir.
- Hem istemciden proxy’ye hem de ters yönde bazı bağlam bilgilerinin geçirilmesine imkan tanıyan bir mekanizmayı göz önünde bulundurun. Örneğin, yeniden denemeyi geri çevirmeye yönelik HTTP isteği üst bilgileri ekleyin veya en fazla yeniden deneme sayısını belirtin.
- Proxy’yi nasıl paketleyip dağıtacağınızı göz önünde bulundurun.
- Tüm istemciler için tek bir paylaşılan örnek mi yoksa her istemci için bir örnek mi kullanacağınızı göz önünde bulundurun.
Bu düzenin kullanılacağı durumlar
Bu düzeni aşağıdaki durumlarda kullanın:
- Birden çok dil veya çerçeve için ortak bir dizi istemci bağlantı özelliği oluşturmanızı gerektiren durumlar.
- Çapraz kesme bağlantı konularını geliştiricilere veya diğer daha özel ekiplere devretmenizi gerektiren durumlar.
- Eski veya değiştirilmesi zor bir uygulamada bulut veya küme bağlantı gereksinimlerini desteklemenizi gerektiren durumlar.
Bu düzen şu durumlarda uygun olmayabilir:
- Ağ isteği gecikme süresinin kritik olduğu durumlar. Proxy eklenmesi, yükün az da olsa artmasına yol açar ve bazı durumlarda uygulama bundan etkilenebilir.
- İstemci bağlantı özelliklerinin tek bir dil tarafından kullanıldığı durumlar. Bu durumda, geliştirme ekiplerine bir paket olarak dağıtılan bir istemci kitaplığı daha iyi bir seçenek olabilir.
- Bağlantı özelliklerinin genelleştirilemediği ve istemci uygulaması ile daha derin tümleştirme gerektirdiği durumlar.
Örnek
Aşağıdaki diyagramda, büyükelçi proxy’si üzerinden uzak bir hizmete istek gerçekleştiren bir uygulama gösterilmiştir. Büyükelçi tarafından yönlendirme, devre kesme ve günlüğe kaydetme özellikleri sağlanır. Büyükelçi, uzak hizmete çağrı yapar ve yanıtı istemci uygulamasına döndürür:
