Microsoft Azure Well-Architected FrameworkMicrosoft Azure Well-Architected Framework

Das Azure Well-Architected Framework umfasst verschiedene Grundsätze, mit denen die Qualität einer Workload verbessert werden kann.The Azure Well-Architected Framework is a set of guiding tenets that can be used to improve the quality of a workload. Das Framework besteht aus fünf Säulen der Architekturexzellenz: Kostenoptimierung, optimaler Betrieb, effiziente Leistung, Zuverlässigkeit und Sicherheit.The framework consists of five pillars of architecture excellence: Cost Optimization, Operational Excellence, Performance Efficiency, Reliability, and Security.

Informationen zur Bewertung Ihrer Workload anhand der Grundsätze des Microsoft Azure Well-Architected Framework finden Sie in der Microsoft Azure Well-Architected-Bewertung.To assess your workload using the tenets found in the Microsoft Azure Well-Architected Framework, see the Microsoft Azure Well-Architected Review.

SäulePillar BESCHREIBUNGDescription
KostenoptimierungCost Optimization Verwalten der Kosten zur Maximierung des erzielten WertsManaging costs to maximize the value delivered.
Optimaler BetriebOperational Excellence Operative Prozesse, die für die Ausführung eines Systems in der Produktion sorgen.Operations processes that keep a system running in production.
Effiziente LeistungPerformance Efficiency Die Fähigkeit eines Systems, sich an Laständerungen anzupassenThe ability of a system to adapt to changes in load.
ZuverlässigkeitReliability Die Fähigkeit eines Systems, nach Ausfällen eine Wiederherstellung durchzuführen und die Betriebsbereitschaft sicherzustellen.The ability of a system to recover from failures and continue to function.
SecuritySecurity Schützen von Anwendungen und Daten vor Bedrohungen.Protecting applications and data from threats.

KostenoptimierungCost Optimization

Konzentrieren Sie sich beim Entwerfen einer Cloudlösung auf die frühzeitige Generierung von Mehrwert.When you are designing a cloud solution, focus on generating incremental value early. Wenden Sie die Prinzipien von Erstellen-Messen-Lernen an, um die Markteinführungszeit zu verkürzen und kapitalintensive Lösungen zu vermeiden.Apply the principles of Build-Measure-Learn, to accelerate your time to market while avoiding capital-intensive solutions. Verwenden Sie die nutzungsbasierte Bezahlung für Ihre Architektur, und investieren Sie in die Möglichkeit zum horizontalen Hochskalieren, anstatt eine erste Version mit hohen Kosten bereitzustellen.Use the pay-as-you-go strategy for your architecture, and invest in scaling out, rather than delivering a large investment first version. Berücksichtigen Sie Opportunitätskosten im Zusammenhang mit Ihrer Architektur, und wägen Sie die Vor- und Nachteile ab, die eine Position als Vorreiter oder Nachahmer mit sich bringt.Consider opportunity costs in your architecture, and the balance between first mover advantage versus "fast follow". Nutzen Sie die Kostenrechner, um die Anfangs- und Betriebskosten zu schätzen.Use the cost calculators to estimate the initial cost and operational costs. Richten Sie außerdem Richtlinien, Budgets und Kontrollen ein, die die Kosten für Ihre Lösung begrenzen.Finally, establish policies, budgets, and controls that set cost limits for your solution.

Leitfaden zu KostenCost guidance

Optimaler BetriebOperational Excellence

Diese Säule deckt die Betriebsprozesse ab, die für die Ausführung einer Anwendung in der Produktion sorgen.This pillar covers the operations processes that keep an application running in production. Bereitstellungen müssen zuverlässig und vorhersagbar sein.Deployments must be reliable and predictable. Sie sollten automatisiert erfolgen, um das Risiko menschlicher Fehler zu senken.They should be automated to reduce the chance of human error. Es sollte ein schneller und routinierter Prozess sein, damit die Freigabe neuer Features oder Fehlerbehebungen nicht verlangsamt wird.They should be a fast and routine process, so they don't slow down the release of new features or bug fixes. Gleichermaßen wichtig ist auch, dass Sie einen schnellen Rollback oder Rollforward ausführen können, wenn es ein Problem bei einem Update gibt.Equally important, you must be able to quickly roll back or roll forward if an update has problems.

