Bom pessoal no vídeo anterior a gente falou sobre arquiteturas multi-tenant e agora eu quero falar um pouquinho com você sobre arquiteturas stateless versus stateful. Isso aqui galera é essa clareza aqui é uma das clarezas mais importantes que vai determinar se você vai poder escalar ou não a sua aplicação. Legal? Então, preste muito bem atenção caso você ainda não saiba o que é Stateless e o que é Stateful. E, obviamente, se você já sabe, preste atenção do mesmo jeito. Então, vamos lá, galera. O lance é o seguinte. Stateless e Stateful. Vamos imaginar que você tem uma seguinte aplicação. Você tem a sua app, sua aplicação normal que você desenvolveu um sistema monolítico qualquer, pode ser aí você, toda vez se alguém loga no seu sistema, o que você vai fazer nesse seu mesmo sistema você vai guardar as sessões ali no servidor gera uma sessão para você garantir que a pessoa está autenticada aí o que acontece? Na hora de você subir as suas imagens e etc., está no seu servidor também. E o mais interessante, o usuário, por exemplo, ele pode fazer um upload de uma imagem. Então, ele vai lá, faz upload, sobe o seu MP3, muda a sua foto, o perfil, e vai jogando ali tudo também no servidor. Tem as pastinhas bonitinha né partinha pastinha de imagem de vídeo pastinha de de tudo de mp3 e tudo mais aí o que que acontece eu tenho os logs né tudo que acontece na minha aplicação eu já era um log lá no arquivo barra barra logs bairro a indynex por? Porque eu quero ter todos os logs de tudo o que acontece na minha aplicação. Legal? E eu vou tendo outras coisas que são importantes para a minha aplicação. O que tem de errado nesse tipo de arquitetura? Se você olhar, não tem nada de errado. Funciona, eu logo funciono, soube os arquivos, tenho os meus logs e tudo mais. O meu grande problema aqui é quando eu vou escalar isso aqui. Por quê? Porque quando eu vou escalar, as seções estão guardadas no meu servidor. Os assets que a pessoa fez o upload estão também no servidor. Os logs estão no servidor. O que significa? Vou imaginar que eu tenho o servidor 1 e o servidor 2, porque eu quis escalar, né? Eu quis adicionar mais máquinas. Aí eu fiz o login na máquina 1, beleza? Aí quando eu dou um refresh, o load balancer me manda para a máquina 2. Mas na máquina 2, a minha sessão não está lá. Na máquina 2, a imagem que eu subi não está lá. Legal? E o mais interessante, vamos imaginar que o load balancer diminuiu e ficou uma única máquina novamente. Os logs da máquina 2 foram perdidas porque porque aquela máquina ela foi destruída tá e aqui é o momento onde a gente fala sobre aplicações de estétil e aplicações esteito esse tipo de aplicação aqui é uma aplicação estát, por quê? porque ela armazena estado ou seja, tu conforme você usa a aplicação coisas das sessões do usuário, coisas do usuário ficam armazenadas nessa mesma aplicação e se essa aplicação morrer e a gente criar uma outra, os dados do usuário são perdidos junto, então por conta disso tá toda vez que você quiser escalar uma aplicação você vai ter que tomar cuidados para que a sua aplicação evite ao máximo ser esteito e ela passe ser esteito leste e steifler é quando eu não tenho estado. Como que funciona aqui, galera? Como eu disse para vocês, imagina que eu tenho um ASG, um Outscaling Group. Então eu tenho uma máquina 1 e a máquina 2 aqui. Quando eu perco a máquina 2, o que vai acontecer? Os dados foram perdidos. Agora eu posso ter uma outra decisão que eu posso querer tomar, que é o seguinte. uma outra decisão que eu posso querer tomar que é o seguinte ao invés por exemplo né de quando matar minha máquina e eu perder esses dados o que eu posso ter aqui a minha sessão eu posso deixar um reds ou um banco de dados por exemplo tá para que ela não fique gravada na minha aplicação. Os assets, ao invés de eu subir uma pasta uploads na minha aplicação, eu subo, por exemplo, na Amazon S3. Então, todas as aplicações que eu escalar podem acessar aquele asset. Os logs, o que eu faço? Eu gero esses logs sempre saindo para o terminal, para o stdout e stderror. E o que acontece? Eu pego um sistema de observabilidade, um sistema de logs, que fica olhando tudo que está saindo no stdout, pegando esses logs e jogando para um banco de dados separado. Logo, quando a sua instância morrer, você não vai ter perdido aqueles logs também. Legal? Pessoal, isso é o básico, o fundamento do fundamento para você conseguir criar qualquer tipo de aplicação que vai escalar. Se a sua aplicação não consegue subir e ser removida sem você perder nenhum dado, você quer dizer que você não pode escalar nos dias de hoje às vezes a gente está rodando com 10 máquinas depois está com 100 máquinas depois você está rodando com cinco máquinas tudo isso dependendo do tráfego isso só é possível porque porque a aplicação ela está em algum momento você criou essa aplicação de forma stateful, aí a coisa fica mais complicada, cada vez mais complicada para você conseguir gerenciar isso. Beleza? Então, está aqui a diferença entre stateless e stateful applications.