Well-Architected Framework do Microsoft AzureMicrosoft Azure Well-Architected Framework

O Well-Architected Framework do Azure é um conjunto de filosofias de orientação que podem ser usadas para melhorar a qualidade de uma carga de trabalho.The Azure Well-Architected Framework is a set of guiding tenets that can be used to improve the quality of a workload. O framework consiste em cinco pilares de excelência em arquitetura: Otimização de Custos, Excelência Operacional, Eficiência de Desempenho, Fiabilidade e Segurança.The framework consists of five pillars of architecture excellence: Cost Optimization, Operational Excellence, Performance Efficiency, Reliability, and Security.

Para avaliar a sua carga de trabalho utilizando os princípios encontrados no Well-Architected Framework do Microsoft Azure, consulte a Revisão do Well-Architected Framework do Microsoft Azure.To assess your workload using the tenets found in the Microsoft Azure Well-Architected Framework, see the Microsoft Azure Well-Architected Review.

PilarPillar DescriçãoDescription
Otimização de CustosCost Optimization Gerir os custos para maximizar o valor.Managing costs to maximize the value delivered.
Excelência OperacionalOperational Excellence Os processos de operações que mantêm um sistema em execução na produção.Operations processes that keep a system running in production.
Eficiência de DesempenhoPerformance Efficiency A capacidade que um sistema tem de se adaptar às alterações na carga.The ability of a system to adapt to changes in load.
FiabilidadeReliability A capacidade de um sistema em recuperar de falhas e continuar a funcionar.The ability of a system to recover from failures and continue to function.
SegurançaSecurity A proteção das aplicações e dos dados contra ameaças.Protecting applications and data from threats.

Otimização de CustosCost Optimization

Quando estiver a estruturar uma solução cloud, concentre-se na geração de valor incremental antecipadamente.When you are designing a cloud solution, focus on generating incremental value early. Aplique os princípios de Criar-Medir-Aprender para acelerar o tempo de colocação no mercado ao mesmo tempo que evita soluções com utilização intensiva de capital.Apply the principles of Build-Measure-Learn, to accelerate your time to market while avoiding capital-intensive solutions. Aplique a estratégia pay as you go à sua arquitetura e invista na ampliação em vez de no fornecimento de uma primeira versão que exija um elevado investimento.Use the pay-as-you-go strategy for your architecture, and invest in scaling out, rather than delivering a large investment first version. Considere os custos das oportunidades na sua arquitetura e o equilíbrio entre a vantagem do primeiro a avançar face a "copiar um modelo comprovado".Consider opportunity costs in your architecture, and the balance between first mover advantage versus "fast follow". Utilize as calculadoras de custo para estimar os custos iniciais e operacionais.Use the cost calculators to estimate the initial cost and operational costs. Por fim, estabeleça políticas, orçamentos e controlos que definam os limites de custos da sua solução.Finally, establish policies, budgets, and controls that set cost limits for your solution.

Orientação sobre custosCost guidance

Excelência OperacionalOperational Excellence

Este pilar aborda os processos de operações que mantêm uma aplicação em execução na produção.This pillar covers the operations processes that keep an application running in production. As implementações têm de ser fiáveis e previsíveis.Deployments must be reliable and predictable. Devem ser automatizadas de forma a reduzir as hipóteses de erro humano.They should be automated to reduce the chance of human error. O processo em si deve ser rápido e rotineiro, para que não abrande o lançamento de novas funcionalidades ou correções de erros.They should be a fast and routine process, so they don't slow down the release of new features or bug fixes. Igualmente importante, tem de ter a capacidade de reverter ou efetuar um rollforward rapidamente na eventualidade de uma atualização apresentar problemas.Equally important, you must be able to quickly roll back or roll forward if an update has problems.

