Büyükelçi deseni

Bir tüketici hizmeti veya uygulaması adına ağ istekleri gönderen yardımcı hizmetler oluşturur. Bir elçi hizmetini, istemciyle birlikte konumlandırılmış işlem dışı bir proxy olarak düşünebilirsiniz.

Büyükelçi modelini, izleme, günlüğe kaydetme, yönlendirme, Aktarım Katmanı Güvenliği (TLS) gibi güvenlik önlemleri ve dayanıklılık desenleri gibi yaygın istemci bağlantı görevlerinin yükünü dilden bağımsız bir şekilde hafifletmek için kullanın. Büyükelçi desenini kullanarak eski uygulamaların veya değiştirilmesi zor olan diğer uygulamaların ağ özelliklerini genişletin. Uzman ekipler bu özellikleri uygulamak için Büyükelçi desenini de kullanabilir.

Bağlam ve sorun

Dayanıklı bulut tabanlı uygulamalar için devre kesme, yönlendirme, ölçüm ve izleme ve ağ ile ilgili yapılandırma güncelleştirmeleri gibi özellikler gerekir. Geliştirme ekibi kodu korumazsa veya kolayca değiştiremiyorsa, bu özellikleri eklemek için eski uygulamaları veya mevcut kod kitaplıklarını güncelleştirmek zor veya hatta imkansız olabilir.

Ağ çağrıları ayrıca bağlantı, kimlik doğrulaması ve yetkilendirme için önemli bir yapılandırma gerektirebilir. Birden çok uygulama bu çağrıları farklı diller ve çerçeveler arasında kullandığında, çağrıları her örnek için ayrı olarak yapılandırmanız gerekir. Kuruluşunuzdaki merkezi bir ekibin ağ ve güvenlik işlevlerini yönetmesi gerekebilir. Büyük bir kod tabanıyla, bu ekibin tanıdık olmayan uygulama kodunu güncelleştirmesi riskli olabilir.

Çözüm

İstemci çerçevelerini ve kitaplıklarını, uygulamanızla dış hizmetler arasında ara sunucu işlevi gören bir dış işleme yerleştirin. Yönlendirme, dayanıklılık ve güvenlik özellikleri üzerinde denetim sağlamak ve konakla ilgili erişim kısıtlamalarını önlemek için ara sunucuyu uygulamanızla aynı konak ortamına dağıtın. İzleme araçlarını standartlaştırmak ve genişletmek için büyükelçi desenini kullanın. Ara sunucu, uygulamayla aynı konak ortamında gecikme süresi veya kaynak kullanımı gibi performans ölçümlerini izleyebilir.

Büyükelçi deseninin diyagramı.

Aynı konakta yerleşik bir istemci uygulama ile ambassador proxy'yi gösteren diyagram. İstemci uygulaması, dış hizmetleri doğrudan çağırmak yerine büyükelçiye istek gönderir. Büyükelçi bu istekleri uzak hizmete iletir. Uzak hizmetten gelen yanıtlar, büyükelçi aracılığıyla ve istemci uygulamasına geri döner.

Büyükelçiye boşaltılan özellikleri uygulamadan bağımsız olarak yönetebilirsiniz. Uygulamanın eski işlevselliğini bozmadan büyükelçiyi güncelleştirebilir ve değiştirebilirsiniz. Ayrı, özel ekipler ayrıca büyükelçiye taşınan güvenlik, ağ veya kimlik doğrulama özelliklerini uygulayabilir ve koruyabilir.

Büyükelçi hizmetlerini, tüketen bir uygulamanın veya hizmetin yaşam döngüsüne eşlik edecek bir yan taşıyıcı olarak dağıtabilirsiniz. Alternatif olarak, ortak bir konakta birden çok ayrı işlem bir büyükelçiyi paylaşıyorsa, bunu bir daemon veya Windows hizmeti olarak dağıtabilirsiniz. Tüketici hizmet kapsayıcı içerisindeyse, elçi kapsayıcısını aynı sunucuda ayrı bir kapsayıcı olarak oluşturun ve iletişim için gerekli bağlantı kurulumlarını yapın.

Sorunlar ve dikkat edilmesi gerekenler

Bu deseni nasıl uygulayabileceğinize karar vermek için aşağıdaki noktaları göz önünde bulundurun:

  • Proxy biraz gecikme ekler. Uygulamanın doğrudan çağırdığı bir istemci kitaplığının daha iyi bir yaklaşım olup olmadığını göz önünde bulundurun.

  • Genelleştirilmiş özellikleri ara sunucuya eklemenin olası etkisini göz önünde bulundurun. Örneğin, büyükelçi yeniden denemeleri işleyebilir, ancak tüm işlemler bir kez etkili olmadığı sürece bu yaklaşım güvenli olmayabilir.

  • İstemcinin ara sunucuya bağlamı aktarmak ve istemciye geri dönmek için kullanabileceği bir mekanizma düşünün. Örneğin, yeniden denemeyi geri çevirmek için HTTP isteği üst bilgilerini ekleyin veya yeniden denemenin en fazla kaç kez gerçekleştirileceğini belirtin.

  • Proxy'yi paketlemeyi ve dağıtmayı 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ı düşünün.

