Ön uç istemci iletişimi

Tavsiye

Bu içerik, .NET Docs veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Azure için Bulut Yerel .NET Uygulamaları Tasarlama adlı e-Kitap'tan bir alıntıdır.

Azure eKitap kapak küçük resmi için Buluta Özel .NET uygulamaları.

Bulutta yerel bir sistemde, ön uç istemcileri (mobil, web ve masaüstü uygulamaları) bağımsız arka uç mikro hizmetleriyle etkileşime geçmek için bir iletişim kanalı gerektirir.

Seçenekler nelerdir?

İşleri basit tutmak için, bir ön uç istemcisi Şekil 4-2'de gösterilen arka uç mikro hizmetleriyle doğrudan iletişim kurabilir .

Müşteri ile hizmet arasındaki doğrudan iletişim

Şekil 4-2. İstemci ile hizmet arasında doğrudan iletişim

Bu yaklaşımla, her mikro hizmetin ön uç istemcileri tarafından erişilebilen bir genel uç noktası vardır. Üretim ortamında, mikro hizmetlerin önüne bir yük dengeleyici yerleştirerek trafiği orantılı olarak yönlendirmeniz gerekir.

Basit bir uygulama olsa da doğrudan istemci iletişimi yalnızca basit mikro hizmet uygulamaları için kabul edilebilir. Bu düzen, ön uç istemcilerini temel arka uç hizmetleriyle sıkı bir şekilde bağlar ve aşağıdakiler dahil olmak üzere birçok soruna kapı açar:

  • Arka uç hizmetinin yeniden düzenlenmesine müşterinin hassasiyeti.
  • Temel arka uç hizmetleri doğrudan maruz bırakıldığında daha geniş bir saldırı yüzeyi oluşur.
  • Her mikroserviste çapraz kesen endişelerin tekrarı.
  • Aşırı karmaşık istemci kodu - istemcilerin birden çok uç noktayı izlemesi ve hataları dayanıklı bir şekilde işlemesi gerekir.

Bunun yerine, yaygın olarak kabul edilen bir bulut tasarımı düzeni, ön uç uygulamaları ve arka uç hizmetleri arasında bir API Gateway Hizmeti uygulamaktır. Desen Şekil 4-3'te gösterilir.

API Ağ Geçidi Deseni

Şekil 4-3. API ağ geçidi düzeni

Önceki şekilde, API Gateway hizmetinin arka uç çekirdek mikro hizmetleri nasıl soyutladığını dikkat edin. Web API'si olarak uygulanan bu api, gelen trafiği iç mikro hizmetlere yönlendiren ters ara sunucu işlevi görür.

Ağ geçidi, istemciyi iç hizmet bölümleme ve yeniden düzenlemeden yalıtıyor. Bir arka uç hizmetini değiştirirseniz, istemciyi bozmadan ağ geçidinde bu hizmeti barındırabilirsiniz. Ayrıca kimlik yönetimi, önbelleğe alma, esneklik, ölçüm ve yavaşlatma gibi genel geçer kaygılara yönelik ilk savunma hattınızdır. Bu çapraz kesme sorunlarının çoğu arka uç çekirdek hizmetlerinden ağırlığını alarak ağ geçidine aktarılabilir, böylece arka uç hizmetlerini basitleştirir.

API Gateway'i basit ve hızlı tutmak için dikkatli olunmalıdır. Genellikle iş mantığı ağ geçidinin dışında tutulur. Karmaşık bir ağ geçidi, tıkanma noktası haline gelme ve sonunda kendi başına bir monolit olma riski taşır. Daha büyük sistemler genellikle istemci türüne (mobil, web, masaüstü) veya arka uç işlevselliğine göre segmentlere ayrılmış birden çok API Ağ Geçidi sunar. Ön Uçlar için Arka Uç deseni, birden çok ağ geçidinin uygulanması için yön sağlar. Desen Şekil 4-4'te gösterilir.

Frontend için Backend Deseni

Şekil 4-4. Ön yüz için arka uç modeli

