N katmanlı mimarilerle ilgili önemli noktalar

Tamamlandı

N katmanlı bir mimarinin ne yaptığını inceledik ve üç katmanlı mimarinin bir örneğini dağıttık. Şimdi bu mimari stilinin avantajlarından ve zorluklarından bazılarının yanı sıra performans ve güvenlik iyileştirmesi için kullanabileceğiniz en iyi yöntemlere göz atalım.

Avantajlar

Bu mimari stilinin basitliği başlı başına bir avantajdır. Hem şirket içi hem de bulut dağıtımları için sık kullanılan ve iyi tanımlanmış bir mimaridir ve çok farklı uygulamalarla birlikte çalışabilir.

Platformdan bağımsız bir mimari olduğundan hem Windows hem de Linux üzerinde dağıtılan uygulamalar için uygundur. Örnek ortamımızda da gösterdiğimiz gibi PaaS veya IaaS hizmetleri tüm katmanlarda kullanılabilir.

Uygulama katmanlara ayrıldığından her katman diğerlerinden bağımsız olarak ölçeklendirilebilir, güncelleştirilebilir veya yükseltilebilir. Web sitemizin istekleri artdıkça, diğer katmanları etkilemeden yüklemeye daha fazla Web sunucusu ekleyebiliriz. Benzer şekilde veri katmanına gönderilen isteklerin artması durumunda veritabanınızı ölçeklendirerek istekler için daha fazla kapasite sunabilirsiniz.

Ağ ayrımı, bu mimari ile birlikte kendiliğinden oluşan bir ayrımdır. Uygulama katmanlara ayrıldığından, her katmanı yalıtmalı ve yalnızca gerekli ağ erişimine izin vereceğiz. Sunum katmanı internete açık olabilir, veritabanı birden fazla ağ katmanının arkasında güvenli kalabilir ve tüm bunlar uygulamanızın işlevlerini herhangi bir şekilde değiştirmez. Katmanlar arasındaki ağ erişimini güvenli hale getirerek, uygulamanın saldırı yüzeyini azalttık ve güvenliğini artırdık.

Zorluklar ve dikkat edilmesi gereken noktalar

Uygulamanızı birden fazla katmana ayırırken yalnızca veritabanı işlemi gerçekleştiren ara katmanlar kullanmaktan kaçının. Her katman uygulamaya belirli bir değer katmalıdır. Ek katmanlar karmaşıklık, işleme süresi, gecikme süresi ve son olarak kullanıcıya gecikme ekler.

Her uygulama düzeyi etki alanı için API 'Ler ayrı hizmetlere ayrılmadığından, birlikte ölçeklendirilmesi gerekir. Tek bir uygulama yönteminin diğerlerine kıyasla daha fazla işlem gücüne veya daha fazla isteği işlemeye ihtiyaç duyması halinde tek bir hizmet yerine uygulama katmanının tamamının ölçeğinin yüke göre genişletilmesi gerekir.

Bazı durumlarda bir uygulamayı N katmanlı mimariyle geliştirip dağıtımları tek parça olarak yapmaya devam edebilirsiniz. Katmanları diğerlerinden ayırdığınızda her birini ayrıca dağıtmanız gerekir. Bunun için paylaşılan bağımlılıkların kaldırılması ve katmanlar arasındaki API çağrılarının daha güvenilir olması gerekir. Bu işlem düzgün yapıldığında uygulama dağıtımlarınız için esneklik sunar.

N katmanlı mimarideki uygulamalar genellikle VM 'Lere dağıtılır. Bu durum başlangıç için iyidir ancak uygulamanızı PaaS hizmetlerini kullanacak şekilde değiştirmek güvenlik, ölçeklenebilirlik ve yönetim açısından birçok avantaj sunar. Bu evrimi genellikle fazla göz ardı edilir ve N katmanlı mimariler VM 'lerde güncel kalır.

Bu klasik mimari stilidir ancak çoğu senaryoda yerini mikro hizmetler mimarisi gibi daha modern tasarım desenlerine bırakmıştır. Uygulamanız için daha uygun olup olmadığını görme amacıyla diğer mimarileri de değerlendirmek oldukça faydalıdır.

N katmanlı mimariler için en iyi yöntemler

N katmanlı mimarinizin mümkün olan en iyi şekilde çalıştığından emin olmak için yapabileceğiniz birkaç işlem vardır. Aşağıdaki diyagramda N katmanlı mimarilerde yapacağınız geliştirmeler gösterilmiştir.

N katmanlı mimarinin görselleştirilmesi.

Performansı iyileştirme

N katmanlı mimarileri hem performans hem de güvenlik açısından iyileştirmek için kullanabileceğiniz yöntemlere göz atalım.

Otomatik ölçeklendirme

Uygulama katmanlara ayrıldığından, sistem yüküne uyum sağlamak için otomatik ölçeklendirme gibi bulut özelliklerini kullanabiliriz. Kullanıcı veya istek sayısı arttıkça birden fazla katmanda otomatik ölçeklendirme özelliklerini kullanarak istekleri işleyecek daha fazla kaynak ekleyebilirsiniz. Otomatik ölçeklendirme, istek sayısı azaldığında işlem kaynağı miktarını da azaltarak fatura tutarınızın düşmesini sağlar. Otomatik ölçeklendirme, kullanıcılarınızın en iyi deneyimle karşılaşmalarını ve maliyetlerinizin düşük kalacağından emin olmanızı kolaylaştırır. Azure sanal makine ölçek kümeleri, VM tabanlı iş yükleri için kullanılabilir ve Azure App Service gibi birçok PaaS hizmeti yerleşik otomatik ölçeklendirme yeteneklerine sahiptir.

