Styl n-úrovňové architekturyN-tier architecture style

N-úrovňová architektura dělí aplikaci na logické vrstvy a fyzické úrovně.An N-tier architecture divides an application into logical layers and physical tiers.

Logický diagram N-vrstvého stylu architektury

Vrstvy představují způsob oddělení odpovědností a správy závislostí.Layers are a way to separate responsibilities and manage dependencies. Každá vrstva má konkrétní zodpovědnost.Each layer has a specific responsibility. Vyšší vrstva může používat služby v nižší vrstvě, ale ne naopak.A higher layer can use services in a lower layer, but not the other way around.

Úrovně jsou fyzicky oddělené, běží na samostatných počítačích.Tiers are physically separated, running on separate machines. Úroveň může volat jinou úroveň přímo, nebo použít asynchronní zasílání zpráv (frontu zpráv).A tier can call to another tier directly, or use asynchronous messaging (message queue). I když každá vrstva může být hostovaná ve své vlastní úrovni, není to nutné.Although each layer might be hosted in its own tier, that's not required. Několik vrstev může být hostovaných ve stejné úrovni.Several layers might be hosted on the same tier. Fyzické oddělení úrovní zlepšuje škálovatelnost a odolnost proti chybám, ale také zvyšuje latenci díky další síťové komunikaci.Physically separating the tiers improves scalability and resiliency, but also adds latency from the additional network communication.

Tradiční tříúrovňová aplikace obsahuje prezentační úroveň, střední úroveň a databázovou úroveň.A traditional three-tier application has a presentation tier, a middle tier, and a database tier. Střední úroveň je volitelná.The middle tier is optional. Složitější aplikace můžou mít více než tři úrovně.More complex applications can have more than three tiers. Uvedený diagramu zobrazuje aplikaci se dvěma středními úrovněmi, které zapouzdřují různé funkční oblasti.The diagram above shows an application with two middle tiers, encapsulating different areas of functionality.

N-úrovňová aplikace může mít uzavřenou architekturu vrstev nebo otevřenou architekturu vrstev:An N-tier application can have a closed layer architecture or an open layer architecture:

  • V uzavřené architektuře vrstev může vrstva volat jenom další vrstvu bezprostředně pod ní.In a closed layer architecture, a layer can only call the next layer immediately down.
  • V otevřené architektuře vrstev může vrstva volat všechny vrstvy pod ní.In an open layer architecture, a layer can call any of the layers below it.

Uzavřená architektura vrstev omezuje závislosti mezi vrstvami.A closed layer architecture limits the dependencies between layers. Může ale vytvořit nepotřebný síťový provoz, pokud jedna vrstva jednoduše předává požadavky další vrstvě.However, it might create unnecessary network traffic, if one layer simply passes requests along to the next layer.

Kdy použít tuto architekturuWhen to use this architecture

N-úrovňové architektury se obvykle implementují aplikace infrastruktury jako služba (IaaS), kde každá úroveň běží na samostatné sadě virtuálních počítačů.N-tier architectures are typically implemented as infrastructure-as-service (IaaS) applications, with each tier running on a separate set of VMs. N-úrovňová aplikace ale nemusí být čistou IaaS.However, an N-tier application doesn't need to be pure IaaS. Často je výhodné používat pro některé části architektury spravované služby, zejména ukládání do mezipaměti, zasílání zpráv a úložiště dat.Often, it's advantageous to use managed services for some parts of the architecture, particularly caching, messaging, and data storage.

Zvažte n-úrovňovou architekturu v těchto případech:Consider an N-tier architecture for:

  • Jednoduché webové aplikace.Simple web applications.
  • Migrace místní aplikace do Azure s minimálním refaktoringem.Migrating an on-premises application to Azure with minimal refactoring.
  • Unifikovaný vývoj místních i cloudových aplikací.Unified development of on-premises and cloud applications.

N-úrovňové architektury jsou velmi běžné u tradičních místních aplikací, takže je přirozeně vhodná pro migraci stávajících úloh do Azure.N-tier architectures are very common in traditional on-premises applications, so it's a natural fit for migrating existing workloads to Azure.

