Temsilci düzeni

Azure

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. Ağ özelliklerini genişletmek için genellikle eski uygulamalarla veya değiştirilmesi zor olan diğer uygulamalarla birlikte 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çi deseninin diyagramı

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.
  • İstemcinin ara sunucuya bağlam geçirmesine ve istemciye geri dönmesine izin veren bir mekanizma düşünün. Ö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ğıtabileceğinizi düşünün.
  • 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. Ara sunucu biraz ek yük getirir, ancak çok azdır ve bazı durumlarda bu uygulamayı etkileyebilir.
  • İ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ı özellikleri genelleştirilemediğinde ve istemci uygulamasıyla daha derin tümleştirme gerektirdiğinde.

İş yükü tasarımı

Bir mimar, Azure İyi Tasarlanmış Çerçeve yapılarında ele alınan hedefleri ve ilkeleri ele almak için Büyükelçi deseninin iş yükünün tasarımında nasıl kullanılabileceğini değerlendirmelidir. Örneğin:

Yapı Taşı Bu desen sütun hedeflerini nasıl destekler?
Güvenilirlik tasarımı kararları, iş yükünüzün arızaya karşı dayanıklı olmasına ve bir hata oluştuktan sonra tamamen çalışır duruma gelmesini sağlamaya yardımcı olur. Bu desen tarafından kolaylaştırılan ağ iletişimleri aracı noktası, yeniden deneme veya arabelleğe alma gibi ağ iletişimine güvenilirlik desenleri ekleme fırsatı sağlar.

- RE:07 Kendini koruma
Güvenlik tasarımı kararları, iş yükünüzün verilerinin ve sistemlerinin gizliliğini, bütünlüğünü ve kullanılabilirliğini sağlamaya yardımcı olur. Bu düzen, istemci tarafından doğrudan işlenemeyen ağ iletişimlerinde güvenliği artırma fırsatı sağlar.

- SE:06 Ağ denetimleri
- SE:07 Şifrelemesi

Herhangi bir tasarım kararında olduğu gibi, bu desenle ortaya konulabilecek diğer sütunların hedeflerine karşı herhangi bir dengeyi göz önünde bulundurun.

Ö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:

Büyükelçi deseni örneği