Escolha uma opção de computação do Azure para microsserviços
O termo computação refere-se ao modelo de alojamento dos recursos de computação em que a aplicação é executada. Este artigo fornece orientação prescritiva para ajudá-lo a escolher uma plataforma de computação para microsserviços. Sua seleção de plataforma de computação de microsserviço pode depender de requisitos mais matizados.
Para uma arquitetura de microsserviços, as seguintes abordagens são populares:
- Implante microsserviços em plataformas de computação dedicadas, normalmente usando um orquestrador de microsserviços.
- Implante microsserviços em uma plataforma sem servidor.
Embora essas opções não sejam as únicas, ambas são abordagens comprovadas para a criação de microsserviços. Uma aplicação pode incluir ambas as abordagens.
Transfira um ficheiro do Visio desta arquitetura.
Usar uma plataforma sem servidor
Você pode usar plataformas sem servidor para implantar microsserviços em Aplicativos de Contêiner do Azure ou no Azure Functions. Tanto os Aplicativos de Contêiner quanto as Funções fornecem opções de computação sem servidor que faturam com base no volume de solicitações, em vez do consumo de computação. Ambas as plataformas também oferecem a opção de hospedar as cargas de trabalho em capacidade dedicada.
Implantar microsserviços baseados em código
Se você quiser implantar seus microsserviços como código em vez de conteinerizá-los, convém usar o Azure Functions. Para obter mais informações, consulte a lista de linguagens de programação e script suportadas pelo Functions. Para microsserviços que você desenvolve em outros idiomas, convém implementar um manipulador personalizado no Functions ou considerar a conteinerização do aplicativo.
Usar um modelo de GPU
Se o seu microsserviço exigir capacidade de GPU, por exemplo, para executar tarefas de aprendizado de máquina, considere escolher Aplicativos de Contêiner ou Serviço Kubernetes do Azure (AKS) para sua plataforma. O AKS pode usar qualquer modelo de GPU no Azure, e o Container Apps oferece um subconjunto de modelos de GPU para escolher.
Use orquestradores de serviço
Um orquestrador lida com tarefas relacionadas à implantação e ao gerenciamento de um conjunto de serviços. Essas tarefas incluem colocar serviços em nós, monitorar a integridade dos serviços, reiniciar serviços não íntegros, balancear a carga do tráfego de rede entre instâncias de serviço, descoberta de serviços, dimensionar o número de instâncias de um serviço e aplicar atualizações de configuração. Orquestradores populares incluem Kubernetes, Azure Service Fabric, DC/OS e Docker Swarm.
Na plataforma Azure, considere as seguintes opções:
O Azure Kubernetes Service (AKS) é um serviço Kubernetes gerido. O AKS provisiona o Kubernetes e expõe os pontos de extremidade da API do Kubernetes, hospeda e gerencia o plano de controle do Kubernetes e executa atualizações automatizadas, patches automatizados, dimensionamento automático e outras tarefas de gerenciamento. O AKS fornece acesso direto às APIs do Kubernetes.
O Container Apps é um serviço gerenciado criado no Kubernetes que abstrai as complexidades da orquestração de contêineres e outras tarefas de gerenciamento. O Container Apps simplifica a implantação e o gerenciamento de aplicativos e microsserviços em contêineres em um ambiente sem servidor, ao mesmo tempo em que fornece os recursos do Kubernetes. O Container Apps é ideal para cenários em que o acesso direto às APIs do Kubernetes não é necessário.
O Service Fabric é uma plataforma de sistemas distribuídos para empacotamento, implantação e gerenciamento de microsserviços. Você pode implantar microsserviços no Service Fabric como contêineres, executáveis binários ou Serviços Confiáveis. Usando o modelo de programação de Serviços Confiáveis, os serviços podem usar diretamente as APIs de programação do Service Fabric para consultar o sistema, relatar a integridade, receber notificações sobre alterações de configuração e código e descobrir outros serviços.
Use o Azure Red Hat OpenShift para implantar clusters OpenShift totalmente gerenciados. O Azure Red Hat OpenShift estende o Kubernetes. O Azure Red Hat OpenShift é projetado, operado e suportado em conjunto pela Red Hat e pela Microsoft.
Outras opções, como o Docker Enterprise Edition, podem ser executadas em um ambiente de computação em nuvem no Azure. Você pode encontrar modelos de implantação no Azure Marketplace.
Usar APIs do Kubernetes
O acesso às APIs do Kubernetes geralmente é um fator decisivo quando você escolhe uma opção de computação. O AKS fornece acesso direto às APIs do Kubernetes, mas o Container Apps não. O Container Apps oculta as complexidades do Kubernetes e simplifica a experiência de implantação do contêiner. Se você projetar sua implantação de microsserviço para interagir diretamente com as APIs do Kubernetes, o AKS pode ser a escolha certa.
Outros fatores de decisão
Pode haver outros fatores que afetam a seleção da plataforma de computação de microsserviços. Esses fatores incluem opções de malha de serviço, escalabilidade da plataforma e conjuntos de habilidades que você pode usar na organização.
Considerações
Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.
Fiabilidade
A confiabilidade garante que seu aplicativo possa atender aos compromissos que você assume com seus clientes. Para obter mais informações, consulte Lista de verificação de revisão de design para confiabilidade.
Um dos principais pilares da fiabilidade é a resiliência. O objetivo da resiliência é retornar a carga de trabalho a um estado de pleno funcionamento após a ocorrência de uma falha.
Se você escolher o Azure Functions como sua plataforma de computação de microsserviço, considere implantar o plano Functions Premium ou o plano do Serviço de Aplicativo do Azure em uma configuração com redundância de zona. Para obter mais informações, consulte Confiabilidade em funções.
Se você escolher o AKS como sua plataforma de computação de microsserviços, poderá aprimorar a confiabilidade do microsserviço implantando um cluster AKS que usa zonas de disponibilidade, usando a camada Standard ou Premium para clusters Kubernetes do Azure e aumentando o número mínimo de pods e nós. Para obter mais informações, consulte Práticas recomendadas de implantação e confiabilidade de cluster para AKS.
Se você escolher Container Apps como sua plataforma de computação de microsserviços, poderá aumentar a confiabilidade usando zonas de disponibilidade. Para obter mais informações, consulte Confiabilidade em aplicativos de contêiner.
Segurança
A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Lista de verificação de revisão de design para segurança.
Se você escolher o Azure Functions como sua plataforma de computação para implantar microsserviços, os princípios de proteção do Azure Functions também se aplicarão aos microsserviços.
Se você escolher o AKS como sua plataforma de computação para implantar microsserviços, a arquitetura de linha de base de segurança do AKS fornecerá orientação para proteger a plataforma de computação. Para obter as melhores práticas sobre segurança de microsserviços no AKS, consulte Arquitetura avançada de microsserviços AKS.
Se você escolher Aplicativos de Contêiner como sua plataforma de computação para implantar microsserviços, consulte a linha de base de segurança para Aplicativos de Contêiner para obter as práticas recomendadas de segurança.
Otimização de Custos
A Otimização de Custos consiste em procurar formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Lista de verificação de revisão de design para otimização de custos.
Quando você usa um orquestrador, paga pelas máquinas virtuais que são executadas no cluster. Quando você usa um aplicativo sem servidor, paga apenas pelos recursos de computação reais que consome. Em ambos os casos, você precisa considerar o custo de quaisquer serviços extras, como armazenamento, bancos de dados e serviços de mensagens.
O Azure Functions, os Aplicativos de Contêiner e o AKS fornecem opções de dimensionamento automático. Os Aplicativos e Funções de Contêiner fornecem plataformas sem servidor onde o custo é baseado no consumo e pode ser zero. O AKS fornece apenas opções de computação dedicadas.
Se você escolher o AKS como a plataforma de computação para implantar microsserviços, precisará entender as melhores práticas de otimização de custos. Para obter mais informações, consulte Otimizar custos no Serviço Kubernetes do Azure.
Se você escolher Container Apps como sua plataforma de computação de microsserviços, precisará entender os vários modelos de faturamento e decidir sobre o modelo de implantação para seus microsserviços com base em seus requisitos de carga de trabalho. Para obter mais informações, consulte Faturamento em aplicativos de contêiner.
Se você escolher o Azure Functions como sua plataforma de computação de microsserviços, precisará entender os vários modelos de cobrança e decidir sobre o plano do Functions com base em seus requisitos de carga de trabalho. Para obter mais informações, consulte Estimar custos baseados no consumo e detalhes do plano do Azure Functions.
Excelência Operacional
A Excelência Operacional abrange os processos operacionais que implantam um aplicativo e o mantêm em execução na produção. Para obter mais informações, consulte Lista de verificação de revisão de design para excelência operacional.
Você pode implantar todas as opções de computação de microsserviço descritas neste artigo de maneira automatizada usando Terraform, Bíceps e outras linguagens de script. Você pode usar o Application Insights, o Azure Monitor e outras soluções de monitoramento para monitorar essas plataformas de computação e microsserviços.
Considere os seguintes fatores ao escolher entre uma abordagem orchestrator e uma abordagem sem servidor:
Flexibilidade e controle: um orquestrador lhe dá controle sobre a configuração e o gerenciamento de seus serviços e do cluster. O trade-off é mais complexo. Com uma arquitetura sem servidor, você abre mão de algum grau de controle porque esses detalhes são abstratos.
Portabilidade: Todos os orquestradores listados neste artigo, incluindo Kubernetes, DC/OS, Docker Swarm e Service Fabric, podem ser executados no local ou em várias nuvens públicas.
Integração de aplicativos: pode ser um desafio criar um aplicativo complexo que usa uma arquitetura sem servidor porque você precisa coordenar, implantar e gerenciar muitas funções pequenas e independentes. Uma opção no Azure é usar os Aplicativos Lógicos do Azure para coordenar um conjunto de funções do Azure. Para obter um exemplo dessa abordagem, consulte Criar uma função que se integra com aplicativos lógicos.