VýhodyBenefits

  • Přenositelnost mezi cloudem a místním prostředím nebo mezi cloudovými platformami.Portability between cloud and on-premises, and between cloud platforms.
  • Méně strmá křivka osvojování znalostí pro většinu vývojářů.Less learning curve for most developers.
  • Přirozený přechod z tradičního aplikačního modelu.Natural evolution from the traditional application model.
  • Otevřenost pro heterogenní prostředí (Windows nebo Linux).Open to heterogeneous environment (Windows/Linux)

VýzvyChallenges

  • Je snadné skončit se střední úrovní, která provádí jenom operace CRUD v databázi a zvyšuje latenci bez provádění jakékoli užitečné práce.It's easy to end up with a middle tier that just does CRUD operations on the database, adding extra latency without doing any useful work.
  • Monolitický návrh zabraňuje nezávislému nasazení funkcí.Monolithic design prevents independent deployment of features.
  • Správa aplikace IaaS představuje víc práce než u aplikace, která používá jenom spravované služby.Managing an IaaS application is more work than an application that uses only managed services.
  • Může být obtížné spravovat zabezpečení sítě v rozsáhlém systému.It can be difficult to manage network security in a large system.

Osvědčené postupyBest practices

N-úrovňová architektura na virtuálních počítačíchN-tier architecture on virtual machines

Tato část popisuje doporučenou n-úrovňovou architekturu běžící na virtuálních počítačích.This section describes a recommended N-tier architecture running on VMs.

Fyzický diagram N-vrstvé architektury

Každá úroveň se skládá ze dvou nebo více virtuálních počítačů, které jsou umístěné ve skupině dostupnosti nebo v sadě škálování virtuálního počítače.Each tier consists of two or more VMs, placed in an availability set or virtual machine scale set. Víc virtuálních počítačů poskytuje odolnost v případě, že jeden virtuální počítač selže.Multiple VMs provide resiliency in case one VM fails. Nástroje pro vyrovnávání zatížení se používají k distribuci požadavků mezi virtuální počítače v úrovni.Load balancers are used to distribute requests across the VMs in a tier. Úroveň můžete škálovat horizontálně tak, že přidáte další virtuální počítače do fondu.A tier can be scaled horizontally by adding more VMs to the pool.

Každá úroveň je také umístěná uvnitř vlastní podsítě, což znamená, že jejich vnitřních IP adresy patří do stejného rozsahu adres.Each tier is also placed inside its own subnet, meaning their internal IP addresses fall within the same address range. Díky tomu je snadné použít pravidla skupiny zabezpečení sítě a směrovací tabulky na jednotlivé úrovně.That makes it easy to apply network security group rules and route tables to individual tiers.

Webová a obchodní úroveň je bezstavová.The web and business tiers are stateless. Všechny žádosti pro tuto úroveň můžou zpracovávat všechny virtuální počítače.Any VM can handle any request for that tier. Datová úroveň by měla sestávat z replikované databáze.The data tier should consist of a replicated database. Pro Windows doporučujeme, abyste pro vysokou dostupnost používali skupiny dostupnosti Always On SQL Server.For Windows, we recommend SQL Server, using Always On availability groups for high availability. Pro Linux vyberte databázi, která podporuje replikaci, jako je například Apache Cassandra.For Linux, choose a database that supports replication, such as Apache Cassandra.

Skupiny zabezpečení sítě omezují přístup k jednotlivým vrstvám.Network security groups restrict access to each tier. Například databázová úroveň umožňuje přístup jenom z obchodní úrovně.For example, the database tier only allows access from the business tier.

Poznámka

Vrstva označená obchodní vrstvou v našem referenčním diagramu je monikerem vrstvy obchodní logiky.The layer labeled "Business Tier" in our reference diagram is a moniker to the business logic tier. Podobně také voláme prezentační vrstvu "webová vrstva".Likewise, we also call the presentation tier the "Web Tier." V našem příkladu je to webová aplikace, i když je možné použít vícevrstvé architektury i pro jiné topologie (jako desktopové aplikace).In our example, this is a web application, though multi-tier architectures can be used for other topologies as well (like desktop apps). Pojmenujte své úrovně, které nejlépe vyhovuje vašemu týmu, aby komunikoval záměr této logické nebo fyzické vrstvy ve vaší aplikaci – dokonce můžete vyjádřit, že se pojmenujte v prostředcích, které si zvolíte k reprezentaci této vrstvy (např. vmss-appName-Business-Layer).Name your tiers what works best for your team to communicate the intent of that logical and/or physical tier in your application - you could even express that naming in resources you choose to represent that tier (e.g. vmss-appName-business-layer).