A monitorização e o diagnóstico são fundamentais.Monitoring and diagnostics are crucial. As aplicações na cloud são executadas num datacenter remoto onde o utilizador não tem controlo total sobre a infraestrutura ou, em alguns casos, o sistema operativo.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. Numa aplicação grande, não é prático iniciar sessão nas VMs para resolver um problema ou pesquisar os ficheiros de registo.In a large application, it's not practical to log into VMs to troubleshoot an issue or sift through log files. Com os serviços PaaS, pode nem sequer existir uma VM dedicada para iniciar sessão.With PaaS services, there may not even be a dedicated VM to log into. A monitorização e o diagnóstico fornecem elementos sobre o sistema, para que saiba quando e onde ocorrem falhas.Monitoring and diagnostics give insight into the system, so that you know when and where failures occur. Todos os sistemas têm de ser observáveis.All systems must be observable. Utilize um esquema de registo comum e consistente que lhe permita correlacionar eventos nos sistemas.Use a common and consistent logging schema that lets you correlate events across systems.

O processo de monitorização e diagnóstico tem várias fases distintas:The monitoring and diagnostics process has several distinct phases:

  • Instrumentação.Instrumentation. Gerar os dados não processados a partir de registos de aplicações, registos de servidores Web, diagnósticos incorporados na plataforma do Azure e outras fontes.Generating the raw data, from application logs, web server logs, diagnostics built into the Azure platform, and other sources.
  • Recolha e armazenamento.Collection and storage. Consolidar os dados num local.Consolidating the data into one place.
  • Análise e diagnóstico.Analysis and diagnosis. Para resolver problemas e ver o estado de funcionamento geral.To troubleshoot issues and see the overall health.
  • Visualização e alertas.Visualization and alerts. Utilizar dados de telemetria para detetar tendências ou alertar a equipa de operações.Using telemetry data to spot trends or alert the operations team.

Utilize a Lista de verificação de DevOps para rever a sua conceção de um ponto de vista de gestão e de DevOps.Use the DevOps checklist to review your design from a management and DevOps standpoint.

Orientação de excelência operacionalOperational excellence guidance

Eficiência de desempenhoPerformance efficiency

Eficiência de desempenho é a capacidade da sua carga de trabalho para dimensionar para satisfazer as exigências que os utilizadores lhe colocam de forma eficiente.Performance efficiency is the ability of your workload to scale to meet the demands placed on it by users in an efficient manner. As principais formas de o conseguir são utilizando o dimensionamento adequado e implementando as ofertas de PaaS que têm dimensionamento incorporado.The main ways to achieve this are by using scaling appropriately and implementing PaaS offerings that have scaling built in.

Existem duas formas principais de uma aplicação poder dimensionar.There are two main ways that an application can scale. Dimensionamento vertical (aumento vertical) significa aumentar a capacidade de um recurso, por exemplo, com uma VM com um tamanho maior.Vertical scaling (scaling up) means increasing the capacity of a resource, for example by using a larger VM size. Dimensionamento horizontal (aumento horizontal) significa adicionar novas instâncias de um recurso, tal como VMs ou réplicas de base de dados.Horizontal scaling (scaling out) is adding new instances of a resource, such as VMs or database replicas.

O dimensionamento horizontal possui vantagens significativas em relação ao dimensionamento vertical:Horizontal scaling has significant advantages over vertical scaling:

  • Verdadeiro dimensionamento da cloud.True cloud scale. As aplicações podem ser criadas para executar centenas ou mesmo milhares de nós, atingindo dimensionamentos que não são possíveis num único nó.Applications can be designed to run on hundreds or even thousands of nodes, reaching scales that are not possible on a single node.
  • O dimensionamento horizontal é elástico.Horizontal scale is elastic. Pode adicionar mais instâncias se houver um aumento da carga ou removê-las durante períodos mais calmos.You can add more instances if load increases, or remove them during quieter periods.
  • O aumento horizontal pode ser acionado automaticamente, com base numa agenda ou em resposta a alterações na carga.Scaling out can be triggered automatically, either on a schedule or in response to changes in load.
  • O aumento horizontal pode ser mais barato do que o aumento vertical.Scaling out may be cheaper than scaling up. A execução de várias VMs pequenas pode custar menos do que uma única VM grande.Running several small VMs can cost less than a single large VM.
  • O dimensionamento horizontal também pode melhorar a resiliência ao adicionar redundância.Horizontal scaling can also improve resiliency, by adding redundancy. Se uma instância ficar inativa, a aplicação permanecerá em execução.If an instance goes down, the application keeps running.

