Fala galera, espero que vocês tenham curtido muito o hands-on que vocês fizeram agora com a Minadab E agora a gente vai para o segundo módulo, parabéns por ter terminado o primeiro Vamos aprofundar um pouco mais no segundo módulo E para falar desse módulo a gente vai entrar em alguns novos conceitos aqui com vocês Então a gente vai falar primeiramente de um conceito chamado Serverless Para quem ainda não conhece, esse conceito basicamente é onde você pensa em uma aplicação ou em algum tipo de serviço que você não precisa fazer provisionamento de infra, manutenção e assim por diante. Então, é o conceito mais profundo da Amazon, de ideia da Amazon, de prover para você não só a infraestrutura, mas o serviço por trás disso. Então, quando a gente olha para isso, basicamente, quando a gente fazia uma aplicação antigamente, a gente tinha um time lá que era responsável para fazer toda a manutenção, disponibilização de máquina e assim por diante. Quando a gente está indo para um conceito serverless, é algo similar a isso. Imagina que eu estou desenvolvendo e eu não preciso me preocupar tanto com o resto da gestão dos servidores e assim por diante. Eu não preciso ficar pensando em subida de máquina, em descida de máquina, em aumento de CPU, aumento horizontal e assim por diante. O que eu preciso fazer é fazer basicamente o desenvolvimento da minha aplicação. Isso tanto para aplicações quanto banco de dados e assim por diante. Então, no conceito serverless, é um conceito onde você não precisa pensar muito no que vai acontecer na hora de execução dessa função, quando a gente está olhando para o lado do servidor, para o lado da infraestrutura. Lógico que você vai ter sempre que pensar nesse aspecto, quando você estiver falando de arquitetura, de solução e assim por diante, mas fisicamente falando, você não precisa fazer todo esse trabalho de gestão de máquinas e assim por diante. Então ele tem alguns benefícios que são bem legais e tem alguns desafios também que podem trazer para você, mas a gente vai adentrar aqui um pouquinho mais. A AWS é uma das provedoras cloud que tem mais serviços serverless está mais preparada para isso então se a gente for falar disso a gente vai falar bem dentro da WS também porque ela vai fazer mais sentido no nosso dia a dia beleza serverless muita gente acaba se confundindo né porque se você for fazer a tradução ao pé da letra você pode imaginar que a gente tá falando de não ter servidor, e não é isso. Lógico que tem servidor envolvido, tem os servidores provisionados na cloud, assim como a gente tem falado até agora, mas o nome às vezes confunde, tem gente que pensa, poxa, como vai rodar sem servidor? Não é isso. O que a gente está falando aqui é que a parte de infraestrutura, ela não é uma preocupação do desenvolvedor, como eu falei pra vocês o serverless é que você como desenvolvedor não vai ter que ficar pensando na infraestrutura, a AWS promete fazer isso por você a infraestrutura que for necessária pra sua aplicação vai ser gerenciada pelo seu provedor cloud e você não vai precisar se preocupar com isso, lógico isso vai fazer sentido pra todas as nossas aplicações? Poxa, então eu vou usar só coisas servers. Não, não funciona assim. A gente pode fazer alguns tipos de aplicações servers, mas eu já te dou a dica. Não é tudo que você vai conseguir fazer desse jeito. Por conta de custo, por conta de outros pontos também, e a gente vai detalhando eles aqui ao longo do caminho, tá bom? Eu vou entrar um pouquinho em alguns dos servi serviços que a gente tem na wf e depois a gente vai ir para o hands-on depois que a gente entrar é tanto no serviço serverless quanto no que a gente precisa para fazer o hands-on para vocês entenderem ele com mais facilidade fechou quando está falando do conceito serverless então basicamente está falando de um conceito onde é uma aplicação aqui ela vai executar algum tipo de código em resposta a algum tipo de evento, ou seja, acontecer alguma coisa, ela vai começar a executar aquele serviço server. Ela aloca automaticamente os recursos de computação para você, você não vai precisar se preocupar com isso. E ela escala automaticamente a aplicação conforme necessário, assim como faz tanto o upscale quanto o downscale. Ou seja, ela faz a subida de máquinas e ela também diminui o número de máquinas quando necessário. Quais são os benefícios que a gente tem aqui dos servers? Primeiro deles é a escalabilidade automática, ou seja, você não vai ficar mais se preocupando por quanto que a gente vai ter de pico e assim por diante aí fica o a habilidade dela vai ser de forma automática gerenciada pela própria provedora Cláudia qualquer grande sacada aqui se você não faz isso de forma muito boa imagina que você não vai usar férias você vai usar a sua aplicação que você construiu assim por diante se você não souber fazer uma escala habil decente, bem feita, vamos lá, ou seja, fazer o piscado e o desqueio quando precisar, você vai ter um custo operacional mais alto, certo? Porque você vai ficar gastando máquina que você não precisa. Se você sabe fazer isso, ótimo, você vai conseguir fazer as coisas, mas ainda assim você tem uma eficiência que você está perdendo. fazer as coisas, mas ainda assim você tem uma eficiência que você está perdendo. Imagina que você subiu lá uma máquina, uma M1 ou algum tipo de máquina de auto processamento. Em determinado momento você está usando menos. Você já se comprometeu com aquela máquina, você já está subindo as coisas nela. Quando você está falando de uma aplicação serverless, você não vai se preocupar com isso. Então, às vezes, até na escalabilidade vertical, você tem mais facilidade, você acaba tendo um custo um pouco mais baixo. Mas, de novo, tudo isso se você não estiver fazendo uma gestão de custos efetiva dentro das suas aplicações que você tenha construído. Então, quando a gente está falando de custo operacional mesmo, de execução, o baixo custo é que ele aparece, porque nem os times eles conseguem fazer isso de forma tão bem feita o desenvolvimento vai ser bem mais rápido isso sim você vai estar com a sua carga cognitiva focada apenas você precisa fazer ali de codificação então desenvolvimento ele acaba sendo mais rápido mesmo e você consegue colocar coisas no ar melhor mas em compensação ele tem outros pontos também que eu vou contando aqui ao longo do caminho que também não é tão simples assim você consegue fazer os desenvolvimentos de forma rápida mas nem tudo você vai conseguir resolver com os servidores tá bom manutenção reduzida também como você não vai ter que ficar fazendo gerenciamento de servidores etc você não vai ter que ficar se preocupando com tudo aquilo que a gente falou na hora de subida de máquina de descida de apg etc algumas coisas você consegue deixar já a Cláudia ali provisionar para você, sem você se preocupar tanto, beleza? Quais são os desafios? Bom, a primeira coisa é esse negócio que a gente chama de início free or cold start. O que acontece? Como você tem um conceito que é orientado a eventos, quando chega um evento, a Amazon vai lá, sobe o seu serviço e começa a executar. Quando esse serviço é executado várias vezes, ao longo do dia, por exemplo, em tempos curtos, isso acontece de forma totalmente tranquila e rápida. Quando você fica muito tempo sem executar aquele serviço, iniciar a máquina pode ser uma coisa lenta. A primeira vez que você tiver um evento caindo lá, a sua máquina demora um tempinho para executar e na hora que ela sobe, ela processa aquele evento. Então, esse primeiro processamento do primeiro evento, depois de muito tempo sem uso, ela pode ser um pouco mais lenta. Então, às vezes, para quem está precisando de um tempo de resposta rápida, a gente tem que ter até alguns tipos de controle para esse tipo de situação. Outra coisa, dependência do provedor. por isso que eu falei, não dá pra usar pra tudo. A partir do momento que você vai lá e usa um monte de coisa serverless, você tá com o lock-in com o seu servidor ali, com o seu provedor cloud. Porque, por exemplo, as peças serverless que tem na AWS não vão ser as mesmas que você tem em outro lugar. A partir desse momento que você usou os servers da AWS, você está usando um serviço provisionado por eles, que não é só um serviço físico, né? É lógico também. Então, aqui você também está fazendo a sua aplicação que executa só de um tipo de provedor. Depois, quando você precisar levar para outro, pô, sei lá, o contrato com a AWS ficou muito caro, eu quero mudar para a Google Cloud. Vai ter um trampo aqui, porque você vai ter que colocar ainda a sua aplicação dentro da AWS tá interessante pensar em o que que você vai aproveitar serviços serverless e o que não tá bom uma outra coisa também é o monitoramento e a depuração como serverless ele é state-less né ou seja você sobe uma aplicação e ele vai ter ali um tipo de agravação das coisas dele e morrem conforme morre a máquina. Então, quando você pega os seus eventos ali que estão acontecendo, se você não souber gerenciar eles, o seu monitoramento vai ser muito mais complicado. Porque você entendeu que a partir desse momento eu não estou fazendo mais o gerenciamento de subida e descida de máquina. Então pode ser que a minha máquina morra, mudou de máquina e eu estou sem saber o que estava acontecendo ali. Então os problemas que acontecem você tem que saber muito mais como gerenciá-los para você conseguir ter esse monitoramento, tá bom? E a depuração também depois vai ser mais complicada, porque o código tem a sua parte gerenciada de infraestrutura, que também não vai estar na sua mão. Outra coisa também é a limitação de tempo de execução. Um serviço serverless não fica direto. Você tem tempos e limites de execução, então você não consegue deixar lá uma máquina ligada que vai ficar um mês. Então você precisa pensar sempre que a sua infraestrutura vai ficar nascendo e morrendo com mais dinamismo e com o seu tempo de execução para coisas maiores, talvez você não consiga, dependendo do que você precisa fazer, falar, putz, eu preciso deixar muito tempo aqui carregando e executando, não vai rolar, beleza? Quais são os principais componentes que a gente tem na AWS? Tem a AWS Lambda, é o primeiro que a gente vai falar, tá? A gente vai começar a falar sobre ele, até por isso que eu passei aqui rapidamente com vocês o que é o conceito de serverless e assim por diante. A gente vai começar a usar o AWS Lambda agora. O Lambda, ele basicamente é uma forma de você codificar sem ter que pensar em improvisar elementos de cloud mesmo. Então esse aqui é o cara onde você vai fazer o seu código de forma mais clean aqui é deixando toda a parte de infraestrutura para o seu provedor cloud tá bom quando a gente vai pra a o api gateway ele é o cara que vai tanto te ajudar a gerenciar o ciclo de vida de um lambda por exemplo de uma api como ele vai te ajudar a direcionar a carga de trabalho para dentro do seu sistema. Então, para dentro da sua API ali, você precisa saber dimensionar a carga, até às vezes mudar uma coisa de contrato. Então, toda a entrada da sua API vai passar por esse cara aqui. E ele é serverless, o que é muito bom. Esse cara a gente usa bastante, é bem comum. E ele pode ajudar bastante vocês aí no dia a dia. O DynamoDB é um banco de dados, tá? Um banco de dados no SQL, que tem toda uma estrutura ali da AWS muito pronta, inclusive para conseguir responder muitas das coisas que o SQL responde. Então o DynamoDB é um baita banco de dados, é um banco de dados serverless também, eu acho ele um ótimo banco de dados, dá para resolver muita coisa com ele também. O S3 também é muito utiliz utilizado a gente já falou dele na última aula então não vou ficar chovendo molhado mas o s3 é ele pode ser usado para várias coisas ele é muito utilizado no nosso dia a dia e também a serva tem o adobe step functions que é nada mais do que uma forma de você encadear funções está pra criar grandes aplicações por exemplo você consegue encadear essas funções para criar grandes aplicações por exemplo, então você consegue encadear essas funções para conseguir fazer isso tem o AWS SNS SQS que são basicamente filas de mensageria é onde você consegue trabalhar mais o conceito ali de mensageria, de troca de estado e de informação de um lado para o outro, aqui que vão cair seus eventos e vão ser passados ou estartados para diferentes coisas e para começar novos trabalhos. Basicamente são esses serviços da AWS Conserver e a gente vai começar a aprofundar agora no AWS Lambda para depois ir entrando um pouco nos demais e fazer a nossa primeira aplicação aqui um pouco maior no nosso hands-on, beleza?