Die Überwachung und die Diagnose sind von entscheidender Bedeutung.Monitoring and diagnostics are crucial. Cloudanwendungen werden in einem Remoterechenzentrum ausgeführt, in dem Sie keine vollständige Kontrolle über die Infrastruktur oder – in manchen Fällen – das Betriebssystem haben.Cloud applications run in a remote data-center where you do not have full control of the infrastructure or, in some cases, the operating system. Bei einer großen Anwendung ist es nicht praktikabel, sich bei virtuellen Computern anzumelden, um ein Problem zu beheben oder Protokolldateien zu durchsuchen.In a large application, it's not practical to log into VMs to troubleshoot an issue or sift through log files. Bei PaaS-Diensten gibt es möglicherweise nicht einmal einen dedizierten virtuellen Computer, bei dem Sie sich anmelden könnten.With PaaS services, there may not even be a dedicated VM to log into. Überwachung und Diagnose bieten Einblick in das System, sodass Sie ermitteln können, wann und wo Fehler auftreten.Monitoring and diagnostics give insight into the system, so that you know when and where failures occur. Alle Systeme müssen beobachtet werden können.All systems must be observable. Verwenden Sie ein allgemeines und konsistentes Protokollschema, mit dem Sie Ereignisse systemübergreifend korrelieren können.Use a common and consistent logging schema that lets you correlate events across systems.

Der Überwachungs- und Diagnoseprozess besteht aus mehreren unterschiedlichen Phasen:The monitoring and diagnostics process has several distinct phases:

  • Instrumentierung:Instrumentation. Generieren der Rohdaten aus Anwendungsprotokollen, Webserverprotokollen, in die Azure-Plattform integrierten Diagnosefunktionen und anderen Diensten.Generating the raw data, from application logs, web server logs, diagnostics built into the Azure platform, and other sources.
  • Sammlung und Speicherung:Collection and storage. Konsolidieren der Daten an einer zentralen Stelle.Consolidating the data into one place.
  • Analyse und Diagnose:Analysis and diagnosis. Beheben von Problemen und Übersicht über die Integrität insgesamt.To troubleshoot issues and see the overall health.
  • Visualisierung und Warnungen:Visualization and alerts. Verwenden von Telemetriedaten, um Tendenzen zu erkennen oder das Betriebsteam zu benachrichtigen.Using telemetry data to spot trends or alert the operations team.

Verwenden Sie die DevOps-Checkliste, um Ihren Entwurf vom Verwaltungs- und DevOps-Standpunkt aus zu überprüfen.Use the DevOps checklist to review your design from a management and DevOps standpoint.

Empfehlungen für einen optimalen BetriebOperational excellence guidance

Effiziente LeistungPerformance efficiency

Leistungseffizienz ist die Fähigkeit Ihrer Workload, auf effiziente Weise eine den Anforderungen der Benutzer entsprechende Skalierung auszuführen.Performance efficiency is the ability of your workload to scale to meet the demands placed on it by users in an efficient manner. Um dies zu erreichen, ist es besonders wichtig, eine angemessene Skalierung anzuwenden und PaaS-Angebote mit integrierter Skalierung zu implementieren.The main ways to achieve this are by using scaling appropriately and implementing PaaS offerings that have scaling built in.

Es gibt im Wesentlichen zwei Möglichkeiten, eine Anwendung zu skalieren.There are two main ways that an application can scale. Beim vertikalen Hochskalieren wird die Kapazität einer Ressource erhöht, z.B. durch Verwenden eines größeren virtuellen Computers.Vertical scaling (scaling up) means increasing the capacity of a resource, for example by using a larger VM size. Beim horizontalen Hochskalieren werden neue Instanzen einer Ressource hinzugefügt, z.B. virtuelle Computer oder Datenbankreplikate.Horizontal scaling (scaling out) is adding new instances of a resource, such as VMs or database replicas.

