N katmanlı mimarilerle ilgili önemli noktalar

Tamamlandı

N katmanlı mimarinin ne olduğunu inceledik ve üç katmanlı mimari örneği 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.

Sosyal haklar

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 gösterildiği gibi PaaS veya IaaS hizmetlerini herhangi bir katmanda kullanabilirsiniz.

Uygulama katmanlara ayrıldığından her katman diğerlerinden bağımsız olarak ölçeklendirilebilir, güncelleştirilebilir veya yükseltilebilir. Web sitemize yönelik istekler artarsa, diğer katmanları etkilemeden yüke 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 vermeliyiz. 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ında ağ erişiminin güvenliğini sağlayarak uygulamanın saldırı yüzeyini azaltır ve güvenliğini artırırız.

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şlem süresi, gecikme süresi ve sonuçta kullanıcıya gecikme ekler.

Her uygulama düzeyindeki etki alanının API'leri ayrı ayrı hizmetlere ayrılmadığından, bunların 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. Tam ayrım, paylaşılan bağımlılıkların kaldırılmasını ve katmanlar arasındaki API çağrılarına daha fazla bağımlılığı içerir. Düzgün yapıldığında, uygulama dağıtımlarınızın esnek olmasını sağlar.

N katmanlı mimarideki uygulamalar genellikle VM'lerde 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 evrim genellikle göz ardı edilir ve N katmanlı mimariler VM'lerde yerleşik olarak kalır.

N katmanı klasik bir mimari stilidir, ancak birçok senaryoda mikro hizmet mimarisi gibi diğer modern tasarım desenlerinin yerini alır. Diğer mimarilerin uygulamanız için daha uygun olup olmadığını görmek için genellikle biraz zaman ayırıp değerlendirmeye değer.

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.

Visualization of N-tier architecture.

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ığında, 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 deneyime sahip olduğundan ve maliyetlerinizin düşük kaldığından emin olmayı kolaylaştırır. Azure Sanal Makine Ölçek Kümeleri VM tabanlı iş yükleri için kullanılabilir ve Azure Uygulaması Hizmeti gibi birçok PaaS hizmetinin yerleşik otomatik ölçeklendirme özellikleri vardır.

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 daha fazla işlem kaynağı ekledikçe, bunlar ek işlem gücünden yararlanmak için yük dengeleyici dağıtımınıza eklenir. Buna karşılık, sistem başarısız olduğunda, düşük performans veya hatalı istekler aracılığıyla kullanıcı etkisini en aza indirmek için yükten 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 mesajlaşma hizmetinin kullanılması, özellikle doğası gereği zaman uyumsuz istekler üzerinde performans üzerinde olumlu bir etkiye sahiptir. Hizmet bir kuyruğa bir ileti yerleştirir ve bu ileti işlenene kadar burada kalır ve aşağı akış yükünün etkisini sıfırlar. Bir sistem kesintisi oluşursa, mesajlaşma hizmeti iletinizin hala işlendiğinden emin olur. İleti 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

Uygulamanızı güvenlik için en iyi duruma getirmek genellikle hiçbir zaman "yapılmamış" bir iştir. Uygulama katmanlara ayrılmış olsa da mimaride iyi planlanmış güvenlik uygulamaları olması gerekir. Ne kadar çok katman eklerseniz, o kadar fazla güvenlik sağlamanız gerekir ve sisteme karmaşıklık o kadar fazla eklenir. 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'lerde N katmanlı mimari çalıştırırken her katmanın kendi alt ağına ait olduğundan emin olun. Bu alt ağ, ağ erişim denetim listeleri aracılığıyla bağlantıyı yalıtmanıza olanak sağlayan bir güvenlik sınırı işlevi görür. Alt ağ, alt ağdaki yeni sistemlerin aynı kuralları almasını sağlayarak yönetimi de kolaylaştırır. Azure'da bu, ağ güvenlik grupları (NSG) ile yerel olarak gerçekleştirilir. 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ı söz konusu olduğunda, genel kullanıma sunulan ön ucunuzun güvenli olduğundan ve yalnızca gerekenlere erişime izin verdiğinden emin olmak istiyorsunuz. Sunu katmanınızı yalnızca gelen İnternet trafiğine sunmanız gerekir. Sunu katmanınızın önündeki bir web uygulaması güvenlik duvarı (WAF) teknolojisi, bu katmandaki güvenliği artırı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ştirebileceğiniz yerleşik bir WAF'ye sahip bir HTTP yük dengeleyicidir.

Bilgilerinizi kontrol edin

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?