Paylaşılan veya özelleştirilmiş hizmet işlevlerini bir ağ geçidi ara sunucusuna boşaltın. Bu düzen, SSL sertifikalarının kullanımı gibi paylaşılan hizmet işlevlerini uygulamanın diğer kısımlarından ağ geçidine taşıyarak uygulama geliştirme sürecini basitleştirebilir.
Bağlam ve sorun
Bazı özellikler birden çok hizmet tarafından ortak olarak kullanılır ve bunlar yapılandırma, yönetim ve bakım gerektirir. Her uygulama dağıtımı ile dağıtılan bir paylaşılan veya özelleştirilmiş hizmet, yönetim yükünü ve dağıtım hatası olasılığını artırır. Paylaşılan bir özellikte yapılan herhangi bir güncelleştirmenin bu özelliği ortak olarak kullanan tüm hizmetlere dağıtılması gerekir.
Güvenlik sorunlarının (belirteç doğrulama, şifreleme ve SSL sertifika yönetimi) ve diğer karmaşık görevlerin doğru işlenmesi, ekip üyelerinin çok özel konular üzerinde uzmanlaşmasını gerektirebilir. Örneğin, bir uygulama için gerekli olan sertifikalar, uygulamanın tüm örneklerinde yapılandırılıp dağıtılmalıdır. Her yeni dağıtımla birlikte, sertifika süresinin dolmaması için sertifika yönetilmelidir. Süre sonu yaklaşan tüm ortak sertifikalar her bir uygulama dağıtımında güncelleştirilmeli, test edilmeli ve doğrulanmalıdır.
Kimlik doğrulama, yetkilendirme, günlüğe kaydetme, izleme veya azaltma gibi diğer ortak hizmetlerin çok sayıda dağıtımda uygulanması ve yönetilmesi zor olabilir. Ek yükü ve hata olasılığını azaltmak için bu tür işlevleri tek çatı altında toplamak daha mantıklı olabilir.
Çözüm
Özellikle sertifika yönetimi, kimlik doğrulaması, SSL sonlandırma, izleme, protokol çevirisi veya azaltma gibi çapraz kesme sorunları olmak üzere bazı özellikleri bir ağ geçidine boşaltabilirsiniz.
Aşağıdaki diyagramda gelen SSL bağlantılarını sonlandıran bir ağ geçidi gösterilmektedir. Ağ geçidinin herhangi bir HTTP sunucusu yukarı akışından özgün istek sahibi adına veri istemektedir.
Bu düzenin avantajları şunlardır:
Web sunucusu sertifikaları ve güvenli web siteleri için yapılandırma gibi destekleyici kaynakların dağıtım ve bakım gereksinimlerini ortadan kaldırarak hizmet geliştirme sürecini basitleştirir. Yapılandırmanın daha basit olması, yönetim ve ölçeklenebilirliğin kolaylaşmasını sağlar ve hizmet yükseltme işlemlerini daha basit hale getirir.
Özel uzmanlık gerektiren güvenlik gibi özellikleri özel ekiplerin uygulamasını sağlar. Özel ancak geniş kapsamlı olan bu kritik konuların ilgili uzmanlara bırakıldığı bu senaryo, çekirdek ekibinizin uygulama işlevlerine odaklanmasına imkan tanır.
İstek ve yanıtların günlüğe kaydedilmesi ve izlenmesi için biraz tutarlılık sağlar. Hizmet doğru şekilde izlenmiyor olsa bile, ağ geçidi asgari düzeyde izleme ve günlüğe kaydetme olanağı sağlayacak şekilde yapılandırılabilir.
Sorunlar ve dikkat edilmesi gerekenler
- Ağ geçidinin yüksek oranda kullanılabilir ve hataya dayanıklı olduğundan emin olun. Ağ geçidinizin birden çok örneğini çalıştırarak tek hata noktalarından kaçının.
- Ağ geçidinin uygulama ve uç noktalarınızın kapasite ve ölçeklendirme gereksinimlerini karşılayacak şekilde tasarlandığından emin olun. Ağ geçidinin uygulama için bir performans sorununa dönüşmediğinden ve yeterince ölçeklenebilir olduğundan emin olun.
- Yalnızca güvenlik veya veri aktarımı gibi tüm uygulama tarafından kullanılan özellikleri boşaltın.
- İş mantığı hiçbir zaman ağ geçidine yüklenmemelidir.
- İşlemleri izlemeniz gerekiyorsa, günlüğe kaydetme amacıyla bağıntı kimlikleri oluşturmayı göz önünde bulundurun.
Bu düzenin kullanılacağı durumlar
Bu düzeni aşağıdaki durumlarda kullanın:
- Bir uygulama dağıtımının SSL sertifikaları veya şifreleme gibi ortak bir gereksiniminin olduğu durumlar.
- Bellek kaynakları, depolama kapasitesi veya ağ bağlantıları gibi konularda farklı kaynak gereksinimleri olabilecek ayrı uygulama dağıtımları tarafından ortak olarak kullanılan bir özellik.
- Ağ güvenliği veya azaltma gibi ağ sınırı konuların sorumluluğunu daha özel olarak uzmanlaşmış bir ekibe devretmek istediğiniz durumlar.
Bu düzen ayrı hizmetler arasında bağ oluşmasına yol açıyorsa uygun olmayabilir.
İş yükü tasarımı
Bir mimar, Azure İyi Tasarlanmış Çerçeve yapılarında ele alınan hedefleri ve ilkeleri ele almak için ağ geçidi boşaltma 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 sorumluluğun bir ağ geçidine yüklenmesi, arka uç düğümlerindeki uygulama kodunun karmaşıklığını azaltır. Bazı durumlarda, boşaltma işlevi tamamen platform tarafından sağlanan güvenilir bir özellik ile değiştirir. - RE:01 Basitlik ve verimlilik |
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. | İstek akışına bir ağ geçidi eklemek, web uygulaması güvenlik duvarları ve istemcilerle TLS bağlantıları gibi güvenlik işlevlerini merkezileştirmenizi sağlar. Platform tarafından sağlanan tüm boşaltılmış işlevler zaten gelişmiş güvenlik sunar. - SE:06 Ağ denetimleri - SE:08 Sağlamlaştırma kaynakları |
Maliyet İyileştirme, iş yükünüzün yatırım getirisini sürdürmeye ve geliştirmeye odaklanır. | Bu düzen, düğüm başına harcanan kaynaklardan gelen maliyetleri ağ geçidi uygulamasına yeniden yönlendirmenizi sağlar. Merkezi işleme modelindeki maliyetler genellikle dağıtılmış modelin maliyetlerinden daha düşüktür. - CO:14 Birleştirme |
Operasyonel Mükemmellik, standartlaştırılmış süreçler ve ekip uyumu aracılığıyla iş yükü kalitesinin sunulmasına yardımcı olur. | Bu düzende, boşaltılan işlevselliğin yapılandırması ve bakımları, birden çok düğümden yönetmek yerine tek noktadan yapılır. - OE:04 Araçlar ve işlemler |
Performans Verimliliği , ölçeklendirme, veri ve kod iyileştirmeleri aracılığıyla iş yükünüzün talepleri verimli bir şekilde karşılamasını sağlar. | İstek işlemine yük boşaltma ağ geçidi eklemek, işlev ağ geçidinde merkezileştirildiğinden düğüm başına daha az kaynak kullanmanıza olanak tanır. Boşaltılan işlevselliğin uygulanmasını uygulama kodundan bağımsız olarak iyileştirebilirsiniz. Boşaltılan platform tarafından sağlanan işlevlerin yüksek performansa sahip olma olasılığı yüksektir. - PE:03 Hizmetleri seçme |
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
SSL boşaltma uygulaması olarak Nginx kullanan aşağıdaki yapılandırma, bir gelen SSL bağlantısını sonlandırır ve bağlantıyı üç yukarı akış HTTP sunucusundan birine dağıtır.
upstream iis {
server 10.3.0.10 max_fails=3 fail_timeout=15s;
server 10.3.0.20 max_fails=3 fail_timeout=15s;
server 10.3.0.30 max_fails=3 fail_timeout=15s;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/domain.cer;
ssl_certificate_key /etc/nginx/ssl/domain.key;
location / {
set $targ iis;
proxy_pass http://$targ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
}
Azure'da bu, Application Gateway'de SSL sonlandırması ayarlanarak elde edilebilir.