Microsoft Azures välstrukturerade ramverkMicrosoft Azure Well-Architected Framework

Azures välstrukturerade ramverk består av en uppsättning vägledande principer som kan användas för att förbättra kvaliteten på en arbetsbelastning.The Azure Well-Architected Framework is a set of guiding tenets that can be used to improve the quality of a workload. Ramverket består av fem grundpelare för en utmärkt arkitektur: Kostnadsoptimering, verksamhetsutveckling, prestandaeffektivitet, tillförlitlighet och säkerhet.The framework consists of five pillars of architecture excellence: Cost Optimization, Operational Excellence, Performance Efficiency, Reliability, and Security.

Information om hur du utvärderar din arbetsbelastning med hjälp av principerna i Microsoft Azures välstrukturerade ramverk finns i översikten över Microsoft Azures välstrukturerade ramverk.To assess your workload using the tenets found in the Microsoft Azure Well-Architected Framework, see the Microsoft Azure Well-Architected Review.

GrundpelarePillar BeskrivningDescription
KostnadsoptimeringCost Optimization Hantera kostnader för att maximera värdet.Managing costs to maximize the value delivered.
VerksamhetsutvecklingOperational Excellence Driftsprocesser som håller ett system igång och i produktion.Operations processes that keep a system running in production.
PrestandaeffektivitetPerformance Efficiency Systemets förmåga att hantera belastningsförändringar.The ability of a system to adapt to changes in load.
TillförlitlighetReliability Systemets förmåga att hantera och återställa fel på ett bra sätt.The ability of a system to recover from failures and continue to function.
SäkerhetSecurity Att skydda program och data från hot.Protecting applications and data from threats.

KostnadsoptimeringCost Optimization

När du utformar en molnlösning bör du fokusera på att generera inkrementella värden tidigt.When you are designing a cloud solution, focus on generating incremental value early. Tillämpa principerna för Skapa – mät – lär för att få en kortare tid till marknaden och undvika kapitalintensiva lösningar.Apply the principles of Build-Measure-Learn, to accelerate your time to market while avoiding capital-intensive solutions. Använd metoden betala per användning för din arkitektur och investera i att skala ut i stället för att leverera en första version som kräver stora investeringar.Use the pay-as-you-go strategy for your architecture, and invest in scaling out, rather than delivering a large investment first version. Överväg alternativkostnader i din arkitektur och balansen mellan att vara först med en viss lösning eller att vara en snabb tvåa.Consider opportunity costs in your architecture, and the balance between first mover advantage versus "fast follow". Använd kostnadsberäkningar för att beräkna de första kostnaderna och driftkostnader.Use the cost calculators to estimate the initial cost and operational costs. Etablera slutligen principer, budgetar och kontroller som anger kostnadsbegränsningar för din lösning.Finally, establish policies, budgets, and controls that set cost limits for your solution.

KostnadsvägledningCost guidance

DriftseffektivitetOperational Excellence

Den här grundpelaren handlar om operativa processer som håller en tillämpning i drift i produktionen.This pillar covers the operations processes that keep an application running in production. Distributioner måste vara pålitliga och förutsägbara.Deployments must be reliable and predictable. De bör automatiseras för att minska risken för mänskliga fel.They should be automated to reduce the chance of human error. De bör vara en snabb rutinunderhållsprocess, så att de inte fördröjer nya funktioner eller felkorrigeringar.They should be a fast and routine process, so they don't slow down the release of new features or bug fixes. Det är lika viktigt att snabbt kunna återställa eller göra framåtriktade återställningar om det är problem med en uppdatering.Equally important, you must be able to quickly roll back or roll forward if an update has problems.

