Rodando containers Graviton na AWS
Com o objetivo de aprimorar nossos conhecimentos e trazer novidades e inovações no ramo da Tecnologia para o mercado brasileiro, a Enkel teve a oportunidade de comparecer ao re:Invent 2022 da Amazon Web Services (AWS) que ocorreu em Las Vegas de 28/Nov a 02/Dez.
De demonstrações de produtos inovadores a palestras instigantes, o evento foi uma experiência verdadeiramente enriquecedora para nossa equipe. Esperamos que, ao compartilhar nossos aprendizados com você, possamos fornecer um pouco dessa experiência e gerar inspiração para buscar oportunidades semelhantes de crescimento e aprendizado.
Há quatro anos atrás, em Novembro de 2018, a AWS fez seu primeiro lançamento da tecnologia Graviton. Processadores baseados na arquitetura Arm projetados para fornecer alto desempenho e computação econômica para diversos workloads como servidores de aplicação, microsserviços, high-performance computing (HPC), machine learning baseado em CPU entre outros.
Seguindo seu viés de inovação constante, a AWS lançou sua segunda geração de processadores, Graviton2, cerca de um ano depois. Prometendo uma melhora de até 40% em preço/performance quando comparado a instâncias equivalentes utilizando a arquitetura x86, este foi um dos anúncios mais impactantes feito pelo atual presidente e CEO da Amazon, Andy Jassy, durante o re:Invent de 2019.
O AWS Graviton3, que é a mais recente geração destes processadores, foi anunciado mais um vez durante o re:Invent, no final de 2021, e apesar de todas as inovações extremamente disruptivas já implementadas com as gerações anteriores, o Graviton3 consegue fornecer um desempenho de computação até 25% melhor que a geração anterior em workloads comuns, e até o triplo de performance em alguns workloads específicos como Machine Learning.
Com todos esses benefícios em economia, performance e sustentabilidade (surpreendente 60% menor consumo de energia em relação a instâncias x86 equivalentes) existentes na utilização desta arquitetura de processadores, não é estranho nos perguntarmos o porquê ainda eixstem tantas empresas rodando a maior quantidade, senão todos seus workloads em instâncias que utilizam a arquitetura x86.
A resposta para essa pergunta é que a adoção de tal tecnologia tão disruptiva não vem sem seus desafios. Sem sombra de dúvidas um dos maiores desafios está no processo de garantir que seu software e aplicações sejam compatíveis com os processadores Arm, uma vez que os conjuntos de instruções para os processadores x86 e Arm são diferentes. Como uma explicação simplista desta diferença podemos dizer que processadores x86 fazem uso da arquitetura complex instruction set computer (CISC), enquanto processadores Arm utilizam a arquitetura reduced instruction set computer (RISC). Isso significa que o conjunto de instruções x86 inclui muitas instruções que podem executar operações complexas, enquanto o conjunto de instruções ARM inclui uma menor quantidade de instruções, sendo estas mais simples.
Com o intuito de endereçar tais desafios, Michael Fischer e Seth Fox , ambos Arquitetos de Solução da AWS ministraram um chalk-talk durante o re:Invent de 2022 em Las Vegas. Abaixo falamos um pouco sobre os principais pontos abordados durante essa sessão.
Escolha a instância correta para seu workload
Em primeiro ponto, é importante entender os principais tipos de instâncias Graviton e fazer a escolha correta de acordo com seu workload.
Faça uso do multi-architecture manifest do Docker
O multi-architecture manifest do Docker é um recurso que permite especificar várias arquiteturas de destino para uma imagem do Docker. Isso significa que os usuários podem criar uma única imagem do Docker que pode ser executada em vários tipos diferentes de hardware, incluindo dispositivos baseados em x86 e ARM.
Para usar este recurso, é necessário apenas criar um arquivo de manifesto que especifique as arquiteturas de destino para sua imagem. O arquivo de manifesto inclui uma lista das diferentes versões da imagem disponíveis para cada arquitetura. Quando um usuário extrai a imagem do Docker, este seleciona automaticamente a versão apropriada para o hardware de destino. Esse recurso é de utilidade inestimável pois permite centralizar o desenvolvimento de suas imagens.
Recomendados pelo LinkedIn
Defina sua estratégia de build
Para o build, três opções foram abordadas pelos apresentadores do chalk-talk. Com base em suas necessidades e recursos já disponíveis atualmente, uma pode ser mais interessante que a outra, embora as três opções sejam válidas.
Considere o padrão de multi-arquitetura na hora construir seus pipelines
Considerar esse padrão na hora de construir seus pipelines de CI/CD permite desenvolver e implantar seu código em várias arquiteturas a partir de um único repositório, economizando tempo e esforço, pois não será necessário manter bases de código separadas para cada arquitetura. Assim, garante-se também que seu código seja consistente, ajudando a reduzir erros e melhorar a qualidade geral de seu software.
Como provisionar containers Graviton na AWS?
Para provisionar sua aplicação em container, utilizando Graviton e fazendo uso do AWS Fargate para não precisar se preocupar com o ônus de gerir os hosts, basta apenas fazer as declarações de requireCompatibilities e runtimePlatform conforme abaixo na task definition do seu serviço no AWS ECS.
No geral, os processadores AWS Graviton são uma opção poderosa e econômica para empresas que buscam executar workloads na nuvem. Eles oferecem melhor desempenho e eficiência de energia e podem lidar com uma ampla gama de workloads. À medida que mais e mais empresas recorrem à nuvem para atender às suas necessidades de computação, os processadores Graviton naturalmente se tornarão uma parte cada vez mais importante do ecossistema da nuvem.
E você, tem interesse em começar a tirar proveito dessa tecnologia inovadora nos workloads de sua empresa? A Enkel, sendo um Advanced Partner da AWS e tendo uma vasta experiência na implantação de diversos tipos de workloads na nuvem, pode te ajudar a facilitar essa transição. Entre em contato com nosso time! www.enkel.com.br/sobre/