Uma vantagem do dimensionamento vertical é que pode fazê-lo sem realizar qualquer alteração à aplicação.An advantage of vertical scaling is that you can do it without making any changes to the application. Contudo, a uma determinada altura, vai atingir um limite no qual não pode dimensionar mais.But at some point you'll hit a limit, where you can't scale any up any more. Nessa altura, qualquer outro dimensionamento tem de ser horizontal.At that point, any further scaling must be horizontal.

O dimensionamento horizontal tem de ser estruturado no sistema.Horizontal scale must be designed into the system. Por exemplo, pode aumentar horizontalmente as VMs ao colocá-las atrás de um balanceador de carga.For example, you can scale out VMs by placing them behind a load balancer. Porém, cada VM no conjunto tem de ter a capacidade de lidar com qualquer pedido de cliente, pelo que a aplicação não deve ter estados nem deve armazenar os estados externamente (digamos, uma cache distribuída).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). Frequentemente, os serviços PaaS geridos têm dimensionamento horizontal e dimensionamento automático incorporados.Managed PaaS services often have horizontal scaling and autoscaling built in. A facilidade de dimensionamento destes serviços é uma das principais vantagens da utilização dos serviços PaaS.The ease of scaling these services is a major advantage of using PaaS services.

Porém, o simples ato de adicionar mais instâncias não significa que uma aplicação vá ser dimensionada.Just adding more instances doesn't mean an application will scale, however. Pode simplesmente deslocar o estrangulamento para outro local.It might simply push the bottleneck somewhere else. Por exemplo, pode dimensionar um front-end da Web para processar mais pedidos de clientes, os quais podem acionar disputas de bloqueio na base de dados.For example, if you scale a web front end to handle more client requests, that might trigger lock contentions in the database. Em seguida, terá de considerar medidas adicionais, tal como a simultaneidade otimista ou a criação de partições de dados, para ativar um maior débito para a base de dados.You would then need to consider additional measures, such as optimistic concurrency or data partitioning, to enable more throughput to the database.

Realize sempre os testes de desempenho e carga para localizar potenciais estrangulamentos.Always conduct performance and load testing to find these potential bottlenecks. As partes de um sistema sem estado, tal como as bases de dados, são a causa mais comum dos estrangulamentos e precisam de uma conceção cuidadosa para poderem aumentar horizontalmente.The stateful parts of a system, such as databases, are the most common cause of bottlenecks, and require careful design to scale horizontally. A resolução de um estrangulamento pode revelar outros estrangulamentos noutro local.Resolving one bottleneck may reveal other bottlenecks elsewhere.

Utilize a lista de verificação de eficiência de desempenho para rever o seu design do ponto de vista da escalabilidade.Use the Performance efficiency checklist to review your design from a scalability standpoint.

Orientação para a eficiência do desempenhoPerformance efficiency guidance

FiabilidadeReliability

Uma carga de trabalho fiável é uma carga de trabalho que é resiliente e disponível.A reliable workload is one that is both resilient and available. A resiliência é a capacidade do sistema em recuperar de falhas e continuar a funcionar.Resiliency is the ability of the system to recover from failures and continue to function. O objetivo da resiliência é fazer com que a aplicação volte para um estado totalmente funcional após a ocorrência de uma falha.The goal of resiliency is to return the application to a fully functioning state after a failure occurs. A disponibilidade determina se os seus utilizadores podem aceder à sua carga de trabalho quando precisam.Availability is whether your users can access your workload when they need to.

No desenvolvimento de aplicações tradicional, a ênfase tem recaído sobre o aumento do tempo médio entre falhas (MTBF).In traditional application development, there has been a focus on increasing the mean time between failures (MTBF). Foram realizados esforços para tentar impedir que o sistema falhe.Effort was spent trying to prevent the system from failing. Na computação na cloud, é preciso uma mentalidade diferente, por vários fatores:In cloud computing, a different mindset is required, due to several factors:

  • Os sistemas distribuídos são complexos e uma falha num momento pode potencialmente propagar-se por todo o sistema.Distributed systems are complex, and a failure at one point can potentially cascade throughout the system.
  • Os custos dos ambientes na cloud são mantidos baixos através da utilização de hardware base, por isso, são esperadas falhas de hardware ocasionais.Costs for cloud environments are kept low through the use of commodity hardware, so occasional hardware failures must be expected.
  • As aplicações dependem muitas vezes de serviços externos, os quais podem ficar temporariamente indisponíveis ou limitar os utilizadores de volume elevado.Applications often depend on external services, which may become temporarily unavailable or throttle high-volume users.
  • Os utilizadores atuais esperam que uma aplicação esteja disponível 24 horas por dia, 7 dias por semana, e que nunca fique offline.Today's users expect an application to be available 24/7 without ever going offline.