Die horizontale Skalierung bietet gegenüber der vertikalen Skalierung einige wichtige Vorteile:Horizontal scaling has significant advantages over vertical scaling:

  • Echter Cloudmaßstab.True cloud scale. Anwendung können für die Ausführung auf Hunderten oder sogar Tausenden von Knoten entworfen werden und damit einen Maßstab erreichen, der auf einem Einzelknoten nicht möglich ist.Applications can be designed to run on hundreds or even thousands of nodes, reaching scales that are not possible on a single node.
  • Die horizontale Skalierung ist elastisch.Horizontal scale is elastic. Sie können Instanzen hinzufügen, wenn die Last wächst, und diese in ruhigeren Zeiträumen wieder entfernen.You can add more instances if load increases, or remove them during quieter periods.
  • Die horizontale Hochskalierung kann automatisch ausgelöst werden, entweder gemäß einem Zeitplan oder als Reaktion auf Änderungen der Auslastung.Scaling out can be triggered automatically, either on a schedule or in response to changes in load.
  • Das horizontale Hochskalieren kann kostengünstiger sein als das vertikale Hochskalieren.Scaling out may be cheaper than scaling up. Die Ausführung verschiedener kleiner virtueller Computer kann weniger kosten als ein einziger großer virtueller Computer.Running several small VMs can cost less than a single large VM.
  • Die horizontale Skalierung kann durch Hinzufügen von Redundanz auch die Resilienz verbessern.Horizontal scaling can also improve resiliency, by adding redundancy. Wenn eine Instanz ausfällt, wird die Anwendung trotzdem weiter ausgeführt.If an instance goes down, the application keeps running.

Ein Vorteil der vertikalen Skalierung besteht darin, dass Sie hierfür keine Änderungen der Anwendung erforderlich sind.An advantage of vertical scaling is that you can do it without making any changes to the application. An einem bestimmten Punkt ist jedoch eine Obergrenze erreicht, ab der eine weitere vertikale Hochskalierung nicht mehr möglich ist.But at some point you'll hit a limit, where you can't scale any up any more. An diesem Punkt muss jede weitere Skalierung horizontal erfolgen.At that point, any further scaling must be horizontal.

Die horizontale Skalierung muss im System konzipiert werden.Horizontal scale must be designed into the system. Sie können z.B. virtuelle Computer aufskalieren, indem Sie sie hinter einem Lastenausgleichsmodul platzieren.For example, you can scale out VMs by placing them behind a load balancer. Allerdings muss jeder virtuelle Computer im Pool in der Lage sein, jede Clientanforderung zu verarbeiten, daher muss der virtuelle Computer zustandslos sein oder den Zustand extern speichern (beispielsweise in einem verteilten Cache).But each VM in the pool must be able to handle any client request, so the application must be stateless or store state externally (say, in a distributed cache). In verwalteten PaaS-Diensten ist die horizontale und automatische Skalierung häufig bereits integriert.Managed PaaS services often have horizontal scaling and autoscaling built in. Die einfache Skalierbarkeit ist ein großer Vorteil von PaaS-Diensten.The ease of scaling these services is a major advantage of using PaaS services.

Das simple Hinzufügen weiterer Instanzen bedeutet jedoch nicht, dass eine Anwendung skaliert wird.Just adding more instances doesn't mean an application will scale, however. Dadurch wird der Engpass einfach nur an eine andere Stelle verlagert.It might simply push the bottleneck somewhere else. Wenn Sie beispielsweise ein Web-Front-End für die Verarbeitung einer größeren Anzahl von Clientanforderungen skalieren, kann dies Sperrkonflikte in der Datenbank auslösen.For example, if you scale a web front end to handle more client requests, that might trigger lock contentions in the database. In diesem Fall müssten Sie weitere Maßnahmen ergreifen, z.B. optimistische Parallelität oder Datenpartitionierung einrichten, um einen höheren Durchsatz für die Datenbank zu ermöglichen.You would then need to consider additional measures, such as optimistic concurrency or data partitioning, to enable more throughput to the database.

Führen Sie immer Leistungs- und Auslastungstests durch, um diese potenziellen Engpässe zu finden.Always conduct performance and load testing to find these potential bottlenecks. Die zustandsbehafteten Teile eines Systems, wie etwa die Datenbanken, sind die häufigste Ursache für Engpässe und erfordern einen sorgfältigen Entwurf, um sich horizontal skalieren zu lassen.The stateful parts of a system, such as databases, are the most common cause of bottlenecks, and require careful design to scale horizontally. Durch das Beheben eines Engpasses können sich weitere Engpässe an anderen Stellen zeigen.Resolving one bottleneck may reveal other bottlenecks elsewhere.

