Geral

P: O que é o AWS App Mesh?

R: O AWS App Mesh facilita monitorar, controlar e depurar a comunicação entre os serviços. O App Mesh usa o Envoy, um proxy de malha de serviço de código aberto, que é implantado juntamente com seus contêineres de microsserviços. O App Mesh é integrado aos serviços da AWS para monitoramento e rastreamento e funciona com muitas ferramentas populares de terceiros. O App Mesh pode ser usado com contêineres de microsserviços gerenciados pelo Amazon ECS, Amazon EKS e AWS Fargate, com Kubernetes executado na AWS e com serviços executados no Amazon EC2.

P: Por que devo usar o App Mesh?

R: O App Mesh facilita a obtenção de visibilidade, segurança e controle sobre a comunicação entre seus serviços, sem a necessidade de criar código novo ou executar uma infraestrutura adicional da AWS. Usando o App Mesh, você pode padronizar como os serviços se comunicam, implementar regras para a comunicação entre os serviços e capturar métricas, logs e rastreamentos diretamente em produtos da AWS e ferramentas de terceiros de sua preferência.

P: Como funciona o App Mesh?

R: O App Mesh configura e gerencia uma malha de serviço para seus serviços. Para fazer isso, você executa o proxy Envoy de código aberto juntamente com cada serviço, e o App Mesh configura o proxy para processar todas as comunicações de entrada e saída de cada contêiner. O App Mesh coleta métricas, como taxas de erro e conexões por segundo, que podem ser exportadas para o Amazon CloudWatch usando um coletor statsd. Com as APIs do App Mesh, você pode rotear o tráfego com base em caminho ou ponderações para versões de serviço específicas.

P: O que é uma malha de serviços?

R: Uma malha de serviços é uma nova camada de software que administra toda a comunicação entre os serviços. Ela fornece novos recursos para conectar e gerenciar conexões entre serviços e é independente do código de cada serviço, permitindo que ela trabalhe além dos limites de rede e com vários sistemas de gerenciamento de serviços.

Integrações

P: Como o App Mesh funciona com o Amazon Elastic Container Services (ECS) e o AWS Fargate?

R: O App Mesh fornece novos recursos de comunicação, observação e gerenciamento para aplicativos gerenciados pelo Amazon ECS e pelo AWS Fargate. Você adiciona a imagem do proxy Envoy à definição da tarefa. O App Mesh gerencia a configuração do Envoy para fornecer recursos de malha de serviço. O App Mesh exporta métricas, logs e rastreamentos para os endpoints especificados na configuração de inicialização do Envoy fornecida. O App Mesh fornece uma API para configurar rotas de tráfego e outros controles entre os microsserviços habilitados para a malha.

P: Como o App Mesh funciona com o Amazon Elastic Container Service for Kubernetes (EKS)?

R: Use o controlador de código aberto AWS App Mesh e o controlador mutante de admissão de webhooks. Esses controladores conectam seus serviços de Kubernetes ao App Mesh e garantem a injeção do proxy Envoy nos seus pods. O App Mesh exporta métricas, logs e rastreamentos para os endpoints especificados na configuração de inicialização do Envoy fornecida. O App Mesh fornece uma API para configurar rotas de tráfego e outros controles entre os microsserviços habilitados para a malha.

P: Como o App Mesh funciona com serviços executados no Amazon EC2?

R: Execute o proxy do Envoy como um contêiner ou processo em sua instância do EC2. Use o contêiner de inicialização do proxy de contêiner fornecido pela AWS ou execute seu próprio script para redirecionar o tráfego da rede na instância por meio do proxy. O App Mesh gerencia a configuração do Envoy para fornecer recursos de malha de serviço. O App Mesh exporta métricas, logs e rastreamentos para os endpoints especificados na configuração de inicialização do Envoy fornecida. O App Mesh fornece uma API para configurar rotas de tráfego e outros controles entre os microsserviços habilitados para a malha.

P: Por que devo usar o App Mesh em vez de AWS Elastic Load Balancers?

R: Recomendamos usar o AWS Elastic Load Balancing para processar todo o tráfego da Internet e o tráfego de clientes que não estão dentro do seu limite de confiança. Para serviços internos que se conectam a outros serviços em uma região da AWS, o App Mesh oferece flexibilidade, consistência e um maior grau de controle e monitoramento para comunicação entre serviços.

Monitoramento, registro em log e rastreamento

P: Que tipo de recursos de monitoramento é oferecido pelo App Mesh?

R: Com o App Mesh, você obtém métricas e logs consistentes para cada salto entre serviços. Esses logs e métricas incluem metadados, como nomes de serviços e identificadores de solicitações. Com eles, você pode agregar, filtrar e ver painéis gráficos da comunicação entre os serviços usando ferramentas como o Amazon CloudWatch. Os painéis comuns podem incluir taxas e códigos de erro entre o serviço e os serviços dependentes. O App Mesh coleta automaticamente rastreamentos para cada serviço e facilita a visualização de um mapa de serviços com detalhes de todas as chamadas de API dos serviços. Esses recursos facilitam a depuração e a identificação da causa raiz dos problemas de comunicação entre seus microsserviços.

P: Posso usar ferramentas de terceiros para monitorar, registrar em log ou rastrear com o App Mesh? Sim.

R: Sim. O App Mesh oferece suporte a qualquer ferramenta de terceiro que funcione com o Envoy. Isso inclui as ferramentas Splunk, Prometheus, Jaeger, Flagger e Grafana, bem como soluções de rastreamento aberto como Zipkin e LightStep.

Controle de tráfego

P: Que tipo de controles de tráfego o App Mesh oferece?

R: O App Mesh oferece um conjunto de controles do lado do cliente para roteamento de tráfego. O App Mesh fornece APIs para rotear o tráfego entre aplicativos com base em nomes e versões de serviços. Essas capacidades facilitam a implantação de novas versões dos seus microsserviços.

Autenticação serviço a serviço

P: Como o App Mesh dá suporte à identidade da aplicação?

O mutual TLS (mTLS) oferece uma maneira de aplicar a identidade da aplicação na camada de transporte e permitir ou rejeitar conexões de cliente com base no certificado apresentado. O AWS App Mesh é compatível com a imposição de identidade de aplicação cliente usando certificados X.509, chamada de segurança mútua de camada de transporte, do inglês mutual transport layer security (mTLS). Para configurar o mTLS, é necessário configurar o cliente para fornecer um certificado ao serviço do servidor como parte da negociação de sessão TLS durante a inicialização da solicitação. Esse certificado é usado pelo servidor para identificar e autenticar o cliente, verificando se o certificado é válido e foi emitido por uma Certificate Authority (CA – Autoridade certificadora) confiável, e identificando o cliente usando o Subject Alternative Name (SAN – Nome alternativo do assunto) no certificado.

Q: Por que devo usar o mTLS com o AWS App Mesh?

Os microsserviços também têm requisitos específicos de segurança, inclusive criptografia de tráfego ponta a ponta e controle flexível de acesso a serviço, que podem ser atendidos com uma malha de serviços. A implementação de mTLS do AWS App Mesh permite que suas aplicações cliente verifiquem os servidores e fornece criptografia de tráfego, e o mTLS oferece autenticação de pontos usada para autenticação serviço a serviço. Ela adiciona uma camada de segurança sobre o TLS que permite que seus serviços verifiquem o cliente que está realizando a conexão. A divisão de uma aplicação monolítica em microsserviços e a execução deles em uma malha de serviços oferece diversos benefícios, inclusive uma melhor visibilidade e roteamento inteligente de tráfego.