Önceki şekilde, gelen trafiğin istemci türüne göre belirli bir API ağ geçidine nasıl gönderildiğine dikkat edin: web, mobil veya masaüstü uygulaması. Her cihazın özellikleri form faktörü, performans ve görüntü sınırlamaları arasında önemli ölçüde farklılık gösterdiğinden bu yaklaşım mantıklıdır. Mobil uygulamalar genellikle tarayıcı veya masaüstü uygulamalarından daha az işlevsellik sunar. Her ağ geçidi, ilgili cihazın özelliklerine ve işlevlerine uyacak şekilde iyileştirilebilir.

Basit Ağ Geçitleri

Başlamak için kendi API Gateway hizmetinizi oluşturabilirsiniz. GitHub'da hızlı bir arama birçok örnek sağlayacaktır.

Basit .NET buluta özel uygulamalar için Ocelot Ağ Geçidi'ni göz önünde bulundurabilirsiniz. Açık kaynak ve .NET mikro hizmetleri için oluşturulan, basit, hızlı, ölçeklenebilir. Tüm API Gateway'ler gibi birincil işlevi de gelen HTTP isteklerini aşağı akış hizmetlerine iletmektir. Ayrıca, .NET ara yazılım işlem hattında yapılandırılabilen çok çeşitli özellikleri destekler.

YARP (Bir Başka Ters Proxy Daha), Microsoft ürün ekiplerinden oluşan bir grup tarafından yönetilen açık kaynak kodlu bir ters proxy'dir. NuGet paketi olarak indirilebilen YARP, ara yazılım olarak ASP.NET çerçevesine takılır ve yüksek oranda özelleştirilebilir. YARP'nin çeşitli kullanım örnekleriyle iyi belgelenmiş olduğunu göreceksiniz.

Kurumsal buluta özel uygulamalar için, çalışmalarınızı hızlı bir şekilde başlatmanıza yardımcı olabilecek çeşitli yönetilen Azure hizmetleri vardır.

Azure Application Gateway

Basit ağ geçidi gereksinimleri için Azure Application Gateway'i göz önünde bulundurabilirsiniz. Azure PaaS hizmeti olarak kullanılabilir; URL yönlendirme, SSL sonlandırma ve Web Uygulaması Güvenlik Duvarı gibi temel ağ geçidi özelliklerini içerir. Hizmet , Katman 7 yük dengeleme özelliklerini destekler. Katman 7 ile, istekleri yalnızca alt düzey TCP ağ paketlerine değil, bir HTTP iletisinin gerçek içeriğine göre yönlendirebilirsiniz.

Bu kitap boyunca Kubernetes'te buluta özel sistemleri barındırmayı yaygınlaştırıyoruz. Kapsayıcı düzenleyici kubernetes, kapsayıcılı iş yüklerinin dağıtım, ölçeklendirme ve operasyonel sorunlarını otomatikleştirir. Azure Application Gateway, Azure Kubernetes Service kümesi için api ağ geçidi olarak yapılandırılabilir.

Application Gateway Giriş Denetleyicisi, Azure Application Gateway'in doğrudan Azure Kubernetes Service ile çalışmasını sağlar. Şekil 4.5'de mimari gösterilmektedir.

Application Gateway Giriş Denetleyicisi

Şekil 4-5. Application Gateway Giriş Denetleyicisi

Kubernetes, HTTP (Düzey 7) yük dengelemeyi destekleyen giriş adlı yerleşik bir özellik içerir. Giriş, AKS içindeki mikro hizmet örneklerinin dış dünyaya nasıl gösterilebileceğine ilişkin bir dizi kural tanımlar. Önceki görüntüde, giriş denetleyicisi küme için yapılandırılan giriş kurallarını yorumlar ve Azure Application Gateway'i otomatik olarak yapılandırılır. Application Gateway, bu kurallara bağlı olarak trafiği AKS içinde çalışan mikro hizmetlere yönlendirir. Giriş denetleyicisi giriş kurallarındaki değişiklikleri dinler ve Azure Application Gateway'de uygun değişiklikleri yapar.

Azure API Management

Orta ve büyük ölçekli buluta özel sistemler için Azure API Management'ı göz önünde bulundurabilirsiniz. Yalnızca API Gateway gereksinimlerinizi çözmekle kalmaz, tam özellikli bir geliştirici ve yönetim deneyimi sağlayan bulut tabanlı bir hizmettir. API Management Şekil 4-6'da gösterilmiştir.

Azure API Management

Şekil 4-6. Azure API Management

