Na NGINX, temos falado nos últimos anos sobre a necessidade de tornar os aplicativos verdadeiramente modernos e adaptáveis – portáteis, nativos da nuvem, resilientes, escaláveis e fáceis de atualizar. Mais recentemente, dois conceitos surgiram para facilitar a criação e a entrega de aplicativos modernos. O primeiro é o Platform Ops , onde uma equipe de plataforma de nível corporativo seleciona, mantém, conecta e protege todas as ferramentas que as equipes de desenvolvimento e DevOps precisam para fazer seu trabalho. A segunda é a mudança para a esquerda , o que significa integrar segurança de nível de produção, rede e monitoramento em aplicativos durante os estágios iniciais do ciclo de vida de desenvolvimento. Os desenvolvedores acabam tendo mais responsabilidade por funções que costumavam pertencer aos ITOps, mas ao mesmo tempo têm mais opções e mais independência sobre como exatamente implementam essas funções.
Embora isso pareça bom, na realidade é desafiador implementar o Platform Ops e “mudar para a esquerda” a infraestrutura e as ferramentas de operações. Por um lado, cada vez mais aplicativos estão sendo implantados de maneiras altamente distribuídas, em ambientes conteinerizados e usando um dos crescentes mecanismos de orquestração do Kubernetes. As empresas também querem implantar seus aplicativos em vários ambientes sem se preocupar com as diferenças entre nuvens e entre nuvens e ambientes locais.
Como deveriam, nossos clientes e a comunidade continuam solicitando nossa ajuda para os desafios que enfrentam. Eles querem todas as vantagens, mas juntar todas as peças – segurança, rede, observabilidade e monitoramento de desempenho, dimensionamento – requer trabalho de verdade. Tornar a plataforma resultante robusta o suficiente para ambientes de produção exige ainda mais trabalho. Eles se perguntam: “Por que não existe uma ‘imagem de ouro’ para aplicativos modernos que podemos lançar a partir de um único repositório?”
Essa é uma boa pergunta, e nós a encaramos como um desafio para encontrar uma boa resposta. Primeiro, reformulamos a questão em termos mais concretos. Acreditamos que nossos clientes e a comunidade estão se perguntando isso: “Você pode nos ajudar a integrar diferentes produtos de software em um todo mais coeso, ajustar a pilha para definir as configurações e definições corretas e nos poupar trabalho e problemas? E você pode facilitar a execução do aplicativo em diferentes nuvens sem precisar fazer grandes alterações de configuração devido a diferenças nos serviços e funcionalidades subjacentes?”
Vemos uma solução que realmente aborda essas questões como benéfica para toda a comunidade — não apenas para nossos parceiros em centenas de empresas e todos os principais fornecedores de nuvem — realmente uma vitória sem soma zero . O ideal é que a solução não seja um “brinquedo”, mas um código sólido, testado e pronto para ser implantado em aplicativos de produção ao vivo em ambientes Kubernetes. E, francamente, queremos que qualquer um possa roubar nosso trabalho diretamente do GitHub.
Para ir direto ao ponto, hoje no NGINX Sprint 2.0 estamos anunciando o lançamento da nossa solução: a primeira iteração da Modern Apps Reference Architecture (MARA), uma arquitetura de código aberto e modelo de implantação para aplicativos modernos. Esperamos que você goste, use, roube e, melhor ainda, modifique ou bifurque para melhorar ou personalizar. Esta postagem aborda o que construímos e como funciona.
Primeiro, vamos definir o aplicativo moderno e adaptável ideal. Ele pode ser composto de microsserviços, ser conteinerizado e aderir aos princípios de design nativo da nuvem (pouco acoplado, fácil de escalar, não vinculado à infraestrutura) – mas não precisa ser. Parte do espírito dos aplicativos modernos é arquitetar especificamente para aproveitar a abstração da infraestrutura. Esta definição é direta, mas importante porque estabelece o modelo básico para todas as arquiteturas de referência.
Os principais pilares de uma arquitetura de aplicativo moderna incluem portabilidade, escalabilidade, resiliência e agilidade.
Queríamos criar uma plataforma que atendesse aos requisitos básicos de definição e padrão de implantação de nossos aplicativos modernos. Além dos objetivos técnicos, queríamos ilustrar os princípios modernos de design de aplicativos e incentivar nossa comunidade a implantar no Kubernetes. E sim, queríamos oferecer código “roubável” com o qual desenvolvedores, DevOps e equipes de Platform Ops pudessem brincar, modificar e melhorar. Em suma, queríamos oferecer:
Aqui estão as escolhas de design e parceria que fizemos para a primeira versão da plataforma (para nossos planos para a próxima versão, veja Muito mais integrações e mais flexibilidade na versão 2 ). Acreditamos firmemente que tornar nosso aplicativo de referência inclusivo para parceiros é essencial para impulsionar o engajamento de parceiros e da comunidade.
Para instalar e implantar o aplicativo de exemplo, você emite um único comando para invocar o script de inicialização, e os seguintes projetos Pulumi são executados na ordem indicada. Cada nome de projeto é mapeado para um nome de diretório relativo ao diretório raiz do repositório . Para mais detalhes, consulte o README .
vpc - Define e instala VPC e sub-redes para usar com EKS └─eks - Implanta EKS
└─ecr - Configura ECR para uso em cluster EKS
└─kic-image-build - Cria nova imagem do NGINX Ingress Controller
└─kic-image-push - Envia a imagem criada na etapa anterior para ECR
└─kic-helm-chart - Implanta o NGINX Ingress Controller no cluster EKS
└─logstore - Implanta o Elastic log store no cluster EKS
└─logagent - Implanta o agente de registro Elastic (filebeat) no cluster EKS
└─certmgr - Implanta o gráfico cert-manager.io Helm no cluster EKS
└─anthos - Implanta o aplicativo Bank of Anthos no Cluster EKS
Reconhecemos que nosso esforço inicial pode não fornecer todas as integrações necessárias para seu ambiente Kubernetes. Platform Ops é sobre escolha inteligente, mas não ilimitada. Para facilitar que as equipes de operações de plataforma, DevOps e desenvolvedores testem e potencialmente adotem nossa nova plataforma de referência, planejamos muitas melhorias no curto prazo, incluindo:
Integrar com o NGINX Controller> para gerenciar e monitorar o NGINX Plus Ingress Controller
[ Editor – O NGINX Controller agora é o F5 NGINX Management Suite .]
Esperamos que nosso trabalho possa se tornar uma estrutura para outras plataformas de referência e um ponto de partida “roubável” para a construção de todos os tipos de aplicativos modernos diferenciados. Como o Kubernetes é um mecanismo tão poderoso tanto para a criação de aplicativos modernos quanto para o fortalecimento das operações de plataforma e da cultura shift-left, quanto mais expansiva e conectável for nossa arquitetura de referência, melhor. Estamos ansiosos para ver o que vocês, a comunidade, pensam sobre nosso trabalho e, mais importante, o que vocês construirão com ele.
Baixe nossa plataforma de referência e experimente. Diga-nos o que você pensa e o que você quer que construamos em seguida. Solicitações de pull são mais que bem-vindas. Estamos ansiosos para fazer parceria com você na próxima geração de aplicativos modernos, adaptáveis e "roubáveis" que retribuem à comunidade e a todos os desenvolvedores.
Esta postagem faz parte de uma série. À medida que adicionamos recursos ao MARA ao longo do tempo, publicamos os detalhes no blog:
"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."