Bu desen ne zaman kullanılır?

Bu düzeni aşağıdaki durumlarda kullanın:

  • Birden çok dil veya çerçeve için ortak bir istemci bağlantı özellikleri kümesi oluşturmanız gerekir.

  • Genel istemci bağlantısı ile ilgili sorunları altyapı geliştiricilerine veya daha uzmanlaşmış diğer ekiplere devredmelisiniz.

  • Eski bir uygulamada veya değiştirilmesi zor bir uygulamada bulut veya küme bağlantı gereksinimlerini desteklemeniz gerekir.

  • API ağ geçitlerinin, hizmet ağ geçitlerinin veya standart giriş ve çıkış denetimlerinin kolayca işleyememelerine neden olan protokolleri veya bağlantı desenlerini desteklemeniz gerekir.

Bu düzen aşağıdaki durumlarda uygun olmayabilir:

  • Ağ isteği gecikme süresi kritik öneme sahiptir. Ara sunucu en düşük ek yükü getirir ve bu ek yük uygulamayı etkileyebilir.

  • İstemci bağlantı özellikleri tek bir dil tarafından tüketilir. Bu durumda, geliştirme ekiplerine paket olarak dağıtılan bir istemci kitaplığı daha iyi bir seçenek olabilir.

  • Bağlantı özellikleri genelleştirilemez ve bu özellikler istemci uygulamasıyla daha derin tümleştirme gerektirir.

  • Uygulama platformunuz karşılıklı TLS (mTLS), trafik yönetimi ve ilke özelliklerini işlemek için hizmet ağı gibi önceden oluşturulmuş çözümleri destekler. Özel bir elçi çözümü oluşturmak yerine bu çözümleri kullanın.

İş yükü tasarımı

Azure Well-Architected Framework temellerinde ele alınan hedef ve ilkeleri karşılamak için bir iş yükünün tasarımında Büyükelçi desenini nasıl kullanacağınızı değerlendirin. Aşağıdaki tabloda, bu desenin her bir sütunun hedeflerini nasıl desteklediği hakkında rehberlik sağlanmaktadır.

Ana Direk Bu desen sütun hedeflerini nasıl destekler?
Güvenilirlik tasarımı kararları, iş yükünüzün hatalı çalışmaya dayanıklı olmasına ve bir hata oluştuktan sonra tamamen çalışır duruma geldiğinden emin olmasına yardımcı olur. Bu desen, bir ağ iletişimi aracılık noktası sunar, böylece ağ iletişimine yeniden deneme veya arabelleğe alma gibi güvenilirlik modelleri ekleyebilirsiniz.

- 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 tasarımla, istemcinin doğrudan işleyemediği ağ iletişimlerinde güvenlik uygulayabilirsiniz.

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

Bu model bir sütun içinde dengeleri ortaya çıkartıyorsa, bunları diğer sütunların hedeflerine karşı değerlendirin.

Example

Aşağıdaki diyagramda, büyükelçi ara sunucusu aracılığıyla uzak hizmete istekte bulunan bir uygulama gösterilmektedir. Büyükelçi yönlendirme, devre kesme ve günlüğe kaydetme sağlar. Uzak hizmeti çağırır ve ardından yanıtı istemci uygulamasına döndürür.

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

Büyükelçi proxy'sine istek gönderen bir istemci uygulamasını gösteren diyagram. Uygulama, büyükelçi ara sunucusu aracılığıyla uzak hizmete bir istek gönderir. Büyükelçi, uzak hizmetlerin konumunu belirler ve isteği uygun şekilde yönlendirir. Büyükelçi devre kesici durumunu denetler ve istek üst bilgilerini izleme bilgileriyle zenginleştirir. Büyükelçi, istek gecikme süresini ölçmeye başlar. Büyükelçi, karşılıklı sertifika tabanlı kimlik doğrulaması kullanarak isteği şifreler ve gönderir. Uzak hizmet isteği alır ve yanıtı gönderir. Büyükelçi, istek gecikme süresini günlüğe kaydeder. Büyükelçi, yanıtı istemciye döndürür. Uygulama yanıtı alır.

Kapsayıcılı ortamlarda, bu büyükelçi uygulama kapsayıcısının yanında sepet kapsayıcısı olarak çalışır. Kapsayıcı olmayan ortamlarda, bunu aynı konakta yerel bir işlem veya Windows hizmeti olarak uygularsınız.

Sonraki adım