Editar

Compartilhar via


Implantar microsserviços com o Aplicativos de Contêiner do Azure

Aplicativos de Contêiner do Azure
Azure Cosmos DB
Barramento de Serviço do Azure

Este cenário de exemplo mostra uma carga de trabalho existente que foi originalmente projetada para execução no Kubernetes e que, em vez disso, pode ser executada nos Aplicativos de Contêiner do Azure. Os Aplicativos de Contêiner do Azure são adequados para cargas de trabalho brownfield em que as equipes buscam simplificar a infraestrutura complexa e a orquestração de contêineres. A carga de trabalho de exemplo executa um aplicativo de microsserviços conteinerizado.

O exemplo pega a carga de trabalho usada na Arquitetura de microsserviços no Serviço de Kubernetes do Azure e a reospeda nos Aplicativos de Contêiner do Azure como plataforma de aplicativo.

Dica

Logotipo do GitHub A arquitetura conta com uma implementação de exemplo que ilustra algumas das opções de design descritas neste artigo.

Arquitetura

Diagrama mostrando microsserviços implantados com Aplicativos de Contêiner do Azure.

Baixe um Arquivo Visio dessa arquitetura.

Neste cenário, as imagens de contêiner são provenientes do Registro de Contêiner do Azure e implantadas em um ambiente dos Aplicativos de Contêiner.

Os serviços que compartilham o mesmo ambiente têm os seguintes benefícios:

  • Entrada interna e descoberta de serviço
  • Um único espaço de trabalho do Log Analytics para registro em log de runtime
  • Gerenciamento seguro de segredos e certificados

O aplicativo de contêiner do serviço de fluxo de trabalho está em execução no modo de revisão única. Um aplicativo de contêiner em execução no modo de revisão única terá uma única revisão, que tem o respaldo de réplicas zero para muitos. Casa réplica é composta pelo contêiner de aplicativo e todos os contêineres sidecar necessários. Este não está usando contêineres sidecar, portanto, cada réplica do aplicativo de contêiner representa um único contêiner. Como este exemplo não emprega dimensionamento, haverá apenas uma réplica em execução para cada aplicativo de contêiner.

O fluxo de trabalho adota uma abordagem híbrida para o gerenciamento de segredos. As identidades gerenciadas são usadas nos serviços onde essa implementação não demanda alterações de código. Nos serviços Drone Scheduler e Delivery, as identidades gerenciadas atribuídas pelo usuário são usadas para autenticar com o Azure Key Vault para acessar os segredos armazenados lá. Os demais serviços armazenam segredos por meio do serviço Aplicativos de Contêiner no nível do aplicativo.

Diagrama mostrando a arquitetura de runtime da solução.

Este diagrama ilustra a arquitetura de runtime da solução.

Baixe um Arquivo Visio dessa arquitetura.

Fluxo de dados

  1. Serviço de ingestão: recebe solicitações de cliente, as armazena em buffer e as envia pelo Barramento de Serviço do Azure para o serviço de fluxo de trabalho.
  2. Serviço de fluxo de trabalho: consome mensagens do Barramento de Serviço do Azure e as envia para serviços subjacentes.
  3. Serviço de pacotes: gerencia pacotes.
  4. Serviço de agendador de drones: agenda drones e monitora drones em voo.
  5. Serviço de entrega: gerencia entregas programadas ou em trânsito.

Componentes

O serviço de entrega por drones usa uma série de serviços do Azure combinados.

Aplicativos de Contêiner do Azure

Os Aplicativos de Contêiner do Azure são o componente principal.

Muitas das complexidades da arquitetura AKS anterior foram substituídas por estes recursos:

  • Descoberta de serviço interna
  • Pontos de extremidade HTTP e HTTP/2 totalmente gerenciados
  • Balanceamento de carga integrado
  • Log e monitoramento
  • Dimensionamento automático com base no tráfego HTTP ou eventos alimentados pelo KEDA
  • Atualizações de aplicativo e controle de versão

Armazenamento externo e outros componentes

O serviço Azure Key Vault para armazenar e acessar segredos, como chaves de API, senhas e certificados, com segurança.

