Não tenho certeza se este é um fórum certo para fazer perguntas com relação à arquitetura de infraestrutura. Mas postando a pergunta esperando que sim:
Um dos meus clientes tem uma aplicação web que é desenvolvida na mais recente tecnologia de micro serviços. Kubernetes é a camada subjacente. E ainda por cima estão usando CDN, API hosting etc. Agora, do ponto de vista da nuvem pública, (azure ou AWS), como posso arquitetar a infra aqui? Tenho algumas perguntas em relação aos serviços que eles usam. Para simplificar, falarei do Azure POV. Decidiu-se usar os seguintes componentes do Azure:
CDN do Azure, gateway de aplicativo do Azure, Azure FrontDoor.
Estou confuso sobre o fluxo de chamadas com esses serviços. Do cliente (como navegador da Web), quando há uma solicitação para o aplicativo, o conteúdo estático precisa ser respondido pela CDN do Azure e os outros conteúdos dinâmicos verificando o contêiner ou servidor. Então, isso é o que eu suponho no fluxo de chamadas:
Browser -> Azure Front Door -> Application Gateway -> API Management Microservice -> Other Microservices -> Azure CDN -> Browser
Isso está correto? Se não, você pode me orientar para entender uma arquitetura melhor. Qualquer ajuda seria realmente apreciada.
Ok, primeiro você tem alguns serviços diferentes fazendo a mesma coisa lá, então você quer avaliar se você precisa de todos eles.
Quer você escolha Front Door ou CDN, eles querem estar na frente da sua pilha. Idealmente, você deseja que o tráfego atinja o FD/CDN, obtenha uma resposta em cache e que seja o fim da solicitação.
Se você não pode servir a partir do Cache, agora você precisa colocar seu tráfego no Kubernetes, então seu recurso de frente de pilha (CDN ou Front Door) agora será encaminhado para a forma como você expõe seu cluster Kubernetes para o mundo exterior. Isso pode ser o App Gateway se você decidir que precisa dele, um balanceador de carga externo ou o Gerenciador de API do Azure se estiver usando isso para expor APIs.
O Front Door é um serviço global que não está conectado ao vNet. Seu cluster do Kubernetes é conectado à vNet, portanto, você precisa de uma maneira de expor seus recursos do Kubernetes ao Front Door. Isso pode ser feito com o App GW, mas adiciona uma despesa extra, você também pode configurar sua entrada do Kubernetes com um Azure Load Balancer com um IP público e, em seguida, conversar com a porta da frente.
Se você se livrar do App GW, precisará de outro controlador de ingresso em execução em seu cluster, como NGinx, Traefik, etc. Alternativamente, você pode manter o App GW, mas eu usaria CDN em vez de Front Door.
Front Door e CDN usam os mesmos endpoints e, portanto, oferecem o mesmo cache.