Todos estes fatores significam que as aplicações na cloud têm de ser concebidas já a contar com falhas ocasionais e a sua recuperação.All of these factors mean that cloud applications must be designed to expect occasional failures and recover from them. O Azure tem muitas funcionalidades de resiliência já incorporadas na plataforma.Azure has many resiliency features already built into the platform. Por exemplo:For example:

  • O Armazenamento do Microsoft Azure, a Base de Dados SQL e a Cosmos DB fornecem uma replicação de dados incorporada, tanto numa como em várias regiões.Azure Storage, SQL Database, and Cosmos DB all provide built-in data replication, both within a region and across regions.
  • Os discos geridos do Azure são posicionados automaticamente em unidades de escala de armazenamento diferentes para limitar os efeitos das falhas de hardware.Azure managed disks are automatically placed in different storage scale units to limit the effects of hardware failures.
  • As VMs num conjunto de disponibilidade são distribuídas por vários domínios de falhas.VMs in an availability set are spread across several fault domains. Um domínio de falha é um grupo de VMs que partilham a mesma origem de energia e o mesmo comutador de rede física.A fault domain is a group of VMs that share a common power source and network switch. A propagação de VMs em domínios de falha limita o impacto das falhas de hardware físico, da indisponibilidade de rede ou das falhas de energia.Spreading VMs across fault domains limits the impact of physical hardware failures, network outages, or power interruptions.

Dito isto, vai ter de criar na mesma resiliência na sua aplicação.That said, you still need to build resiliency into your application. As estratégias de resiliência podem ser aplicadas em todos os níveis da arquitetura.Resiliency strategies can be applied at all levels of the architecture. Algumas mitigações são de natureza mais tática — por exemplo, repetir uma chamada remota após uma falha de rede transitória.Some mitigations are more tactical in nature — for example, retrying a remote call after a transient network failure. Outras mitigações são mais estratégicas, tal como ativações pós-falha da aplicação completa para uma região secundária.Other mitigations are more strategic, such as failing over the entire application to a secondary region. As mitigações táticas podem fazer uma grande diferença.Tactical mitigations can make a big difference. Embora seja rara a ocorrência de uma interrupção de toda a região, os problemas transitórios, tal como o congestionamento da rede são mais comuns — assim, aborde esses primeiro.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. É igualmente importante possuir a monitorização e o diagnóstico adequados, tanto para detetar falhas quando estas acontecem como para encontrar a raiz dos problemas.Having the right monitoring and diagnostics is also important, both to detect failures when they happen, and to find the root causes.

Ao conceber uma aplicação para que seja resiliente, deve compreender os requisitos de disponibilidade.When designing an application to be resilient, you must understand your availability requirements. Qual é o período de indisponibilidade aceitável?How much downtime is acceptable? Esta é, em parte, uma função de custo.This is partly a function of cost. Qual será o custo do período de indisponibilidade para o seu negócio?How much will potential downtime cost your business? Quanto deve investir para que a aplicação seja de elevada disponibilidade?How much should you invest in making the application highly available?

Orientação de fiabilidadeReliability guidance

SegurançaSecurity

Pense na segurança ao longo de todo o ciclo de vida de uma aplicação, desde a conceção e implementação até à sua execução e operações.Think about security throughout the entire lifecycle of an application, from design and implementation to deployment and operations. A plataforma do Azure fornece proteção contra uma variedade de ameaças, tal como intrusão de rede e ataques DDoS.The Azure platform provides protections against a variety of threats, such as network intrusion and DDoS attacks. Mas, ainda assim, terá integrar segurança na aplicação e nos processos de DevOps.But you still need to build security into your application and into your DevOps processes.

Seguem-se algumas áreas de segurança abrangentes a ter em consideração.Here are some broad security areas to consider.

