Escolha uma opção de computação do Azure para microsserviços
O termo computação refere-se ao modelo de hospedagem para os recursos de computação em que seu aplicativo é executado. Este artigo fornece diretrizes prescritivas 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 sutis.
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. Um aplicativo pode incluir ambas as abordagens.
Baixe um Arquivo Visio dessa arquitetura.
Usar uma plataforma sem servidor
Você pode usar plataformas sem servidor para implantar microsserviços em Aplicativos de Contêiner do Azure ou Azure Functions. Os Aplicativos de Contêiner e as Funções fornecem opções de computação sem servidor que são cobradas 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, talvez queira usar o Azure Functions. Para obter mais informações, consulte a lista de linguagens de programação e script compatíveis com o Functions. Para microsserviços que você desenvolve em outras linguagens, talvez você queira implementar um manipulador personalizado no Functions ou considerar a conteinerização do aplicativo.
Usar um modelo de GPU
Se o microsserviço exigir capacidade de GPU, por exemplo, para executar tarefas de aprendizado de máquina, considere escolher Aplicativos de Contêiner ou AKS (Serviço de Kubernetes do Azure) para sua plataforma. O AKS pode usar qualquer modelo de GPU no Azure, e os Aplicativos de Contêiner oferecem um subconjunto de modelos de GPU para escolher.
Usar orquestradores de serviço
Um orquestrador lida com tarefas relacionadas à implantação e ao gerenciamento de um conjunto de serviços. Essas tarefas incluem a colocação de serviços em nós, monitoramento da integridade dos serviços, reinicialização de serviços não íntegros, balanceamento de carga de tráfego de rede em instâncias de serviço, descoberta de serviço, dimensionamento do número de instâncias de um serviço e aplicação das atualizações de configuração. Os orquestradores populares incluem Kubernetes, Azure Service Fabric, DC/OS e Docker Swarm.
Na plataforma do Azure, considere as seguintes opções:
O AKS (Serviço de Kubernetes do Azure) é um serviço Kubernetes gerenciado. O AKS provisiona o Kubernetes e expõe os pontos de extremidade da API do Kubernetes, hospeda e gerencia o painel de controle do Kubernetes e executa atualizações automatizadas, aplicação de patch automatizada, dimensionamento automático e outras tarefas de gerenciamento. O AKS fornece acesso direto às APIs do Kubernetes.
Os Aplicativos de Contêiner são um serviço gerenciado criado no Kubernetes que abstrai as complexidades da orquestração de contêineres e outras tarefas de gerenciamento. Os Aplicativos de Contêiner simplificam 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. Os Aplicativos de Contêiner são ideais para cenários em que o acesso direto às APIs do Kubernetes não é necessário.
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, como executáveis binários ou como Reliable Services. Usando o modelo de programação do Reliable Services, 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 Red Hat OpenShift no Azure para implantar clusters do OpenShift totalmente gerenciados. O Red Hat OpenShift no Azure amplia o Kubernetes. O Red Hat OpenShift no Azure é 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 os modelos de implantação no Microsoft 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 os Aplicativos de Contêiner não. Os Aplicativos de Contêiner ocultam as complexidades do Kubernetes e simplificam a experiência de implantação de contêiner. Se você projetar sua implantação de microsserviço para interagir diretamente com as APIs do Kubernetes, o AKS poderá 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ço. Esses fatores incluem opções de service mesh, escalabilidade da plataforma e conjuntos de habilidades que você pode usar na organização.
Considerações
Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.
Confiabilidade
A confiabilidade garante que seu aplicativo possa cumprir os 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 de confiabilidade é a resiliência. O objetivo da resiliência é retornar a carga de trabalho a um estado totalmente funcional 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 no Functions.
Se você escolher o AKS como sua plataforma de computação de microsserviço, poderá aprimorar a confiabilidade do microsserviço implantando um cluster do AKS que usa zonas de disponibilidade, usando a camada Standard ou Premium para clusters do 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 Aplicativos de Contêiner como sua plataforma de computação de microsserviço, 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 fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. 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á diretrizes para proteger a plataforma de computação. Para obter as práticas recomendadas sobre segurança de microsserviço no AKS, consulte Arquitetura avançada de microsserviço do 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 melhores práticas de segurança.
Otimização de custos
A otimização de custos é a análise de maneiras de reduzir as 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.
Ao usar um orquestrador, você paga pelas máquinas virtuais executadas no cluster. Ao usar um aplicativo sem servidor, você paga apenas pelos recursos de computação reais que consome. Em ambos os casos, você precisa levar em consideração o custo de quaisquer serviços extras, como armazenamento, bancos de dados e serviços de mensagens.
Azure Functions, Aplicativos de Contêiner e AKS fornecem opções de dimensionamento automático. Os Aplicativos e Funções de Contêiner fornecem plataformas sem servidor em que 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 práticas recomendadas de otimização de custos. Para obter mais informações, consulte Otimizar custos no Serviço de Kubernetes do Azure.
Se você escolher Aplicativos de Contêiner como sua plataforma de computação de microsserviços, precisará entender os vários modelos de cobrança 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 Cobrança 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 em consumo e detalhes do plano do Azure Functions.
Excelência operacional
A Excelência operacional abrange os processos de operações que implantam uma aplicação e as mantêm em execução em 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 que este artigo descreve de maneira automatizada usando Terraform, Bicep 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 de orquestrador e uma abordagem sem servidor:
Flexibilidade e controle: um orquestrador oferece controle sobre a configuração e o gerenciamento de seus serviços e do cluster. A compensação é mais complexidade. Com uma arquitetura sem servidor, você perde um pouco do controle porque esses detalhes são abstraídos.
Portabilidade: todos os orquestradores listados neste artigo, incluindo Kubernetes, DC/OS, Docker Swarm e Service Fabric, podem ser executados localmente 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 aos Aplicativos Lógicos.