Başlamak için API Management, yapılandırılabilir kurallar ve ilkeler temelinde arka uç hizmetlerine denetimli erişim sağlayan bir ağ geçidi sunucusu sunar. Bu hizmetler Azure bulutunda, şirket içi veri merkezinizde veya diğer genel bulutlarda olabilir. API anahtarları ve JWT belirteçleri, kimin ne yapabileceğini belirler. Tüm trafik analiz amacıyla günlüğe kaydedilir.

API Management, geliştiriciler için hizmetlere, belgelere ve bunları çağırmak için örnek koda erişim sağlayan bir geliştirici portalı sunar. Geliştiriciler hizmet uç noktalarını incelemek ve kullanımlarını analiz etmek için Swagger/Open API kullanabilir. Hizmet ana geliştirme platformları arasında çalışır: .NET, Java, Golang ve daha fazlası.

Yayımcı portalı, yöneticilerin API'leri kullanıma sunmaları ve davranışlarını yönetmeleri için bir yönetim panosu sunar. Hizmet erişimi verilebilir, hizmet durumu izlenebilir ve hizmet telemetrisi toplanabilir. Yöneticiler, davranışı etkilemek için her uç noktaya ilkeler uygular. İlkeler , her hizmet çağrısı için sırayla yürütülen önceden oluşturulmuş deyimlerdir. İlkeler, gelen arama, giden arama için veya bir hata durumunda çağrılmak üzere yapılandırılır. İlkeler, ilkeleri birleştirirken belirleyici sıralamayı etkinleştirmek için farklı hizmet kapsamlarında uygulanabilir. Ürün, çok sayıda hazır politika ile birlikte teslim edilir.

İlkelerin buluta özel hizmetlerinizin davranışını nasıl etkileyebileceğine ilişkin örnekler aşağıda verilmiştir:

  • Hizmet erişimini kısıtlayın.
  • Kimlik doğrulamayı zorunlu kılma.
  • Tek bir kaynaktan gelen çağrıları, gerekirse, kısıtlayın.
  • Önbelleğe almayı etkinleştirin.
  • Belirli IP adreslerinden gelen çağrıları engelleyin.
  • Hizmetin akışını denetleme.
  • ISTEKLERI SOAP'den REST'e veya XML'den JSON'a gibi farklı veri biçimleri arasında dönüştürün.

Azure API Management, bulutta veya veri merkezinizde herhangi bir yerde barındırılan arka uç hizmetlerini kullanıma sunabilir. Buluta özel sistemlerinizde kullanıma sunabileceğiniz eski hizmetler için hem REST hem de SOAP API'lerini destekler. Diğer Azure hizmetleri bile API Management aracılığıyla kullanıma sunılabilir. Yönetilen API'yi Azure Service Bus veya AzureLogic Apps gibi bir Azure yedekleme hizmetinin üzerine yerleştirebilirsiniz. Azure API Management yerleşik yük dengeleme desteği içermez ve yük dengeleme hizmetiyle birlikte kullanılmalıdır.

Azure API Management dört farklı katmanda kullanılabilir:

  • Geliştirici
  • Temel
  • Standart
  • Üst Düzey

Geliştirici katmanı, üretim dışı iş yükleri ve değerlendirme için tasarlanmıştır. Diğer katmanlar giderek daha fazla güç, özellik ve daha yüksek hizmet düzeyi sözleşmeleri (SLA) sunar. Premium katmanı Azure Sanal Ağ ve çok bölgeli destek sağlar. Tüm katmanların saatlik sabit bir fiyatı vardır.

Azure bulutu, Azure API Management için sunucusuz bir katman da sunar. Tüketim fiyatlandırma katmanı olarak adlandırılan hizmet, sunucusuz bilgi işlem modeli etrafında tasarlanmış bir API Management çeşididir. Daha önce gösterilen "önceden ayrılmış" fiyatlandırma katmanlarından farklı olarak, tüketim katmanı anında sağlama ve eylem başına ödeme fiyatlandırması sağlar.

Aşağıdaki kullanım örnekleri için API Gateway özelliklerini etkinleştirir:

  • Azure İşlevleri ve AzureLogic Apps gibi sunucusuz teknolojiler kullanılarak uygulanan mikro hizmetler.
  • Azure Service Bus kuyrukları ve konuları, Azure depolama ve diğerleri gibi Azure destekleyici hizmet kaynakları.
  • Trafiğin zaman zaman büyük ani artışlar yaşadığı ancak çoğu zaman düşük kaldığı mikro hizmetler.

