Com a chegada dos containers estamos deixando de ser surpreendidos por comportamentos inesperados em ambientes produtivos. Eles deram aos desenvolvedores a oportunidade de criar aplicações em ambientes de desenvolvimento e implementá-los integralmente em ambientes produtivos.
Os containers trouxeram muitos benefícios como padronização, escalabilidade, isolamento e economia de recursos.
Uma aplicação pode ser constituída de um ou mais containers e com a grande adoção dessa tecnologia, gerenciá-los tornou-se uma árdua missão e os orquestradores de containers se tornaram fundamentais. Na AWS podemos encontrar tais orquestradores para serem utilizados como serviço e neste artigo falaremos do AWS ECS e do AWS Fargate.
O ECS (Elastic Container Service) é um serviço de orquestração de containers totalmente gerenciado e se integra com todo o ecossistema da AWS, incluindo CloudTrail, CloudWatch e Amazon ECR (Elastic Container Registry).
Ele oferece mais controle sobre a sua infraestrutura, mas a desvantagem é o gerenciamento adicional que vem com ele.
No modelo com servidor (instâncias EC2) os usuários pagam pelos custos de computação por hora. Isso permite otimizar o custo aproveitando-se de modelos de cobrança como as instancias spot (oferecem descontos de até 90%) ou instâncias reservadas (obtenha um desconto fixo por se comprometer com uma instância por um determinado período).
Processamento de imagens e vídeos com o uso de machine learning são casos que se beneficiam deste serviço, pois requerem instancias de alta performance (GPU) que são capazes de reduzir o tempo de treinamento de machine learning drasticamente.
O AWS Fargate permite gerenciar containers sem servidores e é compatível com o ECS e com o EKS.
A escolha sobre os tipos de instancias e dimensionamento de clusters não é uma preocupação do usuário, sendo uma boa opção pela facilidade de uso. Funciona muito bem para a maioria das cargas de trabalho e permite um ritmo mais rápido de entrega. Essa é uma consideração importante para as equipes que desejam ser ágeis e inovadoras.
O custo é baseado na utilização de núcleos de CPU e tamanho da tasks que são previamente configuradas, o que ajuda a garantir que você não desperdice dinheiro com recursos que não são utilizados.
Decisões sobre qual serviço deve ser utilizado sempre devem levar em consideração o custo. Em média o custo de executar cargas de trabalho no Fargate é três vezes maior do que executar as mesmas cargas de trabalho no EC2.
Além disso, usar o Fargate significa que os clientes também não podem usar suas instâncias reservadas existentes.