Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu düzende, farklı istemci arabirimleri için deneyimleri uyarlamak için arka uç hizmetlerinin ön uç uygulamalarından nasıl ayrıldığı açıklanır. Bu desen, birden çok arabirime hizmet eden bir arka ucu özelleştirmekten kaçınmak istediğinizde kullanışlıdır. Bu desen, Sam Newman'ın Ön Uçlar için Arka Uçlar desenini temel alır.
Bağlam ve sorun
Başlangıçta bir masaüstü web kullanıcı arabirimi ve buna karşılık gelen bir arka uç hizmetiyle tasarlanmış bir uygulamayı düşünün. İş gereksinimleri zaman içinde değiştikçe bir mobil arabirim eklenir. Her iki arabirim de aynı arka uç hizmetiyle etkileşim kurar. Ancak mobil cihazın özellikleri ekran boyutu, performans ve görüntü sınırlamaları açısından masaüstü tarayıcıdan önemli ölçüde farklıdır.
Arka uç hizmeti genellikle birden çok ön uç sisteminden gelen rakip taleplerle karşılaşır. Bu talepler, sık güncelleştirmelere ve olası geliştirme sorunlarına neden olur. Çakışan güncelleştirmeler ve uyumluluğu koruma ihtiyacı, tek bir dağıtılabilir kaynakta aşırı taleple sonuçlanır.
Arka uç hizmetini ayrı bir ekibin yönetmesi ön uç ve arka uç ekipleri arasında bağlantı kesilmesi oluşturabilir. Bu bağlantı kesilmesi, konsensüs ve dengeleme gereksinimlerinin kazanılmasında gecikmelere neden olabilir. Örneğin, bir ön uç ekibi tarafından istenen değişikliklerin tümleştirmeden önce diğer ön uç ekipleriyle doğrulanması gerekir.
Çözüm
Yalnızca arabirime özgü gereksinimleri işleyen yeni bir katman tanıtın. Ön uç için arka uç (BFF) hizmeti olarak bilinen bu katman, ön uç istemcisi ile arka uç hizmeti arasında yer alır. Uygulama web arabirimi ve mobil uygulama gibi birden çok arabirimi destekliyorsa, her arabirim için bir BFF hizmeti oluşturun.
Bu düzen, diğer arabirimleri etkilemeden belirli bir arabirim için istemci deneyimini özelleştirir. Ayrıca, ön uç ortamının gereksinimlerini karşılamak için performansı iyileştirir. Her BFF hizmeti paylaşılan arka uç hizmetinden daha küçük ve daha az karmaşık olduğundan, uygulamanın yönetilmesini kolaylaştırabilir.
Ön uç ekipleri kendi BFF hizmetlerini bağımsız olarak yönetir ve bu sayede dil seçimi, sürüm temposu, iş yükü öncelik belirleme ve özellik tümleştirmesi üzerinde denetim sahibi olur. Bu özerklik, merkezi bir arka uç geliştirme ekibine bağlı kalmadan verimli bir şekilde çalışmalarına olanak tanır.
Çoğu BFF hizmeti geleneksel olarak REST API'lerine dayanır, ancak GraphQL uygulamaları alternatif olarak ortaya çıkar. GraphQL ile sorgulama mekanizması, istemcilerin önceden tanımlanmış uç noktalara bağlı kalmadan ihtiyaç duydukları verileri istemesine olanak tanıdığından ayrı bir BFF katmanı gereksinimini ortadan kaldırır.
Daha fazla bilgi için bkz. Sam Newman tarafından Frontend için Backend deseni.
Sorunlar ve dikkat edilmesi gerekenler
İlgili maliyetlere bağlı olarak en uygun hizmet sayısını değerlendirin. Daha fazla hizmetin bakımı ve dağıtımı, operasyonel ek yükün artması anlamına gelir. Her hizmetin kendi yaşam döngüsü, dağıtım ve bakım gereksinimleri ve güvenlik gereksinimleri vardır.
Yeni bir hizmet eklerken hizmet düzeyi hedeflerini gözden geçirin. İstemciler hizmetlerinizle doğrudan iletişim kurmadığından ve yeni hizmet fazladan bir ağ atlama sağladığından gecikme süresi artabilir.
Farklı arabirimler aynı istekleri gerçekleştirdiğinde, isteklerin tek bir BFF hizmetinde birleştirilip birleştirilemeyeceğini değerlendirin. Tek bir BFF hizmetinin birden çok arabirim arasında paylaşılması, her istemci için farklı gereksinimlere neden olabilir ve bu da BFF hizmetinin büyümesini ve desteğini karmaşık hale getirebilir.
Kod yineleme, bu düzenin olası bir sonucudur. Kod yinelemesi ile her istemci için daha iyi uyarlanmış bir deneyim arasındaki dengeyi değerlendirin.
BFF hizmeti yalnızca belirli bir kullanıcı deneyimiyle ilgili istemciye özgü mantığı işlemelidir. Verimliliği korumak için izleme ve yetkilendirme gibi çapraz kesme özellikleri soyutlanmalıdır. BFF hizmetinde ortaya çıkabilen tipik özellikler Gatekeeping, Rate Limiting ve Routing desenleriyle ayrı ayrı işlenir.
Bu düzeni öğrenmenin ve uygulamanın geliştirme ekibini nasıl etkilediğini düşünün. Yeni arka uç sistemleri geliştirmek için zaman ve çaba gerekir ve bu da teknik borçlara neden olabilir. Mevcut arka uç hizmetinin bakımı bu zorluğa neden olabilir.
Bu desene ihtiyacınız olup olmadığını değerlendirin. Örneğin, kuruluşunuz ön uça özgü çözümleyicilerle GraphQL kullanıyorsa BFF hizmetleri uygulamalarınıza değer eklemeyebilir.
Bir diğer senaryo da API ağ geçidini mikro hizmetlerle birleştiren bir uygulamadır. Bu yaklaşım, genellikle BFF hizmetlerinin önerildiği bazı senaryolar için yeterli olabilir.
Bu desen ne zaman kullanılır?
Bu düzeni aşağıdaki durumlarda kullanın:
Paylaşılan veya genel amaçlı bir arka uç hizmetinin bakımını yapmak için önemli geliştirme yükü gerekir.
Arka ucu belirli istemci arabirimlerinin gereksinimleri için iyileştirmek istiyorsunuz.
Birden çok arabirimi barındırmak için genel amaçlı bir arka uçta özelleştirmeler yaparsınız.
Programlama dili, belirli bir kullanıcı arabiriminin arka ucu için daha uygundur ancak tüm kullanıcı arabirimleri için uygun değildir.
Bu düzen aşağıdaki durumlarda uygun olmayabilir:
Arabirimler arka uçta aynı veya benzer istekleri yapar.
Arka uçla yalnızca bir arabirim etkileşim kurar.
İş yükü tasarımı
Azure Well-Architected Framework sütunlarında ele alınan hedefleri ve ilkeleri karşılamak için bir iş yükünün tasarımında Frontendlere Özel Arka Uçlar tasarımının nasıl kullanılacağını değerlendirin. Aşağıdaki tabloda, bu desenin her bir sütunun hedeflerini nasıl desteklediği hakkında rehberlik sağlanmaktadır.
| Sütun | 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. | Hizmetleri belirli bir ön uç arabirimine yalıttığınızda, arızalar içerirsiniz. Bir istemcinin kullanılabilirliği, başka bir istemcinin erişiminin kullanılabilirliğini etkilemez. Çeşitli istemcilere farklı davrandığınızda, beklenen istemci erişim desenlerine göre güvenilirlik çalışmalarının önceliğini belirtebilirsiniz. - RE:02 Kritik akış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üzende sunulan hizmet ayrımı, hizmet katmanındaki güvenlik ve yetkilendirmenin her istemcinin özel ihtiyaçlarına göre özelleştirilmesine olanak tanır. Bu yaklaşım API'nin yüzey alanını azaltabilir ve farklı özellikleri ortaya çıkarabilecek arka uçlar arasındaki yanal hareketi sınırlayabilir. - SE:04 Segmentlere Ayırma - SE:08 Sağlamlaştırma kaynakları |
| 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. | Arka uç ayrımı, paylaşılan bir hizmet katmanıyla mümkün olmayacak şekilde iyileştirmenizi sağlar. Tek tek istemcileri farklı şekilde işlediğiniz zaman, belirli bir istemcinin kısıtlamaları ve işlevselliği için performansı iyileştirebilirsiniz. - PE:02 Kapasite planlaması - PE:09 Kritik akışlar |
Bu model bir sütun içinde dengeleri ortaya çıkartıyorsa, bunları diğer sütunların hedeflerine karşı değerlendirin.
Örnek
Bu örnekte, iki ayrı istemci uygulamasının, bir mobil uygulamanın ve masaüstü uygulamasının Azure API Management (veri düzlemi ağ geçidi) ile etkileşimde bulunduğu desen için bir kullanım örneği gösterilmektedir. Bu ağ geçidi bir soyutlama katmanı görevi görür ve aşağıdakiler gibi sık karşılaşılan çapraz kesme sorunlarını yönetir:
Yetkilendirme. Api Management'ı Microsoft Entra Id ile kullanarak yalnızca doğru erişim belirteçlerine sahip doğrulanmış kimliklerin korumalı kaynakları çağırabilmesini sağlar.
İzleme. Gözlemlenebilirlik amacıyla istek ve yanıt ayrıntılarını yakalar ve Azure İzleyici'ye gönderir.
önbelleğe alma isteği. API Management'ın yerleşik özellikleriyle önbellekten yanıtlar sunarak yinelenen istekleri iyileştirir.
Yönlendirme ve toplama. Gelen istekleri uygun BFF hizmetlerine yönlendirir.
Her istemcinin, ağ geçidi ile temel alınan mikro hizmetler arasında aracı görevi görecek bir Azure işlevi olarak çalışan ayrılmış bir BFF hizmeti vardır. İstemciye özgü bu BFF hizmetleri, sayfalandırma ve diğer işlevler için uyarlanmış bir deneyim sağlar. Mobil uygulama bant genişliği verimliliğini önceliklendirir ve performansı artırmak için önbelleğe alma özelliğinden yararlanır. Buna karşılık, masaüstü uygulaması tek bir istekte birden çok sayfa alır ve bu da daha çevreleyici bir kullanıcı deneyimi oluşturur.
Mobil istemciden gelen ilk sayfa isteği için Akış A
Mobil istemci, yetkilendirme üst bilgisindeki OAuth 2.0 belirtecini içeren bir
GETsayfa1isteği gönderir.İstek API Management ağ geçidine ulaşır ve bu ağ geçidini durdurur ve:
Yetkilendirme durumunu denetler. API Management derinlemesine savunma uygular, bu nedenle erişim belirtecinin geçerliliğini denetler.
İstek etkinliğini günlük olarak Azure Monitor'a akış olarak gönderir. İsteğin ayrıntıları denetim ve izleme için kaydedilir.
İlkeler yürürlüğe konulur, ardından API Yönetimi, isteği mobil BFF hizmeti için Azure işlevine yönlendirir.
Daha sonra Azure işlevi mobil BFF hizmeti, tek bir sayfayı getirmek ve basit bir deneyim sağlamak için istenen verileri işlemek için gerekli mikro hizmetlerle etkileşim kurar.
Yanıt istemciye döndürülür.
Mobil istemciden önbelleğe alınan ilk sayfa isteği için Akış B
Mobil istemci, yetkilendirme üst bilgisindeki OAuth 2.0 belirteci de dahil olmak üzere sayfa
GETiçin aynı1isteği yeniden gönderir.API Management ağ geçidi, bu isteğin daha önce yapıldığını algılar:
İlkeler uygulanır. Ardından ağ geçidi, istek parametreleriyle eşleşen önbelleğe alınmış bir yanıt tanımlar.
Önbelleğe alınan yanıtı hemen döndürür. Bu hızlı yanıt, isteği Azure işlevi mobil BFF hizmetine iletme gereksinimini ortadan kaldırır.
Masaüstü istemcisinden gelen ilk istek için Flow C
Masaüstü istemcisi, yetkilendirme üst bilgisindeki OAuth 2.0 belirtecini de içeren bir
GETisteği ilk kez gönderir.İstek, genel sorunların ele alındığı API Yönetim ağ geçidine ulaşır.
İzin: Belirteç doğrulaması her zaman gereklidir.
İstek etkinliğini akışla aktarın: İstek ayrıntıları gözlemlenebilirlik için kaydedilir.
Tüm ilkeler uygulandıktan sonra API Management, isteği yoğun veri içeren uygulama işlemeyi işleyen Azure işlevi masaüstü BFF hizmetine yönlendirir. Masaüstü BFF hizmeti, istemciyi birden çok sayfa yanıtıyla yanıtlamadan önce temel mikro hizmet çağrılarını kullanarak birden çok isteği toplar.
Tasarlama
Microsoft Entra ID , bulut tabanlı kimlik sağlayıcısı görevi görür. Hem mobil hem de masaüstü istemcileri için uyarlanmış hedef kitle talepleri sağlar. Bu talepler daha sonra yetkilendirme için kullanılır.
API Management , istemciler ile BFF hizmetleri arasında bir çevre oluşturan bir proxy görevi görür. API Management, JSON Web Belirteçlerini doğrulamak için ilkelerle yapılandırılır ve belirteci olmayan veya hedeflenen BFF hizmeti için geçersiz talepler içeren istekleri reddeder. Ayrıca tüm etkinlik günlüklerini Azure İzleyici'ye akışla aktarıyor.
Merkezi izleme çözümü olarak Azure İzleyici işlevi görür. Kapsamlı, uçtan uca gözlemlenebilirlik sağlamak için tüm etkinlik günlüklerini toplar.
Azure İşlevleri , BFF hizmet mantığını birden çok uç noktada verimli bir şekilde kullanıma sunan sunucusuz bir çözümdür ve bu da geliştirmeyi kolaylaştırır. Azure İşlevleri ayrıca altyapı ek yükünü en aza indirir ve işletim maliyetlerini düşürmeye yardımcı olur.
Sonraki Adımlar
- Sam Newman tarafından ön uçlar için arka uçlar deseni
- API Management'ta API'lere kimlik doğrulaması ve yetkilendirme
- API Management'ı Application Insights ile tümleştirme