O Registro de Contêiner do Azure armazena imagens de contêiner privado. Também é possível usar outros registros de contêiner, como o Docker Hub.

O Azure Cosmos DB armazena dados usando o código aberto Azure Cosmos DB for MongoDB. Os microsserviços são normalmente sem estado e gravam o estado em armazenamentos de dados externos. O Azure Cosmos DB é um serviço de banco de dados NoSQL com APIs de código aberto para MongoDB e Cassandra.

O Barramento de Serviço do Azure fornece mensagens de nuvem como serviço confiáveis e integração híbrida simples. O Barramento de Serviço dá suporte a padrões de mensagens assíncronas que são comuns com aplicativos de microsserviços.

O Cache do Azure para Redis adiciona uma camada de cache à arquitetura do aplicativo para melhorar a velocidade e o desempenho para cargas de tráfego pesadas.

O Azure Monitor coleta e armazena métricas e logs do aplicativo. Use esses dados para monitorar o aplicativo, configurar alertas e painéis e fazer a análise da causa raiz das falhas. Esse cenário usa um espaço de trabalho do Log Analytics para o monitoramento abrangente da infraestrutura e do aplicativo.

O Application Insights fornece gerenciamento do desempenho de aplicativos (APM) extensível e monitoramento dos serviços. Cada serviço é instrumentado com o SDK do Application Insights para monitorar o aplicativo e direcionar os dados para o Azure Monitor.

Modelos do Bicep para configurar e implantar os aplicativos.

Alternativas

Um cenário alternativo deste exemplo é o aplicativo Fabrikam Drone Delivery usando o Kubernetes, que está disponível no repositório Azure Kubernetes Service (AKS) Fabrikam Drone Delivery do GitHub.

Detalhes do cenário

Sua empresa pode simplificar a implantação e o gerenciamento de contêineres de microsserviço usando os Aplicativos de Contêiner do Azure. Os Aplicativos de Contêiner oferecem um ambiente sem servidor totalmente gerenciado para criar e implantar aplicativos modernos.

A Fabrikam, Inc. (uma empresa fictícia) implementou um aplicativo de entrega por drone no qual os usuários podem solicitar um drone para retirar mercadorias para entrega. Quando um cliente agenda uma coleta, um sistema de back-end atribui um drone ao usuário e notifica-o com um tempo de entrega previsto.

O aplicativo de microsserviços foi implantado em um cluster do Serviço de Kubernetes do Azure (AKS). Todavia, a equipe da Fabrikam não estava aproveitando os recursos do AKS avançados ou específicos da plataforma. Eles acabaram migrando o aplicativo para os Aplicativos de Contêiner do Azure sem muita sobrecarga. Ao portar a solução para os Aplicativos de Contêiner do Azure, a Fabrikam conseguiu:

  • Migrar o aplicativo quase como está: foram necessárias alterações mínimas no código ao mover o aplicativo do AKS para os Aplicativos de Contêiner do Azure.
  • Implantar a infraestrutura e a carga de trabalho com modelos do Bicep: nenhum manifesto YAML do Kubernetes foi necessário para implantar os contêineres de aplicativos.
  • Expor o aplicativo por meio de entrada gerenciada: o suporte interno para entrada externa baseada em https para expor o Serviço de Ingestão eliminou a necessidade de configurar uma entrada.
  • Extrair imagens de contêiner do ACR: os Aplicativos de Contêiner do Azure não exigem um determinado registro ou imagem base.
  • Gerenciar o ciclo de vida do aplicativo: o recurso de revisão permite executar várias revisões de um aplicativo de contêiner específico e dividir o tráfego entre elas para cenários de teste A/B ou de implantação azul/verde.
  • Usar identidade gerenciada: a equipe da Fabrikam conseguiu usar uma identidade gerenciada para autenticação no Azure Key Vault e no Registro de Contêiner do Azure.