Nutzen Sie die Prüfliste zur Leistungseffizienz, um Ihren Entwurf im Hinblick auf die Skalierbarkeit zu überprüfen.Use the Performance efficiency checklist to review your design from a scalability standpoint.

Empfehlungen für eine effiziente LeistungPerformance efficiency guidance

ZuverlässigkeitReliability

Eine zuverlässige Workload muss robust und verfügbar sein.A reliable workload is one that is both resilient and available. Resilienz ist die Fähigkeit des Systems, nach Ausfällen für ein System eine Wiederherstellung durchzuführen und die Betriebsbereitschaft sicherzustellen.Resiliency is the ability of the system to recover from failures and continue to function. Das Ziel der Resilienz besteht darin, nach einem Ausfall wieder die volle Funktionsfähigkeit einer Anwendung herzustellen.The goal of resiliency is to return the application to a fully functioning state after a failure occurs. Verfügbarkeit bedeutet, dass Ihre Benutzer bei Bedarf jederzeit auf Ihre Workload Zugriff haben.Availability is can your users get to your workload when they need to.

In der herkömmlichen Anwendungsentwicklung lag der Fokus darauf, die MTBF (Mean Time Between Failures) zu erhöhen.In traditional application development, there has been a focus on increasing the mean time between failures (MTBF). Es wurde viel Mühe darauf verwandt, das System vor Ausfällen zu schützen.Effort was spent trying to prevent the system from failing. Beim Cloud Computing ist aufgrund verschiedener Faktoren eine andere Herangehensweise erforderlich:In cloud computing, a different mindset is required, due to several factors:

  • Verteilte Systeme sind komplex, und ein Ausfall an einem Punkt kann durch das gesamte System kaskadieren.Distributed systems are complex, and a failure at one point can potentially cascade throughout the system.
  • Die Kosten für Cloudumgebungen werden niedrig gehalten, indem Standardhardware eingesetzt wird. Mit gelegentlichen Hardwarefehlern muss also gerechnet werden.Costs for cloud environments are kept low through the use of commodity hardware, so occasional hardware failures must be expected.
  • Anwendungen nutzen oft externe Dienste, die zeitweilig nicht verfügbar sein können oder Benutzer mit hohem Volumen drosseln.Applications often depend on external services, which may become temporarily unavailable or throttle high-volume users.
  • Benutzer erwarten heute, dass eine Anwendung rund um die Uhr verfügbar ist und niemals offline geschaltet wird.Today's users expect an application to be available 24/7 without ever going offline.

All diese Faktoren bedeuten, dass Cloudanwendungen so entworfen werden müssen, dass gelegentliche Ausfälle erwartet werden und die Anwendung danach wiederhergestellt werden kann.All of these factors mean that cloud applications must be designed to expect occasional failures and recover from them. In der Azure-Plattform sind viele Resilienzfeatures bereits integriert.Azure has many resiliency features already built into the platform. Beispiel:For example:

  • Azure Storage, SQL-Datenbank und Cosmos DB bieten integrierte Datenreplikation, sowohl innerhalb einer Region als auch regionsübergreifend.Azure Storage, SQL Database, and Cosmos DB all provide built-in data replication, both within a region and across regions.
  • Azure Managed Disks werden automatisch in verschiedenen Skalierungseinheiten platziert, um die Auswirkungen von Hardwarefehlern zu begrenzen.Azure managed disks are automatically placed in different storage scale units to limit the effects of hardware failures.
  • Virtuelle Computer in einer Verfügbarkeitsgruppe werden auf mehrere Fehlerdomänen verteilt.VMs in an availability set are spread across several fault domains. Eine Fehlerdomäne ist eine Gruppe virtueller Computer, die eine Stromquelle und einen Netzwerkswitch gemeinsam nutzen.A fault domain is a group of VMs that share a common power source and network switch. Durch Verteilen der virtuellen Computer auf verschiedene Fehlerdomänen werden die Auswirkungen von physischen Hardwareausfällen, Netzwerkausfällen oder Stromunterbrechungen begrenzt.Spreading VMs across fault domains limits the impact of physical hardware failures, network outages, or power interruptions.

