Gerente de Programa Mike Budzynski , Gerenciamento de API do Azure

A indústria de TI está passando por uma mudança de aplicativos monolíticos para arquiteturas baseadas em microsserviços . Os benefícios dessa nova abordagem incluem:

  • Desenvolvimento independente e liberdade para escolher tecnologia - Os desenvolvedores podem trabalhar em diferentes microsserviços ao mesmo tempo e escolher as melhores tecnologias para o problema que estão solucionando.
  • Ciclo independente de implantação e lançamento - Os microsserviços podem ser atualizados individualmente em sua própria programação.
  • Escala granular - Os microsserviços individuais podem ser dimensionados independentemente, reduzindo o custo geral e aumentando a confiabilidade.
  • Simplicidade - Serviços menores são mais fáceis de entender, o que acelera o desenvolvimento, teste, depuração e lançamento de um produto.
  • Isolamento de falhas - A falha de um microsserviço não precisa se traduzir em falha de outros serviços.

Neste blog, vamos explorar:

  1. Como projetar um sistema de armazenamento online simplificado para obter os benefícios acima.
  2. Por que e como gerenciar APIs voltadas para o público em arquiteturas baseadas em microsserviço.
  3. Como começar com o Gerenciamento de API do Azure e microsserviços.

Exemplo: Loja online implementada com microsserviços

Vamos considerar um sistema de lojas online simplificado. Um visitante do site precisa ser capaz de ver os detalhes do produto, fazer um pedido, rever um pedido feito.

Sempre que um pedido é feito, o sistema precisa processar os detalhes do pedido e emitir uma solicitação de remessa. Com base em cenários de usuários e requisitos de negócios, o sistema deve ter as seguintes propriedades:

  • Escala granular - A visualização dos detalhes do produto acontece, em média, pelo menos 1.000 vezes mais do que a colocação de um pedido.
  • Simplicidade - Ações de usuários independentes são claramente definidas, e essa separação precisa ser refletida na arquitetura do sistema.
  • Isolamento de falhas - A falha na funcionalidade de envio não pode afetar a exibição de produtos ou o pedido.

Eles sugerem a implementação do sistema com três microsserviços:

  • Encomendar com API pública GET e POST - Responsável pela visualização e colocação de uma encomenda.
  • Produto com API GET pública - responsável por visualizar detalhes de um produto.
  • Remessa acionada internamente por um evento - Responsável pelo processamento e envio de um pedido.

Para isso, usaremos as Funções do Azure , que são fáceis de implementar e gerenciar. Sua natureza orientada a eventos significa que eles são executados e cobrados por uma interação. Isso se torna útil quando o tráfego da loja é imprevisível. A infraestrutura subjacente desce para zero em tempos sem tráfego. Ele também pode servir a rajadas de tráfego em um cenário em que uma campanha de marketing se torna viral ou a carga aumenta durante as férias de compras, como a Black Friday nos Estados Unidos.

Para manter a granularidade de dimensionamento, garantir a simplicidade e manter os ciclos de lançamento independentes, cada microsserviço deve ser implementado em um aplicativo de função individual.

Fluxograma do microsserviço a ser implementado em um aplicativo de função indivudal

Os microsserviços de pedidos e produtos são funções de face externa com um gatilho HTTP. O microsserviço de envio é acionado indiretamente pelo microsserviço do pedido, que cria uma mensagem no Barramento de Serviço do Azure. Por exemplo, quando você solicita um item, o site emite uma chamada de API POST Order que executa a função de pedido. Em seguida, seu pedido é enfileirado como uma mensagem em uma instância do Barramento de Serviço do Azure, que dispara a função de envio para seu processamento.

Principais motivos para gerenciar a comunicação externa da API em arquiteturas baseadas em microsserviços

A arquitetura proposta tem um problema fundamental, a forma como a comunicação externa é tratada.

  • Aplicativos clientes são acoplados a microsserviços internos. Isso se torna especialmente complicado quando você deseja dividir, mesclar ou reescrever microsserviços.
  • As APIs não são exibidas no mesmo domínio ou endereço IP.
  • Regras de API comuns não podem ser facilmente aplicadas em microsserviços.
  • Gerenciar alterações de API e introduzir novas versões é difícil.

Embora os Proxies de funções do Azure ofereçam um plano de API unificado, eles ficam aquém dos outros cenários. As limitações devem ser tratadas com o Fronting das Funções do Azure com um Gerenciamento de API do Azure , agora disponível em uma camada de Consumo sem servidor .

Fluxograma mostrando o fronting do Managemnet da API do Azure para as funções do Azure

O Gerenciamento de API abstrai as APIs de sua implementação e as hospeda no mesmo domínio ou em um endereço IP estático . Ele permite separar aplicativos clientes de microsserviços internos. Todas as suas APIs no Gerenciamento de API do Azure compartilham um nome de host e um endereço IP estático. Você também pode atribuir domínios personalizados.

O uso do Gerenciamento de API protege as APIs, agregando-as no Gerenciamento de API do Azure e não expondo seus microsserviços diretamente . Isso ajuda a reduzir a área de superfície para um possível ataque. Você pode autenticar solicitações de API usando uma chave de assinatura, um token JWT, um certificado de cliente ou cabeçalhos personalizados. O tráfego pode ser filtrado apenas para endereços IP confiáveis.

Com o API Management, também é possível executar regras em APIs . Você pode definir políticas de API em solicitações recebidas e respostas de saída globalmente, por API ou por operação da API. Existem quase 50 políticas, como métodos de autenticação, otimização, armazenamento em cache e transformações. Saiba mais visitando nossa documentação " Políticas de gerenciamento de APIs ".

O gerenciamento de API simplifica a mudança de APIs . Você pode gerenciar suas APIs ao longo de todo o ciclo de vida, desde a fase de design até a introdução de novas versões ou revisões. Ao contrário das revisões, espera-se que as versões contenham alterações significativas, como a remoção de operações da API ou alterações na autenticação.

Você também pode monitorar APIs ao usar o Gerenciamento de APIs . Você pode ver as métricas de uso em sua instância do Gerenciamento de API do Azure. Você pode registrar chamadas de API no Azure Application Insights para criar gráficos, monitorar o tráfego ao vivo e simplificar a depuração.

O gerenciamento de API facilita a publicação de APIs para desenvolvedores externos . O Azure API Management vem com um portal do desenvolvedor, que é um site gerado automaticamente e totalmente personalizável, onde os visitantes podem descobrir APIs, aprender como usá-las, testá-las interativamente, baixar sua especificação OpenAPI e finalmente se inscrever para adquirir chaves de API.

Como usar o gerenciamento de API com microsserviços

O Gerenciamento de API do Azure foi disponibilizado recentemente em uma nova camada de preços . Com seu faturamento por execução , o nível de consumo é especialmente adequado para arquiteturas baseadas em microsserviço e sistemas orientados a eventos. Por exemplo, seria uma ótima opção para nossa hipotética loja on-line.

Para sistemas mais avançados, outras camadas do Gerenciamento de API oferecem um conjunto de recursos mais sofisticado .

Independentemente da camada de serviço selecionada, você pode facilmente enfrentar suas funções do Azure com uma instância do Gerenciamento de API do Azure. Leva apenas alguns minutos para começar a usar o Gerenciamento de API do Azure .