Övervakning och diagnostik är avgörande.Monitoring and diagnostics are crucial. Molnprogram körs i ett fjärranslutet datacenter där du inte har full kontroll över infrastrukturen, eller i vissa fall över operativsystemet.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. I en stor tillämpning är det opraktiskt att behöva logga in på virtuella datorer för att felsöka ett problem eller gå igenom loggfiler.In a large application, it's not practical to log into VMs to troubleshoot an issue or sift through log files. I PaaS-tjänster kanske det inte ens finns en dedikerad virtuell dator att logga in på.With PaaS services, there may not even be a dedicated VM to log into. Övervaknings- och diagnostikfunktionerna ger inblick i systemet, så att du vet när och var fel uppstår.Monitoring and diagnostics give insight into the system, so that you know when and where failures occur. Alla system måste kunna övervakas.All systems must be observable. Använd ett gemensamt, enhetligt loggningsschema som gör att du kan jämföra och relatera händelser mellan olika system.Use a common and consistent logging schema that lets you correlate events across systems.

Övervaknings- och diagnostikprocessen har flera faser:The monitoring and diagnostics process has several distinct phases:

  • Instrumentering.Instrumentation. Generera rådata från programloggar, webbserverloggar och diagnostikfunktioner som är inbyggda i Azure-plattformen och andra källor.Generating the raw data, from application logs, web server logs, diagnostics built into the Azure platform, and other sources.
  • Insamling och lagring.Collection and storage. Konsolidera data på samma plats.Consolidating the data into one place.
  • Analys och diagnostik.Analysis and diagnosis. Felsök problem och se övergripande hälsostatus.To troubleshoot issues and see the overall health.
  • Visualisering och aviseringar.Visualization and alerts. Använd telemetridata för att se trender och skicka aviseringar till driftteamet.Using telemetry data to spot trends or alert the operations team.

Använd DevOps-checklistan för att granska din design ur hanterings- och DevOps-synpunkt.Use the DevOps checklist to review your design from a management and DevOps standpoint.

Vägledning för verksamhetsutvecklingOperational excellence guidance

PrestandaeffektivitetPerformance efficiency

Prestandaeffektivitet handlar om att effektivt skala arbetsbelastningen baserat på användarnas behov.Performance efficiency is the ability of your workload to scale to meet the demands placed on it by users in an efficient manner. Normalt gör du detta genom att använda lämplig skalning och implementera PaaS-produkter med inbyggd skalning.The main ways to achieve this are by using scaling appropriately and implementing PaaS offerings that have scaling built in.

Det finns två sätt som ett program kan skalas på.There are two main ways that an application can scale. Vertikal skalning (skala upp) innebär att öka kapaciteten för en resurs, till exempel med hjälp av en större VM-storlek.Vertical scaling (scaling up) means increasing the capacity of a resource, for example by using a larger VM size. Horisontell skalning (skala ut) är att lägga till nya instanser av en resurs, till exempel virtuella datorer eller databasrepliker.Horizontal scaling (scaling out) is adding new instances of a resource, such as VMs or database replicas.

Horisontell skalning har några stora fördelar jämfört med vertikal skalning:Horizontal scaling has significant advantages over vertical scaling:

  • Verklig molnskala.True cloud scale. Programmen kan utformas för att köra på hundratals eller tusentals noder i en skala som inte är möjlig på en enda nod.Applications can be designed to run on hundreds or even thousands of nodes, reaching scales that are not possible on a single node.
  • Horisontell skalning är elastisk.Horizontal scale is elastic. Du kan lägga till fler instanser om belastningen ökar och ta bort dem under lugnare perioder.You can add more instances if load increases, or remove them during quieter periods.
  • Utskalningen kan aktiveras automatiskt, antingen enligt ett schema eller som reaktion på ändringar i belastningen.Scaling out can be triggered automatically, either on a schedule or in response to changes in load.
  • Det kan vara billigare att skala ut än att skapa upp.Scaling out may be cheaper than scaling up. Att köra flera små, virtuella datorer kan kosta mindre än en enda stor virtuell dator.Running several small VMs can cost less than a single large VM.
  • Horisontell skalning kan också öka återhämtningskapaciteten genom att lägga till mer redundans.Horizontal scaling can also improve resiliency, by adding redundancy. Om en instans skulle krascha fortsätter programmet köras.If an instance goes down, the application keeps running.