Possíveis casos de uso

  • Implantar um aplicativo baseado no microsserviço Brownfield em uma oferta de plataforma como serviço (PaaS) para evitar a complexidade operacional do gerenciamento de um orquestrador de contêiner.
  • Otimizar as operações e o gerenciamento migrando serviços conteinerizados para uma plataforma compatível com redimensionamento nativo para zero.
  • Executar um processo em segundo plano de longa duração, como o serviço de fluxo de trabalho no modo de revisão única.

Outros usos comuns dos Aplicativos de Contêiner incluem:

  • Execução de cargas de trabalho conteinerizadas em uma plataforma sem servidor e baseada em consumo.
  • Dimensionamento automático de aplicativos com base no tráfego HTTP/HTTPS e/ou gatilhos orientados por eventos suportados pelo KEDA
  • Minimização da sobrecarga de manutenção para aplicativos conteinerizados
  • Implantação de pontos de extremidade de API
  • Hospedagem de aplicativos de processamento em segundo plano
  • Manipulação de processamento controlado por eventos

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.

Disponibilidade

Os Aplicativos de Contêiner permitem implantar, gerenciar, manter e monitorar os aplicativos com mais facilidade. A disponibilidade pode ser garantida por estes recursos principais:

  • As revisões ajudam a implantar atualizações de aplicativos sem tempo de inatividade. Você pode usar revisões para gerenciar a implantação de atualizações de aplicativos e dividir o tráfego entre as revisões para permitir implantações do tipo azul/verde e testes A/B (não usados no momento neste exemplo de carga de trabalho).
  • Com os recursos de observabilidade de ponta a ponta dos Aplicativos de Contêiner, você tem uma visão holística dos aplicativos em execução. Os Aplicativos de Contêiner são integrados ao Azure Monitor e ao Log Analytics, o que permite acompanhar a execução do aplicativo de contêiner e definir alertas com base em métricas e eventos.
  • Quando um aplicativo é encerrado inesperadamente, o serviço Aplicativos de Contêiner o reinicia automaticamente.
  • Você pode habilitar regras de dimensionamento automático para atender à demanda conforme o tráfego e as cargas de trabalho aumentam.
  • O desempenho é otimizado pelos recursos de balanceamento de carga dinâmico dos Aplicativos de Contêiner (não usados no momento nesta carga de trabalho de exemplo).

Excelência operacional

A excelência operacional abrange os processos de operações que implantam um aplicativo e o mantêm em execução na produção. Para obter mais informações, confira Visão geral do pilar de excelência operacional.

Para alcançar a excelência operacional, o serviço Aplicativos de Contêiner oferece estes recursos:

  • Integração do GitHub Actions para configurar implantações automatizadas de CI/CD.
  • Modo de várias revisões com divisão de tráfego para testar alterações no código do aplicativo e nas regras de dimensionamento.
  • Integração com o Azure Monitor e o Log Analytics para fornecer insights sobre o aplicativo conteinerizado.

Eficiência de desempenho

A eficiência do desempenho é a capacidade de dimensionar sua carga de trabalho para atender às demandas colocadas por usuários de maneira eficiente. Para obter mais informações, consulte Visão geral do pilar de eficiência de desempenho.

Considerações de desempenho nesta solução:

  • A carga de trabalho é distribuída entre vários aplicativos de microsserviço.
  • Cada microsserviço é independente, não compartilhando nada com os outros microsserviços, assim eles podem dimensionar de maneira independente.
  • O dimensionamento automático pode ser habilitado à medida que a carga de trabalho aumenta.
  • As solicitações têm balanceamento de carga dinâmico.
  • Métricas como utilização da CPU e da memória, informações de largura de banda e utilização do armazenamento estão disponíveis por meio do Azure Monitor.
  • A análise de logs fornece agregação de logs para coletar informações em cada ambiente dos Aplicativos de Contêiner.

Confiabilidade

A confiabilidade garante que seu aplicativo possa cumprir os compromissos que você assume com seus clientes. Para obter mais informações, confira Visão geral do pilar de confiabilidade.

Os Aplicativos de Contêiner tentarão reiniciar contêineres com falha e abstrairão o hardware dos usuários. Falhas transitórias e alta disponibilidade de recursos de computação de backup são administradas pela Microsoft.