Tüketim katmanı aynı temel hizmet API Management bileşenlerini kullanır, ancak dinamik olarak ayrılan kaynaklara göre tamamen farklı bir mimari kullanır. Sunucusuz bilgi işlem modeliyle mükemmel uyum sağlar:

  • Yönetecek altyapı yok.
  • Boşta kapasite yok.
  • Yüksek kullanılabilirlik.
  • Otomatik ölçeklendirme.
  • Maliyet, gerçek kullanımı temel alır.

Yeni tüketim katmanı, sunucusuz kaynakları API olarak kullanıma sunan buluta özel sistemler için harika bir seçimdir.

Gerçek zamanlı iletişim

Gerçek zamanlı veya göndermeli iletişim, HTTP üzerinden arka uç buluta özel sistemlerle iletişim kuran ön uç uygulamaları için bir diğer seçenektir. Finansal veri akışları, çevrimiçi eğitim, iş durumu güncellemeleri ve oyun gibi uygulamalar, arka uçtan anında ve gerçek zamanlı yanıtlar gerektirir. Normal HTTP iletişimi sayesinde istemcinin yeni verilerin ne zaman kullanılabilir olduğunu bilmesi mümkün değildir. İstemcinin sunucuya sürekli istek göndermesi veya yoklama yapması gerekir. Gerçek zamanlı iletişim sayesinde sunucu, istemciye istediği zaman yeni veriler gönderebilir.

Gerçek zamanlı sistemler genellikle yüksek frekanslı veri akışları ve çok sayıda eşzamanlı istemci bağlantısı ile karakterize edilir. Gerçek zamanlı bağlantıyı el ile uygulamak hızla karmaşık hale gelebilir ve bağlı istemcilere ölçeklenebilirlik ve güvenilir mesajlaşma sağlamak için önemsiz olmayan bir altyapı gerektirir. Azure Redis Cache örneğini ve istemci bağlılığı için yapışkan oturumlarla yapılandırılmış bir dizi yük dengeleyiciyi yönetirken kendinizi bulabilirsiniz.

Azure SignalR Hizmeti , bulutta yerel uygulamalarınız için gerçek zamanlı iletişimi basitleştiren tam olarak yönetilen bir Azure hizmetidir. Kapasite sağlama, ölçeklendirme ve kalıcı bağlantılar gibi teknik uygulama ayrıntıları soyutlanır. Bunlar sizin için 99,9% hizmet düzeyi sözleşmesiyle işlenir. Altyapı tesisatı yerine uygulama özelliklerine odaklanırsınız.

Etkinleştirildikten sonra, bulut tabanlı bir HTTP hizmeti tarayıcı, mobil ve masaüstü uygulamaları dahil olmak üzere içerik güncelleştirmelerini doğrudan bağlı istemcilere gönderebilir. İstemciler, sunucuyu sorgulamaya gerek kalmadan güncellenir. Azure SignalR, WebSockets, Server-Side Etkinlikleri ve Uzun Yoklama dahil olmak üzere gerçek zamanlı bağlantılar yaratan aktarım teknolojilerini soyutlar. Geliştiriciler, bağlı istemcilerin tümüne veya belirli alt kümelerine ileti göndermeye odaklanır.

Şekil 4-7'de, Azure SignalR etkinken bulutta yerel bir uygulamaya bağlanan bir HTTP İstemcileri kümesi gösterilmektedir.

Azure SignalR

Şekil 4-7. Azure SignalR

Azure SignalR Hizmeti'nin bir diğer avantajı da Sunucusuz buluta özel hizmetler uygulamaktır. Kodunuz Azure İşlevleri tetikleyicileri ile isteğe bağlı olarak yürütülebilir. Kodunuz istemcilerle uzun bağlantılar sağlamadığından bu senaryo karmaşık olabilir. Hizmet bağlantıları sizin için zaten yönettiğinden Azure SignalR Hizmeti bu durumu işleyebilir.

Azure SignalR Hizmeti, Azure SQL Veritabanı, Service Bus veya Redis Cache gibi diğer Azure hizmetleriyle yakından tümleştirerek buluta özel uygulamalarınız için birçok olasılık sunar.