En fördel med vertikal skalning är att det går att göra utan några ändringar i programmet.An advantage of vertical scaling is that you can do it without making any changes to the application. Men du kommer att nå en gräns där du inte kan skala upp mer.But at some point you'll hit a limit, where you can't scale any up any more. Om du behöver ytterligare skalning då, måste den vara horisontell.At that point, any further scaling must be horizontal.

Horisontell skalning måste finnas inbyggd i systemets utformning.Horizontal scale must be designed into the system. Du kan exempelvis skala ut virtuella datorer genom att placera dem bakom en lastbalanserare.For example, you can scale out VMs by placing them behind a load balancer. Men varje virtuell dator i poolen måste kunna hantera alla klientbegäranden, så programmet måste vara statuslöst eller lagra status externt (till exempel i en distribuerad 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). I hanterade PaaS-tjänster finns ofta horisontell skalning och automatisk skalning inbyggt.Managed PaaS services often have horizontal scaling and autoscaling built in. Det är en stor fördel med PaaS-tjänster att det är så enkelt att skala tjänsterna.The ease of scaling these services is a major advantage of using PaaS services.

Att bara lägga till flera instanser innebär inte att ett program kan skaländras.Just adding more instances doesn't mean an application will scale, however. Det kanske bara gör att flaskhalsen hamnar någon annanstans.It might simply push the bottleneck somewhere else. Om du skalar en webbklientdel för att hantera fler klientförfrågningar kan det utlösa låskonkurrens i databasen.For example, if you scale a web front end to handle more client requests, that might trigger lock contentions in the database. Då måste du överväga ytterligare åtgärder, till exempel optimistisk samtidighet eller datapartitionering, för att möjliggöra ett större flöde till databasen.You would then need to consider additional measures, such as optimistic concurrency or data partitioning, to enable more throughput to the database.

Utför alltid prestanda- och belastningstester för att hitta potentiella flaskhalsar.Always conduct performance and load testing to find these potential bottlenecks. Statuskänsliga delar i ett system, som databaser, är den vanligaste orsaken till flaskhalsar. De kräver noggrann design för horisontell skalning.The stateful parts of a system, such as databases, are the most common cause of bottlenecks, and require careful design to scale horizontally. Att lösa problem med en flaskhals kan visa på andra flaskhalsar på andra ställen.Resolving one bottleneck may reveal other bottlenecks elsewhere.

Använd checklistan för prestandaeffektivitet och granska din design ur skalbarhetssynpunkt.Use the Performance efficiency checklist to review your design from a scalability standpoint.

Vägledning för prestandaeffektivitetPerformance efficiency guidance

TillförlitlighetReliability

En tillförlitlig arbetsbelastning är en arbetsbelastning som är både elastisk och tillgänglig.A reliable workload is one that is both resilient and available. Återhämtning och elasticitet handlar om systemets förmåga att återhämta sig efter fel och fortsätta fungera.Resiliency is the ability of the system to recover from failures and continue to function. Målet med återhämtning är att kunna återställa programmet till ett fullt fungerande tillstånd efter fel.The goal of resiliency is to return the application to a fully functioning state after a failure occurs. En tillgänglig arbetsbelastning är en arbetsbelastning som användarna kan komma åt när de behöver den.Availability is whether your users can access your workload when they need to.

I traditionell programutveckling har man fokuserat på att öka genomsnittstiden mellan fel (MTBF – mean time betwen failures).In traditional application development, there has been a focus on increasing the mean time between failures (MTBF). Man försökte förhindra att fel uppstod i systemet.Effort was spent trying to prevent the system from failing. I molnanvändningen krävs andra sätt att tänka på grund av flera olika faktorer:In cloud computing, a different mindset is required, due to several factors:

  • Distribuerade system är komplexa, och ett fel på en plats kan potentiellt störa hela systemet.Distributed systems are complex, and a failure at one point can potentially cascade throughout the system.
  • Kostnaden för molnmiljöer hålls nere genom att vanlig maskinvara används. Det innebär att maskinvarufel då och då kan förväntas.Costs for cloud environments are kept low through the use of commodity hardware, so occasional hardware failures must be expected.
  • Programmen är ofta beroende av externa tjänster som kan bli tillfälligt otillgängliga eller vara begränsande för användare med stora volymer.Applications often depend on external services, which may become temporarily unavailable or throttle high-volume users.
  • Dagens användare förväntar sig ett programmen ska vara tillgängliga dygnet runt utan att någonsin vara offline.Today's users expect an application to be available 24/7 without ever going offline.