Yük dengeleme

Otomatik ölçeklendirme ile uygulamanızın ölçeğini genişlettikçe yük dengeleme özelliklerini mimarinize eklemeniz zorunlu hale gelir. Yük dengeleme sayesinde katmanınıza eklediğiniz yeni işlem kaynakları yük dengeleyici dağıtımınıza da eklenir ve bu sayede ek işlem gücünden faydalanmanız sağlanır. Buna karşılık, bir sistem başarısız olduğunda, kötü performans veya erred istekleri aracılığıyla Kullanıcı etkisini en aza indirmek için yükün yükü kaldırılır. Bu sayede kullanıcı istekleri işlevsel durumdaki sistemlere yönlendirilir. Azure Load Balancer, ağ özellikleriyle birlikte sunulan yerleşik bir özelliktir. Application Gateway ise daha gelişmiş bir HTTP yük dengeleme çözümü sunar.

Mesajlaşma

Katmanlar arasında bir mesajlaşma hizmeti kullanımı, özellikle de zaman uyumsuz olan isteklerde, performans üzerinde olumlu bir etkiye sahiptir. Bir ileti kuyruğa konur, bu işlem işlenene kadar kalır ve aşağı akış yükünün etkisini mahsuplaştırma. Bu sayede sistem kesintisi olduğunda da iletinizin işlenmesi sağlanır. Kuyrukta kalır ve sistem yeniden çevrimiçi olduktan sonra işlenir. Azure tarafından sunulan mesajlaşma çözümlerinden gereksinimlerinize en uygun olanı seçebilirsiniz. Azure Service Bus, Azure Depolama kuyrukları ve Azure Event Hubs, sunulan mesajlaşma hizmetlerinden birkaçıdır.

Verileri önbelleğe alma

Sık erişilmeyen ve düşük değişiklik oranına sahip olan veya oturum durumu gibi uzun süreli kalıcı olması gerekmeyen veriler için önbellek kullanabilirsiniz. Önbelleğe alma sistemleri katmanlar arasına yerleştirilir ve bu türdeki veriler için veri alma süresini kısaltır. Redis için Azure Cache, bu senaryoya uygun PaaS hizmetlerinden biridir.

Güvenliği iyileştirme

Güvenlik için iyileştirirken, bu genellikle hiçbir zaman "yapılmadı" olan bir iş olur. Uygulama katmanlara ayrılmış olsa dahi bu mimariye iyi planlanmış güvenlik uygulamalarının dahil edilmesi gerekir. Katman sayısı arttıkça güvenliğini sağlamanız gereken bileşen sayısı ve sistemin karmaşıklık düzeyi de artar. Mimarinizin uygulamanızı çalıştırmak üzere güvenli bir ortam sağladığından emin olmak için yapmanız gereken birkaç işlem vardır.

Ağ yalıtımı

VM'ler üzerinde N katmanlı mimari çalıştırırken her katmanın kendi alt ağında çalıştığından emin olun. Bu alt ağ bir güvenlik sınırı görevi görür ve ağ erişim denetimi listeleriyle bağlantıyı yalıtmanızı sağlar, ancak alt ağdaki yeni sistemlerin aynı kuralları almasına izin vererek yönetim hızını sağlar. Azure 'da bu, yerel olarak ağ güvenlik grupları (NSG 'ler) ile yapılır. PaaS hizmetleri için de benzer değerlendirmeler yapılmalıdır ancak her hizmetin ağ tümleştirme özellikleri farklıdır ve her biri kendi başına alınmalıdır. En iyi yöntemlerden biri, her katmanın yalnızca altındaki katmanla iletişim kurabilmesini sağlamaktır. Sunum katmanı yalnızca uygulama katmanıyla, uygulama katmanı da yalnızca veri katmanıyla iletişim kurabilmelidir. Bağlantı seçeneklerini en aza indirme, ağ güvenliğine katmanlı bir yaklaşım getirir ve mimarinin genel güvenlik duruşunu geliştirir.

Web uygulaması güvenlik duvarı

Alt ağlar arasındaki güvenlik yalıtımıyla, genel kullanıma sunulan ön ucun güvende olduğundan ve yalnızca gerekli olana erişime izin verdiğinden emin olmak istersiniz. Yalnızca sunum katmanınız gelen internet trafiğine açık olmalıdır ve sunum katmanınızın önüne yerleştireceğiniz web uygulaması güvenlik duvarı (WAF) teknolojisi, bu katmanın güvenliğini artıracaktır. WAF'lar trafikte kötü amaçlı etkinlik olup olmadığını inceler, iletişimlerin şifreli bir şekilde gerçekleşmesini sağlar ve sıra dışı bir durumla karşılaştığında sizi bilgilendirir. Azure 'da Application Gateway, etkinleştirebilmeniz için yerleşik bir WAF içeren bir HTTP yük dengeleyicidir.

Bilginizi ölçün

1.

Aşağıdakilerden hangisi maliyetleri iyileştirerek N katmanlı bir mimari üzerinde yer alan bir uygulamanın performansını artırmanın en iyi yolu olabilir?

2.

Aşağıdaki eylemlerden hangisi bir uygulamanın güvenlik düzeyini artırır?