O monitoramento de desempenho por meio do Log Analytics e do Azure Monitor permite avaliar o aplicativo sob carga. As métricas e informações de log fornecem os dados necessários para reconhecer tendências e, desse modo, evitar falhas e realizar a análise da causa raiz das falhas quando elas ocorrem.

Segurança

A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para mais informações, consulte Visão geral do pilar de segurança.

Segredos

  • O aplicativo de contêiner pode armazenar e recuperar valores confidenciais, como segredos. Depois que um segredo é definido para o aplicativo de contêiner, ele fica disponível para uso pelo aplicativo e por quaisquer regras de dimensionamento associadas. Se você estiver executando no modo de várias revisões, todas as revisões compartilharão os mesmos segredos. Como os segredos são considerados uma alteração no escopo do aplicativo, se você alterar o valor de um segredo, não será criada uma nova revisão. No entanto, para que as revisões em execução carreguem o valor do novo segredo, você precisará reiniciá-las. Nesse cenário, são usados valores de variáveis de aplicativo e de ambiente.
  • Variáveis de ambiente: valores confidenciais podem ser armazenados com segurança no nível do aplicativo. Quando as variáveis de ambiente forem alteradas, o aplicativo de contêiner gerará uma nova revisão.

Segurança de rede

  • Entrada: para limitar o acesso externo, somente o serviço de Ingestão é configurado para entrada externa. Os serviços de back-end são acessíveis somente por meio da rede virtual interna no ambiente dos Aplicativos de Contêiner. Exponha serviços na Internet somente quando necessário. Como essa arquitetura usa o recurso de entrada externa integrado, a solução não permite posicionar completamente o ponto de entrada atrás de um firewall de aplicativo Web (WAF) ou incluí-lo nos planos de Proteção contra DDoS. Todas as cargas de trabalho voltadas para a Web devem ser protegidas com um firewall de aplicativo Web.
  • Rede virtual: ao criar um ambiente, você pode especificar uma rede virtual personalizada; do contrário, uma rede virtual será gerada e gerenciada automaticamente pela Microsoft. Você não pode manipular essa rede virtual gerenciada pela Microsoft, por exemplo, adicionando Grupos de Segurança de Rede (NSGs) ou forçando o tráfego de encapsulamento para um firewall de saída. Este exemplo usa uma rede virtual gerada automaticamente.

Para obter mais opções de topologia de rede, consulte Arquitetura de rede nos Aplicativos de Contêiner do Azure.

Identidades de carga de trabalho

  • Os Aplicativos de Contêiner oferecem suporte a identidades gerenciadas do Microsoft Entra, permitindo que o aplicativo se autentique em outros recursos protegidos pelo Microsoft Entra ID, como o Azure Key Vault, sem gerenciar credenciais no aplicativo de contêiner. Um aplicativo de contêiner pode usar identidades gerenciadas atribuídas pelo sistema, atribuídas pelo usuário ou dos dois tipos. Para serviços que não dão suporte à autenticação do AD, você deve armazenar os segredos no Azure Key Vault e usar uma identidade gerenciada para acessá-los.
  • Use identidades gerenciadas para acesso ao Registro de Contêiner do Azure. Os Aplicativos de Contêiner do Azure permitem o uso de uma identidade gerenciada diferente para a carga de trabalho do que o acesso ao registro de contêiner, o que é recomendado quando se deseja obter controles de acesso granulares nas identidades gerenciadas.

Otimização de custo

  • Os Aplicativos de Contêiner do Azure têm um modelo de preços baseado em consumo.
  • Os Aplicativos de Contêiner do Azure permitem o dimensionamento para zero. Quando um aplicativo de contêiner é dimensionado para zero, não há cobrança.
  • Nesse cenário, o Azure Cosmos DB e o Cache do Azure para Redis são os principais fatores de custo.

Implantar este cenário

Siga as etapas descritas no README.md disponível no repositório de Cenários de exemplo dos Aplicativos de Contêiner do Azure para implantar esse cenário.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Autor principal:

Próximas etapas