N katmanlı mimari, bir uygulamayı
mantıksal diyagramı
Katmanlar, sorumlulukları ayırmanın ve bağımlılıkları yönetmenin bir yoludur. Her katmanın belirli bir sorumluluğu vardır. Daha yüksek bir katman, hizmetleri daha düşük bir katmanda kullanabilir, ancak başka bir yolla kullanamaz.
Katmanlar fiziksel olarak ayrılmıştır ve ayrı makinelerde çalışır. Sözleşmeye bağlı olarak katmanın iletişim modellerinin katı veya rahat olması gerekir. Katı modelde bir isteğin bitişik katmanlardan tek tek geçmesi gerekir ve aradaki hiçbir katmanı atlayamaz. Örneğin, web uygulaması güvenlik duvarından web katmanına, ardından orta katman 1'e vb. Buna karşılık, gevşek yaklaşımda istek gerekirse bazı katmanları atlayabilir. Katı yaklaşımın daha fazla gecikme süresi ve ek yükü vardır ve gevşek yaklaşımın daha fazla bağlaması vardır ve daha sonra değiştirilmesi daha zordur. Bir sistem karma bir yaklaşım kullanabilir: gerektiğinde hem gevşek hem de katı katmanlara sahip olmak.
Bir katman doğrudan başka bir katmana çağrı yapabilir veya bir ileti kuyruğu aracılığıyla zaman uyumsuz mesajlaşma desenlerini
Geleneksel üç katmanlı bir uygulamanın sunu katmanı, orta katmanı ve veritabanı katmanı vardır. Orta katman isteğe bağlıdır. Daha karmaşık uygulamaların üçten fazla katmanı olabilir. Yukarıdaki diyagramda farklı işlev alanlarını kapsülleyen iki orta katmana sahip bir uygulama gösterilmektedir.
N katmanlı bir uygulama
- Kapalı katman mimarisinde bir katman yalnızca bir sonraki katmanı hemen aşağı çağırabilir.
- Açık katman mimarisinde katman, altındaki katmanlardan herhangi birini çağırabilir.
Kapalı katman mimarisi, katmanlar arasındaki bağımlılıkları sınırlar. Ancak, bir katman istekleri bir sonraki katmana geçirirse gereksiz ağ trafiği oluşturabilir.
Bu mimari ne zaman kullanılır?
N katmanlı mimariler genellikle hizmet olarak altyapı (IaaS) uygulamaları olarak uygulanır ve her katman ayrı bir VM kümesinde çalışır. Ancak N katmanlı bir uygulamanın saf IaaS olması gerekmez. Genellikle, mimarinin bazı bölümleri için yönetilen hizmetleri (özellikle önbelleğe alma, mesajlaşma ve veri depolama) kullanmak avantajlıdır.
Aşağıdakiler için N katmanlı bir mimari düşünün:
- Basit web uygulamaları.
- Mimari gereksinimlerin henüz net olmadığı iyi bir başlangıç noktası.
- En az yeniden düzenlemeyle şirket içi bir uygulamayı Azure'a geçirme.
- Şirket içi ve bulut uygulamalarının birleşik geliştirmesi.
N katmanlı mimariler geleneksel şirket içi uygulamalarda çok yaygındır, bu nedenle mevcut iş yüklerini Azure'a geçirmek için doğal bir seçenektir.
Fayda -ları
- Bulut ve şirket içi arasında ve bulut platformları arasında taşınabilirlik.
- Çoğu geliştirici için daha az öğrenme eğrisi.
- Çözümü yeniden tasarlamayarak görece düşük maliyet
- Geleneksel uygulama modelinden doğal evrim.
- Heterojen ortama açma (Windows/Linux)
Zorluklar
- Yalnızca veritabanında CRUD işlemleri yapan bir orta katmana sahip olmak ve kullanışlı bir iş yapmadan ek gecikme süresi eklemek kolaydır.
- Monolitik tasarım, özelliklerin bağımsız dağıtımını engeller.
- IaaS uygulamasını yönetmek, yalnızca yönetilen hizmetleri kullanan bir uygulamadan daha fazla iştir.
- Büyük bir sistemde ağ güvenliğini yönetmek zor olabilir.
- Kullanıcı ve veri akışları genellikle birden çok katmana yayılarak test ve gözlemlenebilirlik gibi sorunlara karmaşıklık ekler.
En iyi yöntemler
- Yükteki değişiklikleri işlemek için otomatik ölçeklendirmeyi kullanın. bkz. otomatik ölçeklendirme en iyi yöntemleri.
- Katmanları ayrıştırmak için zaman uyumsuz mesajlaşma
kullanın. - Yarıstatik verileri önbelleğe alma. bkz. Önbelleğe alma en iyi yöntemleri.
- sql server always on kullanılabilirlik gruplarıgibi
bir çözüm kullanarak veritabanı katmanını yüksek kullanılabilirlik için yapılandırın. - Ön uç ile İnternet arasına bir web uygulaması güvenlik duvarı (WAF) yerleştirin.
- Her katmanı kendi alt aya yerleştirin ve güvenlik sınırı olarak alt ağları kullanın.
- Yalnızca orta katmanlardan gelen isteklere izin vererek veri katmanına erişimi kısıtlayın.
Sanal makinelerde N katmanlı mimari
Bu bölümde, VM'lerde çalışan önerilen N katmanlı mimari açıklanmaktadır.
N katmanlı mimari fiziksel diyagramını
Her katman, kullanılabilirlik kümesine veya sanal makine ölçek kümesine yerleştirilmiş iki veya daha fazla VM'den oluşur. Birden çok VM, bir VM'nin başarısız olması durumunda dayanıklılık sağlar. Yük dengeleyiciler, istekleri bir katmandaki VM'ler arasında dağıtmak için kullanılır. Bir katman, havuza daha fazla VM eklenerek yatay olarak ölçeklendirilebilir.
Her katman kendi alt ağı içine de yerleştirilir, yani iç IP adresleri aynı adres aralığına girer. Bu, ağ güvenlik grubu kurallarını uygulamayı ve tabloları tek tek katmanlara yönlendirmeyi kolaylaştırır.
Web ve iş katmanları durum bilgisi yoktur. Tüm VM'ler bu katman için herhangi bir isteği işleyebilir. Veri katmanı çoğaltılmış bir veritabanından oluşmalıdır. Windows için, yüksek kullanılabilirlik için Always On kullanılabilirlik gruplarını kullanarak SQL Server'ı kullanmanızı öneririz. Linux için, Apache Cassandra gibi çoğaltmayı destekleyen bir veritabanı seçin.
Ağ güvenlik grupları her katmana erişimi kısıtlar. Örneğin, veritabanı katmanı yalnızca iş katmanından erişime izin verir.
Not
Başvuru diyagramımızda "İş Katmanı" olarak etiketlenen katman, iş mantığı katmanının bir adıdır. Benzer şekilde, sunu katmanını da "Web Katmanı" olarak adlandırıyoruz. Örneğimizde bu bir web uygulamasıdır, ancak çok katmanlı mimariler diğer topolojiler için de kullanılabilir (masaüstü uygulamaları gibi). Katmanlarınıza ekibinizin uygulamanızda bu mantıksal ve/veya fiziksel katmanın amacını iletmesi için en uygun adı verin. Hatta bu adlandırmayı, bu katmanı temsil etmeyi seçtiğiniz kaynaklarda da ifade edebilirsiniz (örn. vmss-appName-business-layer).
Dikkat edilmesi gereken ek noktalar
N katmanlı mimariler üç katmanla sınırlı değildir. Daha karmaşık uygulamalar için daha fazla katmana sahip olmak yaygın bir durumdur. Bu durumda, istekleri belirli bir katmana yönlendirmek için katman 7 yönlendirmesini kullanmayı göz önünde bulundurun.
Katmanlar ölçeklenebilirlik, güvenilirlik ve güvenliğin sınırıdır. Bu alanlarda farklı gereksinimlere sahip hizmetler için ayrı katmanlara sahip olmayı göz önünde bulundurun.
otomatik ölçeklendirme
için sanal makine ölçek kümelerini kullanın. Mimaride, önemli bir yeniden düzenleme yapmadan yönetilen hizmeti kullanabileceğiniz yerleri arayın. Özellikle önbelleğe alma, mesajlaşma, depolama ve veritabanlarına bakın.
Daha yüksek güvenlik için uygulamanın önüne bir ağ DMZ'sini yerleştirin. DMZ, güvenlik duvarları ve paket denetimi gibi güvenlik işlevlerini uygulayan ağ sanal gereçlerini (NVA) içerir. Daha fazla bilgi için bkz. Ağ DMZ başvuru mimarisi.
Yüksek kullanılabilirlik için, İnternet isteklerini örnekler arasında dağıtmak için bir dış yük dengeleyici ile bir kullanılabilirlik kümesine iki veya daha fazla NVA yerleştirin. Daha fazla bilgi için bkz. yüksek oranda kullanılabilir ağ sanal gereçleri dağıtma.
Uygulama kodu çalıştıran VM'lere doğrudan RDP veya SSH erişimine izin verme. Bunun yerine, işleçler savunma konağı olarak da adlandırılan bir sıçrama kutusunda oturum açmalıdır. Bu, ağ üzerindeki yöneticilerin diğer VM'lere bağlanmak için kullandığı bir VM'dir. Sıçrama kutusu yalnızca onaylanan genel IP adreslerinden RDP veya SSH'ye izin veren bir ağ güvenlik grubuna sahiptir.
Siteden siteye sanal özel ağ (VPN) veya Azure ExpressRoute kullanarak Azure sanal ağını şirket içi ağınıza genişletebilirsiniz. Daha fazla bilgi için bkz. Karma ağ başvuru mimarisi.
Kuruluşunuz kimliği yönetmek için Active Directory kullanıyorsa, Active Directory ortamınızı Azure sanal asına genişletmek isteyebilirsiniz.
İlgili Kaynaklar
- [SQL Server ile Azure'da Windows N katmanlı uygulama][n-tier-windows-SQL]
- Microsoft Learn modülü: N katmanlı mimari stili
- Azure Bastion'
- Azure'da
N katmanlı mimari stilinde mesajlaşma hakkında daha fazla bilgi