Nichtsdestoweniger müssen Sie weiterhin Resilienz in Ihre Anwendung integrieren.That said, you still need to build resiliency into your application. Resilienzstrategien können auf allen Ebenen der Architektur angewendet werden.Resiliency strategies can be applied at all levels of the architecture. Einige Risikominderungen sind eher taktischer Natur – beispielsweise das Wiederholen eines Remoteaufrufs nach einem vorübergehenden Netzwerkausfall.Some mitigations are more tactical in nature — for example, retrying a remote call after a transient network failure. Andere Risikominderungen sind eher strategisch, z.B. das Failover der gesamten Anwendung in eine sekundäre Region.Other mitigations are more strategic, such as failing over the entire application to a secondary region. Taktische Risikominderungen können einen großen Unterschied ausmachen.Tactical mitigations can make a big difference. Es passiert eher selten, dass eine gesamte Region ausfällt. Vorübergehende Probleme wie eine Netzwerküberlastung sind wesentlich häufiger – gehen Sie diese also zuerst an.While it's rare for an entire region to experience a disruption, transient problems such as network congestion are more common — so target these first. Die richtigen Überwachungs- und Diagnosemaßnahmen sind ebenfalls von großer Bedeutung, sowohl zum Erkennen von Problemen, wenn diese auftreten, als auch zum Ermitteln der Grundursachen.Having the right monitoring and diagnostics is also important, both to detect failures when they happen, and to find the root causes.

Wenn Sie eine resiliente Anwendung entwerfen, müssen Sie Ihre Verfügbarkeitsanforderungen genau kennen.When designing an application to be resilient, you must understand your availability requirements. Wie viel Ausfallzeit ist akzeptabel?How much downtime is acceptable? Dies ist teilweise eine Kostenfunktion.This is partly a function of cost. Welche Kosten fallen bei potenziellen Ausfallzeiten für Ihr Unternehmen an?How much will potential downtime cost your business? Wie viel sollten Sie investieren, um die Hochverfügbarkeit der Anwendung sicherzustellen?How much should you invest in making the application highly available?

Empfehlungen zur ZuverlässigkeitReliability guidance

SicherheitSecurity

Berücksichtigen Sie die Sicherheit für den gesamten Lebenszyklus einer Anwendung – von Entwurf und Implementierung bis hin zu Bereitstellung und Betrieb.Think about security throughout the entire lifecycle of an application, from design and implementation to deployment and operations. Die Azure-Plattform bietet Schutz vor einer Vielzahl von Bedrohungen, z.B. Eindringen in das Netzwerk und DDoS-Angriffe.The Azure platform provides protections against a variety of threats, such as network intrusion and DDoS attacks. Dennoch müssen Sie weiterhin Sicherheitsfunktionen in Ihre Anwendung und Ihre DevOps-Prozesse integrieren.But you still need to build security into your application and into your DevOps processes.

Im Folgenden finden Sie einige allgemeine Sicherheitsbereiche, die es zu berücksichtigen gilt.Here are some broad security areas to consider.

IdentitätsverwaltungIdentity management

Ziehen Sie in Betracht, Azure Active Directory (Azure AD) zur Authentifizierung und Autorisierung von Benutzern zu verwenden.Consider using Azure Active Directory (Azure AD) to authenticate and authorize users. Azure AD ist ein vollständig verwalteter Identitäts- und Zugriffsverwaltungsdienst.Azure AD is a fully managed identity and access management service. Sie können damit Domänen erstellen, die nur in Azure existieren, oder Azure AD in Ihre eigenen lokalen Active Directory-Identitäten integrieren.You can use it to create domains that exist purely on Azure, or integrate with your on-premises Active Directory identities. Azure AD lässt sich ebenfalls in Office 365, Dynamics CRM Online und viele SaaS-Anwendungen von Drittanbietern integrieren.Azure AD also integrates with Office365, Dynamics CRM Online, and many third-party SaaS applications. Bei Endverbraucheranwendungen ermöglicht Azure Active Directory B2C es Benutzern, sich mit ihren vorhandenen Konten sozialer Netzwerke (z.B. Facebook, Google oder LinkedIn) zu authentifizieren oder ein neues Benutzerkonto zu erstellen, das von Azure AD verwaltet wird.For consumer-facing applications, Azure Active Directory B2C lets users authenticate with their existing social accounts (such as Facebook, Google, or LinkedIn), or create a new user account that is managed by Azure AD.

