Olá pessoal, bem vindos de volta a nossa jornada cloud. Vamos continuar agora com a nossa aula de ECS, mas dessa vez com Fargate. Os passos são basicamente os mesmos. Eu preciso aqui de uma imagem no ECR, nós já temos essa imagem. Eu preciso de um cluster, preciso agora de uma imagem no ECR, nós já temos essa imagem. Eu preciso de um cluster, preciso agora de uma task definition. O que eu não preciso no AWS Firegate? Máquinas. Quando eu uso o AWS Firegate, a minha task é gerenciada sem servidor. Eu não preciso configurar um servidor para ter o uso desses serviços no caso. Então, assim como lá na Lambda, a gente tem poucas configurações para isso. Muito simples. Vamos acessar o painel do ECS. Vamos criar um cluster. Vou chamar aqui de cluster API Fargate. Vou manter aqui como Fargate. Monitoramento não preciso nada nota que a configuração do cluster por ser fargate é muito mais simples configuração dele no uso do fargate é muito mais fácil da gente configurar e da gente rodando ali bom vou criar aqui ele está em andamento novamente o que ele provisiona no cloud formation ele me traz uma pilha só que olha tem bem menos coisa pra poder gerenciar tá vendo bem menos coisas pra poder trabalhar tá porque aqui ele não tem que criar todas aquelas coisas com máquinas né com famílias de máquina é lá no EC2, VPC, Security Group da máquina, então são coisas muito mais simples para a gente poder configurar. Então, eu posso ter um cluster que tenha EC2 e Firegate? Eu posso. Não tem nada na AWS que me impeça de ter esse provedor de capacidade, tá bom? Mas eu recomendo que a gente nunca agregue esses itens ao mesmo cluster, porque fica muito difícil de manutenciar depois, tá bom? Então, vamos lá, Firegate, clusteruster Pode notar Minha infraestrutura Provedor de capacidade Já vem aqui com Firegate Lembrando que Spot Ele segue a mesma ideia Ele me dá ali Recursos de máquina que ele não está usando Me cobra muito mais barato Por isso Só que Se se tiver no Spot, ele pode simplesmente falar, opa, eu interrompo essa tarefa na hora que eu quiser, te dou outra, logicamente, porque você tem uma configuração de mínimo de máquina, de mínimo de tasks, mas se eu precisei daquela máquina ali, eu simplesmente interrompo e provisiono outra coisa para você, tá bom? Então, e me cobra bem mais barato por isso. Aqui já está o serviço Spot. A gente vai direto aqui para a definição de tarefa. Por quê? Porque a nossa imagem ICR é uma imagem Docker. Ela não é uma imagem que está atrelada a determinada máquina. Não, ela é uma imagem Docker. Então, eu não preciso me preocupar nesse momento em trazer uma outra imagem aqui pra gente mas eu preciso criar uma nova task definition então vou criar aqui uma nova definição de tarefa vou criar aqui uma nova definição de tarefa vou colocar aqui o nome dela, vou chamar de API fargate, vou falar que ela é instancia no fargate, tá bom? Ela já inicializa ali no fargate, linux, tamanho da CPU, vou colocar aqui com meia CPU, e aqui ele já me dá ó, o casalzinho, quanto que eu posso ter posso ter olha da meia cpu eu posso ter até 4 giga de memória de 1 a 4 agora se eu quiser ter mais memória eu não posso ter meia cpu é sempre no casalzinho tá tal como lá na lambda eu escalo cpu conforme escalo memória, que dentro de um determinado range de CPU e de memória, eu posso fazer um casal de CPU por memória. Eu não escolho o tipo de máquina, eu escolho apenas recursos. Quero seguir com o Giga. Novamente, a função da tarefa vai permanecer sendo a mesma de execução. Recomendo para vocês que quando estiver trabalhando com isso dentro da sua empresa, dentro da sua aplicação, você crie uma função de tarefa apartada para poder trabalhar a sua aplicação, porque um é o que ela pode, como executora, buscar imagens e guardar logs, e outro é o que ela pode como ação, a sessão S3, a sessão e-bucket, a sessão SQS, SEMM. Vou criar aqui um container, vou chamar de API Fargate e lá no meu ECR vou copiar meu URI, é o mesmo, tá bom? Então, vou manter ele aqui, porque a imagem não pertence a uma máquina, ela pertence a um Docker, né? Ela pode rodar em qualquer lugar. Porta do container é 8080, não vou trabalhar nada disso, registro de log vou continuar pegando para o meu amiguinho aqui do cloudwatch poderia configurar os mesmos itens que eu configuraria ali para o EC2 de fato o que muda é o provedor de capacidade antes eu estava querendo um recurso de marketing e eu tinha que calcular quanto que eu precisaria ter para escalar lá dentro funcionar lá dentro aqui. Eu só escolho o CPU e memória e ele vai garantir a entrega para mim. Tá bom? Então, log, entidade, não vou fazer mais nada. Vou criar a minha task definition. Tá bom? Criei aqui a minha task definition, API for gate 1. Agora eu volto aqui ao meu cluster e eu vou criar o meu serviço estratégia do provisor de capacidade vou usar firegate spot porque é mais barato como é um teste eu não tenho problema em lidar com interrupções claro pessoal essa interrupção ela não é uma interrupção de minuto em minuto ela pode ser uma uma interrupção que vai muito além daquilo que a gente está achando. Eu já vi tasks no Spot durarem dias sem serem interrompidas. Isso vai depender muito mais da região que eu estou do que do provedor em si. Porque o provedor interromperia uma capacidade dele. provedor em si, porque o provedor ele interrompe uma capacidade dele, né? Então, se eu tô numa região como Norte Virgínia mais concorrida, eu vou ter bem mais interrupções no meu spot. Se eu tô numa região como São Paulo, que é uma região mais cara, consequentemente menos concorrida, eu vou ter bem menos interrupções, tá bom? Então, a gente vai manter como spot aqui. Não vou mexer nada mais aqui dentro, deixa a última versão, família API FireGate, a revisão mais recente, como falei isso é crescente conforme as minhas publicações, tarefas desejadas uma, não vou reconferir auto scaling, não vou conferir balanceamento de carga neste momento, vou só criar o meu serviço, na verdade vou conferi rede colocar na minha bpc de teste vou tirar aqui nesse subrede privada pela do público poderia criar serviços para ir para o privado sim poderia manter aqui no público tal como a gente tem seguido bom a um grupo de segurança vou colocar security group não vou trabalhar mais nenhum item aqui dentro somente o nome do serviço API freegate criar e agora ele começa a implantação, essa implantação pode demorar alguns minutos, tá bom? Principalmente dependendo da região que você tá, aonde ele tá pedindo coisas ali no caso como nós pedimos pro Cargate Spot. Tal como no EC2, ele também cria o serviço lá no CloudFormation provisiona os itens no CloudFormation, para que a gente possa estar recebendo o nosso serviço já criou aqui o serviço, mas se eu notar aqui, ele está fazendo deploy da task, por que? ainda está em andamento está em execução vamos clicar nele aqui para ver se você clicar aqui em implantações, você vê que está rolando uma implantação, então uma explantação em andamento, está aqui no horário que nós começamos, está bem? vamos ver as tasks olha só já temos uma task em andamento vamos olhar ela se eu clicar aqui e olhar para logs, olha aí a minha aplicação já levantou na porta especificada não preciso de máquina, sabe não preciso de fato me preocupar aonde essa aplicação está rodando eu sei que é na região da AWS eu sei que é responsável porque o responsável está na minha conta, eu sei que ela está na minha VPC a AWS está gerenciando isso para mim e está me cobrando um valor muito baixo por isso o Fargate Spot melhor dizendo, a AWS Fargate, tanto na versão Spot quanto no Fargate comum, sendo que para a produção o Spot não é recomendado nem pela AWS, exatamente pelas interrupções que são possíveis, ele é uma forma inteligente, uma forma bacana da gente analisar o uso dos nossos recursos, avaliar o uso dos nossos recursos aqui. Por exemplo, ele está te cobrando por segundo que está sendo executado a memória. Então, quanto mais eu estou executando, mais eu vou pagar. Se eu parar, eu paro também de pagar. Igual lá na Lambda. Mas qual que é a vantagem dessa aqui? Eu não tenho os timeouts que a Lambda tem. A Lambda tem 15 minutos para executar o seu processo. Se ela passasse um processo demorado, não deveria estar em uma Lambda, mas vamos dizer que acidentes acontecem, né? Ela iria resetar a operação, iria fazer um retry daquilo, né? E poderia ficar ali fazendo as suas retentativas padrão. Já no Fargate, não. Ele iria executar a tua operação até o final e te cobraria apenas pela memória não usada, mas pela memória provisionada. Por quê? Lá na Lambda ele te cobra pela memória que eu estou usando, dentro do limite. Aqui ele está cobrando você pelo que ele provisionou. Então se eu chamar essa API, se eu não chamar essa API, ele vai me cobrar pelo que ele já provisionou de infraestrutura para mim. Bom, então pessoal, é isso. Você vê, é muito simples. ECS é um dos serviços que você mais vai usar para deploy das suas aplicações. Lembrando que, diferente da Lambda, aonde eu tenho as linguagens que a Lambda sabe falar, Java, Node, Python, no ECS quem manda na linguagem que eu vou usar sou eu. Então, se eu estiver usando uma linguagem que apenas a minha empresa usa, com o framework interno, não sei se é o caso, Esse é o caso. Desde que eu coloque isso dentro de uma imagem no ECR, eu coloco isso dentro de uma máquina, dentro de um Fargate, sem nenhum outro problema. Bom, então é isso, Fargate Spot. Obrigado por nos acompanharem até aqui. Lembrem-se, se vocês tiverem máquinas instanciadas aí no ECS, desliguem. Lembrem de excluir. Se você não for usar mais esse cluster, exclui ele, tá bom? Tanto do Fargate como do Spot, para você não ficar sendo cobrado aí desnecessariamente, tá bom? Então, muito obrigado aí mais uma vez e boa sorte.