Další informace o spouštění N-vrstvých aplikací v Azure:For more information about running N-tier applications on Azure:

Další aspektyAdditional considerations

  • N-úrovňové architektury nejsou omezené na tři úrovně.N-tier architectures are not restricted to three tiers. U složitějších aplikací se běžně používá víc úrovní.For more complex applications, it is common to have more tiers. V takovém případě zvažte použití směrování vrstvy 7 pro směrování požadavků na konkrétní úroveň.In that case, consider using layer-7 routing to route requests to a particular tier.

  • Úrovně jsou hranice škálovatelnost, spolehlivosti a zabezpečení.Tiers are the boundary of scalability, reliability, and security. Pro služby s různými požadavky v těchto oblastech zvažte samostatné úrovně.Consider having separate tiers for services with different requirements in those areas.

  • K automatickému škálování použijte Virtual Machine Scale Sets.Use virtual machine scale sets for autoscaling.

  • Vyhledejte v architektuře místa, kde můžete použít spravovanou službu bez významného refaktoringu.Look for places in the architecture where you can use a managed service without significant refactoring. Konkrétně se podívejte na ukládání do mezipaměti, zasílání zpráv, úložiště a databáze.In particular, look at caching, messaging, storage, and databases.

  • Kvůli vyššímu zabezpečení umístěte před aplikace DMZ sítě.For higher security, place a network DMZ in front of the application. DMZ zahrnuje síťová virtuální zařízení (NVA), která implementují funkce zabezpečení, jako jsou brány firewall a kontrolu paketů.The DMZ includes network virtual appliances (NVAs) that implement security functionality such as firewalls and packet inspection. Další informace najdete v popisu referenční architektury DMZ sítě.For more information, see Network DMZ reference architecture.

  • Pro zajištění vysoké dostupnosti umístěte dvě nebo více zařízení NVA do skupiny dostupnosti s externím nástrojem pro vyrovnávání zatížení, aby se internetové požadavky distribuovaly mezi instancemi.For high availability, place two or more NVAs in an availability set, with an external load balancer to distribute Internet requests across the instances. Další informace najdete v tématu Nasazení vysoce dostupných síťových virtuálních zařízení.For more information, see Deploy highly available network virtual appliances.

  • Nepovolujte přímý přístup pomocí protokolu RDP nebo SSH k virtuálním počítačům, na kterých běží kód aplikace.Do not allow direct RDP or SSH access to VMs that are running application code. Místo toho by se operátoři měli přihlašovat k jumpboxu, označovanému také jako hostitel typu bašta.Instead, operators should log into a jumpbox, also called a bastion host. Toto je virtuální počítač v síti, který správci používají pro připojení k ostatním virtuálním počítačům.This is a VM on the network that administrators use to connect to the other VMs. JumpBox má skupinu zabezpečení sítě, která umožňuje RDP nebo SSH jenom ze schválených veřejných IP adres.The jumpbox has a network security group that allows RDP or SSH only from approved public IP addresses.

  • Virtuální síť Azure můžete rozšířit k místní síti pomocí virtuální privátní sítě (VPN) typu Site-to-Site nebo Azure ExpressRoute.You can extend the Azure virtual network to your on-premises network using a site-to-site virtual private network (VPN) or Azure ExpressRoute. Další informace najdete v popisu referenční architektury hybridní sítě.For more information, see Hybrid network reference architecture.

  • Pokud vaše organizace používá Active Directory ke správě identit, můžete chtít rozšířit prostředí Active Directory do virtuální sítě Azure.If your organization uses Active Directory to manage identity, you may want to extend your Active Directory environment to the Azure VNet. Další informace najdete v popisu referenční architektury správy identit.For more information, see Identity management reference architecture.

  • Pokud potřebujete vyšší dostupnost, než poskytuje smlouva Azure SLA pro virtuální počítače, replikujte aplikaci do dvou oblastí a pro převzetí služeb při selhání použijte Azure Traffic Manager.If you need higher availability than the Azure SLA for VMs provides, replicate the application across two regions and use Azure Traffic Manager for failover. Další informace najdete v tématech o spuštění virtuálních počítačů s Windows v několika oblastech nebo spuštění linuxových virtuálních počítačů v několika oblastech.For more information, see Run Windows VMs in multiple regions or Run Linux VMs in multiple regions.