Wenn Sie eine lokale Active Directory-Umgebung in ein Azure-Netzwerk integrieren möchten, gibt es je nach Anforderungen verschiedene Herangehensweisen.If you want to integrate an on-premises Active Directory environment with an Azure network, several approaches are possible, depending on your requirements. Weitere Informationen finden Sie in unseren Referenzarchitekturen zur Identitätsverwaltung.For more information, see our Identity Management reference architectures.

Schützen Ihrer InfrastrukturProtecting your infrastructure

Kontrollieren Sie den Zugriff auf die von Ihnen bereitgestellten Azure-Ressourcen.Control access to the Azure resources that you deploy. Jedes Azure-Abonnement weist eine Vertrauensstellung mit einem Azure AD-Mandanten auf.Every Azure subscription has a trust relationship with an Azure AD tenant. Verwenden Sie die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC), um Benutzern in Ihrer Organisation die richtigen Berechtigungen für Azure-Ressourcen zu gewähren.Use role-based access control (RBAC) to grant users within your organization the correct permissions to Azure resources. Gewähren Sie den Zugriff, indem Sie Benutzern oder Gruppen für einen bestimmten Bereich RBAC-Rollen zuweisen.Grant access by assigning RBAC role to users or groups at a certain scope. Bei dem Bereich kann es sich um ein Abonnement, eine Ressourcengruppe oder eine einzelne Ressource handeln.The scope can be a subscription, a resource group, or a single resource. Überwachen Sie alle Änderungen an der Infrastruktur.Audit all changes to infrastructure.

AnwendungssicherheitApplication security

Im Allgemeinen gelten die bewährten Methoden für die Sicherheit in der Anwendungsentwicklung auch in der Cloud weiterhin.In general, the security best practices for application development still apply in the cloud. Hierzu gehören Aspekte wie standortunabhängiges SSL, Schutz vor CSRF- und XSS-Angriffen, Verhindern von Angriffen durch Einschleusung von SQL-Befehlen usw.These include things like using SSL everywhere, protecting against CSRF and XSS attacks, preventing SQL injection attacks, and so on.

Cloudanwendungen verwenden häufig verwaltete Dienste, die über Zugriffsschlüssel verfügen.Cloud applications often use managed services that have access keys. Implementieren Sie diese niemals in die Quellcodeverwaltung.Never check these into source control. Speichern Sie Anwendungsgeheimnisse in Azure Key Vault.Consider storing application secrets in Azure Key Vault.

Datensouveränität und -verschlüsselungData sovereignty and encryption

Stellen Sie sicher, dass Ihre Daten in der richtigen geopolitischen Zone bleiben, wenn Sie die Hochverfügbarkeitsfeatures von Azure verwenden.Make sure that your data remains in the correct geopolitical zone when using Azure's highly available. Der georeplizierte Azure-Speicher nutzt das Konzept der Regionspaare in der gleichen geopolitischen Region.Azure's geo-replicated storage uses the concept of a paired region in the same geopolitical region.

Verwenden Sie Key Vault, um Kryptografieschlüssel und Geheimnisse zu sichern.Use Key Vault to safeguard cryptographic keys and secrets. Mit Key Vault können Sie Schlüssel und Geheimnisse mithilfe von Schlüsseln verschlüsseln, die durch Hardwaresicherheitsmodule (HSMs) geschützt werden.By using Key Vault, you can encrypt keys and secrets by using keys that are protected by hardware security modules (HSMs). Viele Speicher- und Datenbankdienste in Azure unterstützen die Verschlüsselung ruhender Daten – hierzu gehören Azure Storage, Azure SQL-Datenbank, Azure Synapse Analytics und Cosmos DB.Many Azure storage and DB services support data encryption at rest, including Azure Storage, Azure SQL Database, Azure Synapse Analytics, and Cosmos DB.

SicherheitsressourcenSecurity resources