Gestão de identidadesIdentity management

Considere utilizar o Azure Active Directory (Azure AD) para autenticar e autorizar utilizadores.Consider using Azure Active Directory (Azure AD) to authenticate and authorize users. O Azure AD é um serviço de gestão de identidades e acesso completamente gerido.Azure AD is a fully managed identity and access management service. Pode utilizá-lo para criar os domínios que existem puramente no Azure ou integrá-los com as suas identidades do Active Directory no local.You can use it to create domains that exist purely on Azure, or integrate with your on-premises Active Directory identities. O Azure AD também pode ser integrado com o Office 365, o Dynamics CRM Online e muitas aplicações SaaS de terceiros.Azure AD also integrates with Office365, Dynamics CRM Online, and many third-party SaaS applications. Para aplicações direcionadas para o consumidor, o Azure Active Directory B2C permite que os utilizadores façam a autenticação com as suas contas de redes sociais existentes (tal como Facebook, Google ou LinkedIn) ou que criem uma nova conta de utilizador gerida pelo 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.

Se pretender integrar um ambiente do Active Directory no local com uma rede do Azure, dependendo dos seus requisitos, estão disponíveis várias abordagens.If you want to integrate an on-premises Active Directory environment with an Azure network, several approaches are possible, depending on your requirements. Para obter mais informações, veja as nossas arquiteturas de referência de Gestão de Identidades.For more information, see our Identity Management reference architectures.

Proteger a infraestruturaProtecting your infrastructure

Controle o acesso aos recursos do Azure que implementa.Control access to the Azure resources that you deploy. Cada subscrição do Azure tem uma relação de confiança com um inquilino do Azure AD.Every Azure subscription has a trust relationship with an Azure AD tenant. Utilize o controlo de acesso baseado em funções do Azure (RBAC do Azure) para conceder aos utilizadores na sua organização as permissões adequadas aos recursos do Azure.Use Azure role-based access control (Azure RBAC) to grant users within your organization the correct permissions to Azure resources. Conceda acesso ao atribuir funções do Azure a utilizadores ou grupos num determinado âmbito.Grant access by assigning Azure roles to users or groups at a certain scope. O âmbito pode ser uma subscrição, um grupo de recursos ou um único recurso.The scope can be a subscription, a resource group, or a single resource. Faça uma Auditoria a todas as alterações à infraestrutura.Audit all changes to infrastructure.

Segurança de aplicaçõesApplication security

Em geral, as melhores práticas de segurança para o desenvolvimento de aplicações são aplicadas na cloud.In general, the security best practices for application development still apply in the cloud. Estas incluem opções como utilizar o SSL em todo o lado, proteger contra ataques CSRF e XSS, impedir ataques de injeção de SQL, entre outros.These include things like using SSL everywhere, protecting against CSRF and XSS attacks, preventing SQL injection attacks, and so on.

As aplicações na cloud utilizam frequentemente serviços geridos que têm chaves de acesso.Cloud applications often use managed services that have access keys. Nunca as selecione no controlo de origem.Never check these into source control. Pondere armazenar segredos da aplicação no Azure Key Vault.Consider storing application secrets in Azure Key Vault.

Soberania e encriptação de dadosData sovereignty and encryption

Confirme se os seus dados permanecem na zona geopolítica correta quando utiliza serviços de dados do Azure.Make sure that your data remains in the correct geopolitical zone when using Azure data services. O armazenamento de georreplicação do Azure utiliza o conceito de uma região emparelhada na mesma região geopolítica.Azure's geo-replicated storage uses the concept of a paired region in the same geopolitical region.

Utilize o Azure Key Vault para salvaguardar segredos e chaves criptográficos.Use Key Vault to safeguard cryptographic keys and secrets. Ao utilizar o Azure Key Vault, pode encriptar chaves e segredos com chaves protegidas por módulos de segurança de hardware (HSMs).By using Key Vault, you can encrypt keys and secrets by using keys that are protected by hardware security modules (HSMs). Muitos serviços de base de dados e de armazenamento do Azure suportam a encriptação de dados inativa, incluindo o Armazenamento do Azure, a Base de Dados SQL do Azure, o Azure Synapse Analytics e o 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.

Recursos de segurançaSecurity resources