Na minha última apresentação no AWS Melbourne User Group, mergulhei fundo no AWS Fargate, explorando os desafios que ele resolve e as nuances de sua arquitetura. Também compartilhei um pouco da minha trajetória, relembrando minha primeira palestra no AWSUG em 2012.
O evento proporcionou uma visão abrangente sobre o AWS Fargate, desde os seus fundamentos até as considerações de preço e as plataformas de agendamento de contêineres suportadas. A conversa foi além, abordando as limitações em grande escala e as melhores abordagens para diferentes modelos operacionais.
Participando do AWSUG em agosto de 2012
Por que usar AWS Fargate?
O AWS Fargate busca solucionar desafios cruciais enfrentados por equipes de desenvolvimento. Com a crescente popularidade de aplicações 12-factor, os times querem focar na implantação de contêineres, sem se preocupar com a gestão da infraestrutura subjacente.
Manter os sistemas operacionais sempre atualizados pode ser uma tarefa complexa e muitas vezes negligenciada. O AWS Fargate simplifica este processo, permitindo que as equipes se concentrem no que realmente importa: o desenvolvimento e a implantação de suas aplicações.
Além disso, a segurança é um ponto chave. Com o AWS Fargate, a tecnologia Firecracker VM oferece isolamento de segurança para contêineres baseados em Linux e funções Lambda. Os recursos de computação aparecem na sua conta AWS e são compartilhados através de uma interface de rede (ENI).
Essa arquitetura garante que seus contêineres rodem em um ambiente isolado e seguro, protegendo suas aplicações de possíveis vulnerabilidades e ataques. É uma camada extra de proteção que simplifica a gestão da segurança em ambientes de contêineres.
Arquitetura do AWS Fargate
A arquitetura do AWS Fargate é baseada na tecnologia Firecracker VM, que oferece isolamento de segurança para contêineres Linux e funções Lambda. O recurso de computação aparece na sua conta AWS e é compartilhado via uma interface de rede (ENI).
Essa arquitetura permite que você execute contêineres sem se preocupar com a infraestrutura subjacente, como servidores ou máquinas virtuais. Você define os requisitos de CPU e memória para seus contêineres, e o AWS Fargate provisiona e gerencia os recursos necessários.
O resultado é uma plataforma escalável e eficiente para executar aplicações em contêineres, com foco na segurança e na facilidade de uso. É uma solução ideal para empresas que desejam modernizar suas aplicações e adotar práticas de DevOps.
E, falando em modernização, o AWS Fargate se integra facilmente com outras ferramentas e serviços da AWS, permitindo que você construa soluções completas e personalizadas para suas necessidades. Seja para aplicações web, APIs ou microservices, o AWS Fargate oferece a flexibilidade e o desempenho que você precisa.
Considerações sobre Preços
O preço do AWS Fargate varia conforme alguns fatores. Um deles é a escolha entre instâncias Spot e sob demanda. A arquitetura ARM vs X86 também é importante (note que o Windows Fargate ainda não suporta ARM).
O sistema operacional também impacta no preço: usar Windows gera custos adicionais de licenciamento. Por fim, a alocação de CPU e memória é feita a partir de um menu predefinido, já que configurações customizadas não estão disponíveis.
É crucial entender esses fatores para otimizar os custos e garantir que você está pagando apenas pelos recursos que realmente precisa. Planejar a capacidade e escolher a arquitetura correta são passos importantes para economizar.
Além disso, fique de olho nas promoções e descontos oferecidos pela AWS. Eles podem ajudar a reduzir ainda mais os custos do AWS Fargate, tornando-o uma opção ainda mais atraente para sua empresa. Uma boa dica é monitorar regularmente o preço de outros serviços também.
Plataformas de Agendamento de Contêineres
A AWS oferece duas plataformas principais para agendamento de contêineres: o Elastic Kubernetes Service (EKS) e o Elastic Container Service (ECS). Ambas as plataformas suportam a execução de contêineres no AWS Fargate.
Além disso, ambas também permitem a execução de contêineres em instâncias EC2 autogerenciadas (ou nodegroups gerenciados no EKS) e modelos de implantação mistos. Essa flexibilidade permite que você escolha a plataforma que melhor se adapta às suas necessidades e habilidades.
Se você já possui experiência com Kubernetes, o EKS pode ser a escolha certa. Caso contrário, o ECS pode ser uma opção mais simples e fácil de usar. A decisão depende dos seus requisitos específicos e do seu nível de familiaridade com cada plataforma.
Em resumo, tanto o ECS quanto o EKS oferecem suporte ao AWS Fargate, permitindo que você aproveite os benefícios dessa tecnologia, independentemente da plataforma de agendamento de contêineres que você escolher. O importante é avaliar suas necessidades e escolher a opção que melhor se adapta ao seu caso de uso.
ECS vs EKS: Principais Diferenças
O Elastic Container Service (ECS) é altamente opinativo e simples, além de ser específico da AWS. Ele suporta modelos operacionais descentralizados (“você constrói, você executa”) e é adequado para múltiplos clusters ECS.
Já o Elastic Kubernetes Service (EKS) é altamente flexível, com um rico ecossistema de plugins. Ele requer habilidades especializadas para operar de forma eficaz, sendo mais adequado para operações centralizadas e tipicamente usando menos clusters, porém maiores.
A escolha entre ECS e EKS depende do seu modelo operacional e das suas necessidades específicas. Se você busca simplicidade e facilidade de uso, o ECS pode ser a melhor opção. Se você precisa de mais flexibilidade e controle, o EKS pode ser mais adequado.
Além disso, considere o tamanho e a complexidade da sua aplicação. Para aplicações menores e menos complexas, o ECS pode ser suficiente. Para aplicações maiores e mais complexas, o EKS pode oferecer os recursos e a escalabilidade necessários. Lembre-se que a eficiência é fundamental.
Escolhendo a Abordagem Correta
Ao escolher entre ECS e EKS, considere o modelo operacional da sua organização. Para operações centralizadas tradicionais de SRE, o EKS pode ser preferível. Para operações descentralizadas que empoderam as equipes, a simplicidade do ECS pode ser vantajosa.
Independentemente da escolha da plataforma, as ferramentas de golden path focadas no desenvolvedor permanecem cruciais. Elas ajudam a simplificar o processo de desenvolvimento e implantação, permitindo que os desenvolvedores se concentrem no que realmente importa: a criação de aplicações de alta qualidade.
Essas ferramentas podem incluir templates de projetos, pipelines de CI/CD automatizados e outras funcionalidades que facilitam o trabalho dos desenvolvedores. Ao investir nessas ferramentas, você pode aumentar a produtividade da sua equipe e acelerar o ciclo de vida do desenvolvimento de software.
Portanto, ao escolher entre ECS e EKS, não se esqueça de considerar o impacto na experiência do desenvolvedor. Uma plataforma que é fácil de usar e que oferece as ferramentas certas pode fazer toda a diferença no sucesso do seu projeto.
Limitações do AWS Fargate em Escala
Ao operar em grande escala, o AWS Fargate no EKS tem algumas limitações. Por exemplo, não é possível executar daemonsets (requer sidecar pattern). Existe também o risco de overprovisioning se os requisitos do pod não se alinharem com as opções de lançamento do AWS Fargate.
Para uma abordagem intermediária, considere o Bottlerocket como um AMI no EKS para reduzir os riscos de segurança em nível de SO. Adicionalmente, executar o kube-scheduler no AWS Fargate (incluindo o Karpenter) enquanto usa o Karpenter para gerenciar nós baseados em EC2 oferece um excelente compromisso.
Essas soluções alternativas podem ajudar a mitigar as limitações do AWS Fargate em grande escala, permitindo que você aproveite os benefícios dessa tecnologia sem comprometer a segurança ou o desempenho. É importante avaliar cuidadosamente suas necessidades e escolher a abordagem que melhor se adapta ao seu caso de uso.
Além disso, fique atento às novidades e atualizações do AWS Fargate. A AWS está constantemente trabalhando para melhorar a plataforma e adicionar novos recursos, o que pode ajudar a resolver algumas das limitações existentes. Acompanhar as novidades é crucial para otimizar o uso da plataforma.
Este é o vídeo da minha apresentação: aqui.
Este conteúdo foi auxiliado por Inteligência Artificial, mas escrito e revisado por um humano.