Alla de här faktorerna gör att molntillämpningar måste utforma så att fel då och då förväntas, och tillämpningarna kan återställa sig själva efteråt.All of these factors mean that cloud applications must be designed to expect occasional failures and recover from them. I Azure finns många återhämtningsfunktioner redan inbyggda i plattformen.Azure has many resiliency features already built into the platform. Ett exempel:For example:

  • Azure Storage, SQL Database och Cosmos DB har inbyggd datareplikering, både inom en region och över flera regioner.Azure Storage, SQL Database, and Cosmos DB all provide built-in data replication, both within a region and across regions.
  • Hanterade diskar i Azure placeras automatiskt i olika lagringsskalningsenheter för att begränsa effekterna av maskinvarufel.Azure managed disks are automatically placed in different storage scale units to limit the effects of hardware failures.
  • Virtuella datorer i en tillgänglighetsuppsättning sprids över flera feldomäner.VMs in an availability set are spread across several fault domains. En feldomän är en grupp virtuella datorer som delar samma strömkälla och nätverksswitch.A fault domain is a group of VMs that share a common power source and network switch. Detta begränsar effekten av potentiella fel på fysisk maskinvara, nätverksstörningar och strömavbrott.Spreading VMs across fault domains limits the impact of physical hardware failures, network outages, or power interruptions.

Du måste ändå bygga in återhämtning i ditt program.That said, you still need to build resiliency into your application. Återhämtningsstrategier kan användas på alla nivåer i arkitekturen.Resiliency strategies can be applied at all levels of the architecture. Vissa åtgärder är taktiska till sin natur, som att göra nya fjärranropsförsök efter ett tillfälligt nätverksfel.Some mitigations are more tactical in nature — for example, retrying a remote call after a transient network failure. Andra åtgärder är mer strategiska, som att redundansväxla hela tillämpningen till en sekundär region.Other mitigations are more strategic, such as failing over the entire application to a secondary region. Taktiska åtgärder kan göra stor skillnad.Tactical mitigations can make a big difference. Det är ovanligt att ett avbrott gäller en hel region, medan tillfälliga problem som överbelastning är vanligare. Du bör därför rikta in dig på dem först.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. Det är också viktigt att ha rätt övervakning och diagnostik, både för att upptäcka fel när de inträffar och för att hitta rotorsaken.Having the right monitoring and diagnostics is also important, both to detect failures when they happen, and to find the root causes.

När du skapar ett program med återhämtningsförmåga måste du utvärdera kraven på tillgänglighet.When designing an application to be resilient, you must understand your availability requirements. Hur stora driftstopp är okej?How much downtime is acceptable? Detta beror delvis på kostnaden.This is partly a function of cost. Hur mycket kostar eventuell nedtid för företaget?How much will potential downtime cost your business? Hur mycket bör du investera i hög tillgänglighet för programmet?How much should you invest in making the application highly available?

Vägledning om tillförlitlighetReliability guidance

SäkerhetSecurity

Tänk på säkerheten i tillämpningens hela livscykel, från design och implementering till distribution och drift.Think about security throughout the entire lifecycle of an application, from design and implementation to deployment and operations. Azure-plattformen ger skydd mot en mängd hot, som intrång och DDoS-attacker.The Azure platform provides protections against a variety of threats, such as network intrusion and DDoS attacks. Du måste ändå bygga in säkerhet i din tillämpning och dina DevOps-processer.But you still need to build security into your application and into your DevOps processes.

Här är några breda säkerhetsområden att ta med i planeringen.Here are some broad security areas to consider.

IdentitetshanteringIdentity management

