Padrões de Conceção de CloudCloud Design Patterns
Estes padrões de conceção são úteis para criar aplicações fiáveis, dimensionáveis e seguras na cloud.These design patterns are useful for building reliable, scalable, secure applications in the cloud.
Cada padrão descreve o problema que o padrão aborda, as considerações para aplicar o padrão e um exemplo baseado no Microsoft Azure.Each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. A maioria dos padrões incluem exemplos de código ou fragmentos de código que mostram como implementar o padrão no Azure.Most of the patterns include code samples or snippets that show how to implement the pattern on Azure. No entanto, a maioria dos padrões são relevantes para qualquer sistema distribuído, esteja alojado no Azure ou noutras plataformas de cloud.However, most of the patterns are relevant to any distributed system, whether hosted on Azure or on other cloud platforms.
Desafios no desenvolvimento da cloudChallenges in cloud development
DisponibilidadeAvailabilityA disponibilidade é a proporção de tempo que o sistema está funcional e em funcionamento, normalmente medida como percentagem do tempo de atividade.Availability is the proportion of time that the system is functional and working, usually measured as a percentage of uptime. Pode ser afetada por erros do sistema, problemas de infraestrutura, ataques maliciosos e carga de sistema.It can be affected by system errors, infrastructure problems, malicious attacks, and system load. As aplicações da cloud oferecem, normalmente, aos utilizadores com um contrato de nível de serviço (SLA), para que as aplicações possam ser concebidas para maximizar a disponibilidade.Cloud applications typically provide users with a service level agreement (SLA), so applications must be designed to maximize availability. |
|
Gestão de DadosData ManagementA gestão de dados é o elemento-chave das aplicações da cloud e influencia a maioria dos atributos de qualidade.Data management is the key element of cloud applications, and influences most of the quality attributes. Os dados normalmente estão alojados em diferentes localizações e em vários servidores por motivos de desempenho, disponibilidade ou escalabilidade, e isto pode apresentar diversos desafios.Data is typically hosted in different locations and across multiple servers for reasons such as performance, scalability or availability, and this can present a range of challenges. Por exemplo, deve ser mantida uma consistência de dados e estes têm normalmente de ser sincronizados em diferentes localizações.For example, data consistency must be maintained, and data will typically need to be synchronized across different locations. |
|
Conceção e implementaçãoDesign and ImplementationUma boa conceção abrange fatores como a consistência e a coerência na conceção e implementação do componente, manutenção para simplificar a administração e desenvolvimento, e reutilização para permitir que os componentes e subsistemas sejam utilizados em outras aplicações e outros cenários.Good design encompasses factors such as consistency and coherence in component design and deployment, maintainability to simplify administration and development, and reusability to allow components and subsystems to be used in other applications and in other scenarios. As decisões tomadas durante a fase de conceção e implementação têm um impacto enorme na qualidade e no custo total de posse das aplicações e serviços alojados na cloud.Decisions made during the design and implementation phase have a huge impact on the quality and the total cost of ownership of cloud hosted applications and services. |
|
MensagensMessagingA natureza distribuída das aplicações da cloud requer uma infraestrutura de mensagens que liga os componentes e serviços, idealmente de forma livremente ligada para maximizar a escalabilidade.The distributed nature of cloud applications requires a messaging infrastructure that connects the components and services, ideally in a loosely coupled manner in order to maximize scalability. As mensagens assíncronas são amplamente utilizadas e oferecem muitas vantagens, mas também colocam desafios, como a ordenação de mensagens, a gestão de mensagens não processáveis, a idempotência e muito mais.Asynchronous messaging is widely used, and provides many benefits, but also brings challenges such as the ordering of messages, poison message management, idempotency, and more. |
|
Gestão e MonitorizaçãoManagement and MonitoringAs 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, do sistema operativo.Cloud applications run in a remote datacenter where you do not have full control of the infrastructure or, in some cases, the operating system. Isto pode dificultar a gestão e a monitorização em relação a uma implementação no local.This can make management and monitoring more difficult than an on-premises deployment. As aplicações devem expor as informações do runtime que os administradores e os operadores podem utilizar para gerir e monitorizar o sistema, bem como suportar e personalizar requisitos empresariais em constante alteração, sem precisar que a aplicação esteja parada ou seja implementada novamente.Applications must expose runtime information that administrators and operators can use to manage and monitor the system, as well as supporting changing business requirements and customization without requiring the application to be stopped or redeployed. |
|
Desempenho e EscalabilidadePerformance and ScalabilityO desempenho é uma indicação da capacidade de resposta de um sistema para executar qualquer ação num determinado intervalo de tempo, enquanto a escalabilidade é a capacidade de um sistema processar os aumentos de carga sem impacto no desempenho ou para os recursos disponíveis serem prontamente aumentados.Performance is an indication of the responsiveness of a system to execute any action within a given time interval, while scalability is ability of a system either to handle increases in load without impact on performance or for the available resources to be readily increased. As aplicações da cloud encontram normalmente cargas de trabalho e picos variáveis na atividade.Cloud applications typically encounter variable workloads and peaks in activity. Prevê-los, especialmente num cenário com vários inquilinos, é praticamente impossível.Predicting these, especially in a multitenant scenario, is almost impossible. Em vez disso, as aplicações devem ser capazes de aumentar horizontalmente dentro dos limites para atender aos picos pedidos e reduzir horizontalmente quando a procura diminui.Instead, applications should be able to scale out within limits to meet peaks in demand, and scale in when demand decreases. A escalabilidade diz respeito não só às instâncias de computação, como também a outros elementos como o armazenamento de dados, a infraestrutura de mensagens e muito mais.Scalability concerns not just compute instances, but other elements such as data storage, messaging infrastructure, and more. |
|
ResiliênciaResiliencyResiliência é a capacidade de um sistema lidar e recuperar de falhas da melhor forma.Resiliency is the ability of a system to gracefully handle and recover from failures. A natureza do alojamento na cloud, onde as aplicações são, muitas vezes, de vários inquilinos, utiliza os serviços de plataforma partilhada, compete para ter recursos e largura de banda, comunica através da Internet, e por ser executado em hardware de comodidade tem uma maior probabilidade de surgirem falhas transitórias e mais permanentes.The nature of cloud hosting, where applications are often multitenant, use shared platform services, compete for resources and bandwidth, communicate over the Internet, and run on commodity hardware means there is an increased likelihood that both transient and more permanent faults will arise. É preciso detetar falhas e recuperar rapidamente e de forma eficiente, para manter a resiliência.Detecting failures, and recovering quickly and efficiently, is necessary to maintain resiliency. |
|
SegurançaSecurityA segurança fornece garantias de confidencialidade, integridade e disponibilidade contra ataques maliciosos nos sistemas de informação (e garantias de segurança para ataques em sistemas operacionais de tecnologia).Security provides confidentiality, integrity, and availability assurances against malicious attacks on information systems (and safety assurances for attacks on operational technology systems). Perder estas garantias pode afetar negativamente as suas operações e receitas empresariais, bem como a reputação da sua organização no marketplace.Losing these assurances can negatively impact your business operations and revenue, as well as your organization’s reputation in the marketplace. Manter a segurança requer as seguintes práticas bem estabelecidas (higiene de segurança) e estar vigilante para detetar e corrigir rapidamente vulnerabilidades e ataques ativos.Maintaining security requires following well-established practices (security hygiene) and being vigilant to detect and rapidly remediate vulnerabilities and active attacks. |
Catálogo de padrõesCatalog of patterns
PadrãoPattern | ResumoSummary | CategoriaCategory |
---|---|---|
AmbassadorAmbassador | Crie serviços de programa auxiliar que enviam pedidos de rede em nome de um serviço ou aplicação de consumidor.Create helper services that send network requests on behalf of a consumer service or application. | Conceção e implementação,Design and Implementation, Gestão e MonitorizaçãoManagement and Monitoring |
Camada Anti-corrupçãoAnti-Corruption Layer | Implemente uma camada de fachada ou de adaptador entre uma aplicação moderna e um sistema legado.Implement a façade or adapter layer between a modern application and a legacy system. | Conceção e implementação,Design and Implementation, Gestão e MonitorizaçãoManagement and Monitoring |
Pedido-resposta assíncronoAsynchronous Request-Reply | Dissociar o processamento de back-end de um host front-end onde o processamento de back-end tem de ser assíncrono mas o front-end continua a necessitar de uma resposta clara.Decouple backend processing from a frontend host, where backend processing needs to be asynchronous, but the frontend still needs a clear response. | MensagensMessaging |
Back-ends para Front-endsBackends for Frontends | Crie serviços de back-end separados para serem consumidos por aplicações ou interfaces de front-end específicas.Create separate backend services to be consumed by specific frontend applications or interfaces. | Conceção e implementaçãoDesign and Implementation |
BulkheadBulkhead | Isole os elementos de uma aplicação em conjuntos, de modo a que se um falhar, os outros continuam a funcionar.Isolate elements of an application into pools so that if one fails, the others will continue to function. | ResiliênciaResiliency |
Cache-AsideCache-Aside | Carregar dados a pedido para uma cache a partir de um arquivo de dadosLoad data on demand into a cache from a data store | Gestão de Dados,Data Management, Desempenho e EscalabilidadePerformance and Scalability |
CoreografiaChoreography | Permita que cada serviço decida quando e como uma operação de negócio será processada em vez de depender de um orquestrador central.Let each service decide when and how a business operation is processed, instead of depending on a central orchestrator. | Mensagens,Messaging, Desempenho e EscalabilidadePerformance and Scalability |
Disjuntor AutomáticoCircuit Breaker | Processe falhas que possam demorar um período de tempo a corrigir ao ligar a um serviço ou recurso remoto variável.Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource. | ResiliênciaResiliency |
Verificação de AfirmaçõesClaim Check | Divida uma mensagem grande numa verificação de afirmações e num payload para evitar sobrecarregar um barramento de mensagens.Split a large message into a claim check and a payload to avoid overwhelming a message bus. | MensagensMessaging |
Compensação de TransaçãoCompensating Transaction | Anule o trabalho realizado por uma série de passos, que em conjunto definem uma operação eventualmente consistente.Undo the work performed by a series of steps, which together define an eventually consistent operation. | ResiliênciaResiliency |
Consumidores ConcorrentesCompeting Consumers | Permita que vários consumidores em simultâneo processem mensagens recebidas no mesmo canal de mensagens.Enable multiple concurrent consumers to process messages received on the same messaging channel. | MensagensMessaging |
Consolidação de Recursos de ComputaçãoCompute Resource Consolidation | Consolidar várias tarefas ou operações numa única unidade computacionalConsolidate multiple tasks or operations into a single computational unit | Conceção e implementaçãoDesign and Implementation |
CQRSCQRS | Segregue operações de leitura de dados a partir de operações que atualizam dados através de interfaces separadas.Segregate operations that read data from operations that update data by using separate interfaces. | Gestão de Dados,Data Management, Conceção e implementação,Design and Implementation, Desempenho e EscalabilidadePerformance and Scalability |
Carimbos de ImplementaçãoDeployment Stamps | Implemente várias cópias independentes de componentes de aplicações, incluindo arquivos de dados.Deploy multiple independent copies of application components, including data stores. | Disponibilidade,Availability, Desempenho e EscalabilidadePerformance and Scalability |
Origem do EventoEvent Sourcing | Utilize um arquivo só com anexos para registar a série completa dos eventos que descrevem ações tomadas nos dados de um domínio.Use an append-only store to record the full series of events that describe actions taken on data in a domain. | Gestão de Dados,Data Management, Desempenho e EscalabilidadePerformance and Scalability |
Arquivo de Configuração ExternoExternal Configuration Store | Mova as informações de configuração para fora do pacote de implementação de aplicação para uma localização centralizada.Move configuration information out of the application deployment package to a centralized location. | Conceção e implementação,Design and Implementation, Gestão e MonitorizaçãoManagement and Monitoring |
Identidade FederadaFederated Identity | Delegue a autenticação para um fornecedor de identidade externo.Delegate authentication to an external identity provider. | SegurançaSecurity |
Controlador de chamadasGatekeeper | Proteja aplicações e serviços com uma instância de anfitrião dedicada que age como um mediador entre clientes e a aplicação ou serviço, valida e limpa pedidos, e transmite dados e pedidos entre eles.Protect applications and services by using a dedicated host instance that acts as a broker between clients and the application or service, validates and sanitizes requests, and passes requests and data between them. | SegurançaSecurity |
Agregação de GatewayGateway Aggregation | Utilize um gateway para agregar vários pedidos individuais num único pedido.Use a gateway to aggregate multiple individual requests into a single request. | Conceção e implementação,Design and Implementation, Gestão e MonitorizaçãoManagement and Monitoring |
Descarregamento de GatewayGateway Offloading | Descarregue funcionalidade de serviço partilhado ou especializado para um proxy de gateway.Offload shared or specialized service functionality to a gateway proxy. | Conceção e implementação,Design and Implementation, Gestão e MonitorizaçãoManagement and Monitoring |
Encaminhamento de GatewayGateway Routing | Encaminhe pedidos para vários serviços com um único ponto final.Route requests to multiple services using a single endpoint. | Conceção e implementação,Design and Implementation, Gestão e MonitorizaçãoManagement and Monitoring |
GeodesGeodes | Implemente serviços de back-end num conjunto de nós geográficos, cada um dos quais pode atender qualquer pedido de cliente, em qualquer região.Deploy backend services into a set of geographical nodes, each of which can service any client request in any region. | Disponibilidade,Availability, Desempenho e EscalabilidadePerformance and Scalability |
Monitorização do Ponto Final do Estado de FuncionamentoHealth Endpoint Monitoring | Implemente verificações funcionais numa aplicação que as ferramentas externas podem aceder através de pontos finais expostos em intervalos regulares.Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals. | Disponibilidade,Availability, Gestão e Monitorização,Management and Monitoring, ResiliênciaResiliency |
Tabela de ÍndiceIndex Table | Crie índices sobre os campos nos arquivos de dados que são frequentemente referenciados por consultas.Create indexes over the fields in data stores that are frequently referenced by queries. | Gestão de Dados,Data Management, Desempenho e EscalabilidadePerformance and Scalability |
Eleição de CoordenadorLeader Election | Coordene as ações executadas por uma coleção de instâncias de tarefa de colaboração numa aplicação distribuída, ao eleger uma instância como a líder que assume a responsabilidade para gerir as outras instâncias.Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances. | Conceção e implementação,Design and Implementation, ResiliênciaResiliency |
Vista MaterializadaMaterialized View | Gere vistas pré-preenchidas sobre os dados em um ou mais arquivos de dados quando os dados não estão formatados idealmente para operações de consulta necessárias.Generate prepopulated views over the data in one or more data stores when the data isn't ideally formatted for required query operations. | Gestão de Dados,Data Management, Desempenho e EscalabilidadePerformance and Scalability |
Pipes e FiltrosPipes and Filters | Divida uma tarefa que realiza processamento complexo numa série de elementos separados que podem ser reutilizados.Break down a task that performs complex processing into a series of separate elements that can be reused. | Conceção e implementação,Design and Implementation, MensagensMessaging |
Fila de PrioridadePriority Queue | Defina prioridades dos pedidos enviados para os serviços, de modo a que os pedidos com uma prioridade mais alta sejam recebidos e processados mais rapidamente do que aqueles com uma prioridade mais baixa.Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority. | Mensagens,Messaging, Desempenho e EscalabilidadePerformance and Scalability |
Publicador/EditorPublisher/Subscriber | Permita que uma aplicação anuncie os eventos para vários consumidores interessados de forma assíncrona, sem acoplar os remetentes aos destinatários.Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers. | MensagensMessaging |
Redistribuição de Carga Baseada na FilaQueue-Based Load Leveling | Utilize uma fila que age como uma memória intermédia entre uma tarefa e um serviço que este invoca para cargas pesadas intermitentes.Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads. | Disponibilidade,Availability, Mensagens,Messaging, Resiliência,Resiliency, Desempenho e EscalabilidadePerformance and Scalability |
RepetirRetry | Permita que uma aplicação processe falhas previstas e temporárias quando tentar ligar a um recurso ou serviço de rede, ao repetir de forma transparente uma operação que falhou anteriormente.Enable an application to handle anticipated, temporary failures when it tries to connect to a service or network resource by transparently retrying an operation that's previously failed. | ResiliênciaResiliency |
Supervisor de Agente do SchedulerScheduler Agent Supervisor | Coordene um conjunto de ações entre um conjunto distribuído de serviços e outros recursos remotos.Coordinate a set of actions across a distributed set of services and other remote resources. | Mensagens,Messaging, ResiliênciaResiliency |
Transporte sequencialSequential Convoy | Processe um conjunto de mensagens relacionadas numa ordem definida sem bloquear o processamento de outros grupos de mensagens.Process a set of related messages in a defined order, without blocking processing of other groups of messages. | MensagensMessaging |
FragmentaçãoSharding | Divida um arquivo de dados num conjunto de partições horizontais ou shards.Divide a data store into a set of horizontal partitions or shards. | Gestão de Dados,Data Management, Desempenho e EscalabilidadePerformance and Scalability |
SidecarSidecar | Implemente componentes de uma aplicação num processo ou contentor separado, para oferecer isolamento e encapsulamento.Deploy components of an application into a separate process or container to provide isolation and encapsulation. | Conceção e implementação,Design and Implementation, Gestão e MonitorizaçãoManagement and Monitoring |
Alojamento de Conteúdo EstáticoStatic Content Hosting | Implemente conteúdo estático num serviço de armazenamento baseado na cloud que o pode oferecer diretamente ao cliente.Deploy static content to a cloud-based storage service that can deliver them directly to the client. | Conceção e implementação,Design and Implementation, Gestão de Dados,Data Management, Desempenho e EscalabilidadePerformance and Scalability |
Strangler FigStrangler Fig | Migre incrementalmente um sistema legado, ao substituir gradualmente partes específicas de funcionalidades por novas aplicações e serviços.Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services. | Conceção e implementação,Design and Implementation, Gestão e MonitorizaçãoManagement and Monitoring |
LimitaçãoThrottling | Controle o consumo dos recursos utilizados por uma instância de uma aplicação, um inquilino individual ou um serviço completo.Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service. | Disponibilidade,Availability, Desempenho e EscalabilidadePerformance and Scalability |
Chave ValetValet Key | Utilize um token ou chave que oferece aos clientes um acesso direto restrito a um recurso ou serviço específico.Use a token or key that provides clients with restricted direct access to a specific resource or service. | Gestão de Dados,Data Management, SegurançaSecurity |