Överväg att använda Azure Active Directory (Azure AD) för att autentisera och auktorisera användare.Consider using Azure Active Directory (Azure AD) to authenticate and authorize users. Azure AD är en fullständigt hanterad tjänst för identitets- och åtkomsthantering.Azure AD is a fully managed identity and access management service. Du kan använda den för att skapa domäner som enbart finns på Azure, eller integrera dem med dina lokala Active Directory-identiteter.You can use it to create domains that exist purely on Azure, or integrate with your on-premises Active Directory identities. Azure AD kan även integreras med Office 365, Dynamics CRM Online och många SaaS-program från tredje part.Azure AD also integrates with Office365, Dynamics CRM Online, and many third-party SaaS applications. För program med användargränssnitt mot kunden kan Azure Active Directory B2C låta användarna autentisera sig med sina befintliga sociala konton (till exempel Facebook, Google eller LinkedIn), eller skapa ett nytt användarkonto som hanteras av Azure AD.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.

Om du vill integrera en lokal Active Directory-miljö med ett Azure-nätverk kan du göra det på flera olika sätt, beroende på vilka krav som finns.If you want to integrate an on-premises Active Directory environment with an Azure network, several approaches are possible, depending on your requirements. Mer information finns i våra referensarkitekturer för Identitetshantering.For more information, see our Identity Management reference architectures.

Skydda din infrastrukturProtecting your infrastructure

Styr åtkomsten till Azure-resurser som du distribuerar.Control access to the Azure resources that you deploy. Alla Azure-prenumerationer har en förtroenderelation till en Azure AD-instans.Every Azure subscription has a trust relationship with an Azure AD tenant. Använd rollbaserad Azure-åtkomstkontroll (Azure RBAC) för att ge användarna i organisationen rätt behörighet till Azure-resurser.Use Azure role-based access control (Azure RBAC) to grant users within your organization the correct permissions to Azure resources. Bevilja åtkomst genom att tilldela Azure-roller till användare eller grupper för ett visst omfång.Grant access by assigning Azure roles to users or groups at a certain scope. Omfånget kan vara en prenumeration, en resursgrupp eller en enskild resurs.The scope can be a subscription, a resource group, or a single resource. Granska alla ändringar i infrastrukturen.Audit all changes to infrastructure.

ProgramsäkerhetApplication security

I allmänhet gäller de rekommenderade säkerhetsmetoderna för programutveckling även i molnet.In general, the security best practices for application development still apply in the cloud. Det kan till exempel vara sådant som att använda SSL överallt, skydda mot CSRF- och XSS-attacker, förhindra SQL-injektionsattacker och så vidare.These include things like using SSL everywhere, protecting against CSRF and XSS attacks, preventing SQL injection attacks, and so on.

Molnprogram använder ofta hanterade tjänster som har åtkomstnycklar.Cloud applications often use managed services that have access keys. Använd aldrig dessa till källkontroll.Never check these into source control. Överväg att lagra programhemligheter i Azure Key Vault.Consider storing application secrets in Azure Key Vault.

Datasuveränitet och krypteringData sovereignty and encryption

Se till att dina data är i rätt geopolitiska zon när du använder Azure-datatjänster.Make sure that your data remains in the correct geopolitical zone when using Azure data services. I Azures geo-replikerade lagring används begreppet parkopplad region i samma geopolitiska region.Azure's geo-replicated storage uses the concept of a paired region in the same geopolitical region.

Använd Key Vault för att skydda krypteringsnycklar och hemligheter.Use Key Vault to safeguard cryptographic keys and secrets. Med Key Vault kan du kryptera nycklar och hemligheter med nycklar som skyddas av maskinvarusäkerhetsmoduler (HSM).By using Key Vault, you can encrypt keys and secrets by using keys that are protected by hardware security modules (HSMs). Många Azure-lagrings- och DB-tjänster kan användas med datakryptering i viloläge, inklusive Azure Storage, Azure SQL Database, Azure Synapse Analytics och 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.

SäkerhetsresurserSecurity resources