Bom pessoal, no nosso vídeo anterior, a gente acabou falando bastante sobre sistemas monolíticos e também eu falei algumas regrinhas, vamos dizer assim, para que você não guarde estado na sua aplicação para que ela consiga escalar de forma mais fácil. fácil tá também eu falei sobre o 12 factor app tá e aqui é o site desse camarada aqui ó que é 12 factor ponto net tá eu vou deixar anexado aí pra vocês tá a esse cara aqui ele esse documento né essa forma de trabalhar, ela, entre aspas, revolucionou muito, direcionou muito grandes aplicações que precisavam escalar por muito tempo, e até hoje isso está indiretamente ou diretamente é utilizado. Talvez hoje você já trabalhe dessa forma porque você já foi vamos dizer doutrinado a trabalhar dessa forma desde quando você começou a programar mas quem tem aí pelo menos uns 10 15 anos de carreira e quando trabalhava a de outras formas onde a escala não era um problema tão grande raramente seguia isso aqui isso aqui foi uma grande a mudança uma grande virada de chave para você conseguir escalar o software isso principalmente porque porque quando o herói estava sendo criado né a idéia dele sempre foi trabalhar num formato de contêiner já lá naquela época mas esses containers os daínos do herói o co ele sempre eram criados escalados e desescalados então você tinha necessidade de precisar matar toda hora aplicação e crescer a aplicação a todo momento e pra isso você precisava seguir algumas guidelines para que você evite no final do dia manter estado tá então olha só que interessa olha só que interessante né a numa era moderna é muito comum a gente entregar aplicações web ou saz né só que essa série né então o trabalho efeito é para uma metodologia tá para a construir para construir software as a service a de aplicações que usem setup declarativos e automáticos para minimizar tempo eo custo para novos developers que entrem no projeto e que tem um contrato clima é um é um contrato clima um contrato limpo, por baixo dos panos, provendo uma máxima portabilidade nos ambientes. Isso aqui é um ponto importante também, galera. Por quê? Porque na hora que a gente vai botar um software em produção, antes disso a gente pode botar esse software em desenvolvimento, em staging, em teste. Então, cada vez que você muda o ambiente, você pode, inclusive, fazer com que o software se comporte de forma diferente ou mesmo utilize um banco de dados diferente, utilize configurações diferentes e tudo mais. Então, quando a gente está falando disso, essa metodologia que foi criada nessa época é para conseguir minimizar esse tipo de problema, facilitar a portabilidade e também ficar mais fácil para que você consiga fazer o deploy das suas aplicações nas cloud platforms. Também isso vai te ajudar no processo de continuous deployment, ou seja, na parte de CD, e vai te ajudar a escalar as aplicações. Então, basicamente, é isso que eles estão falando. Agora, o grande ponto aqui é como fazer isso. E aí vem a ideia do 12 Factor App. Por quê? Porque são 12 pontos que você tem que levar em consideração. Ou seja, quais são esses 12 pontos, galera? Codebase, ou seja seja utilize um sistema a diversionamento de código um kit da vida por exemplo porque você controlando as versões das revisões você pode realizar diversos de plós dependências tá as dependências elas têm que estar declaradas explicitamente isoladas para que todas as vezes que o seu software for subir, você consiga trabalhar com essas dependências. Normalmente, só para você tangibilizar um pouco mais, o seu composer.json, o seu package.json, o seu gommod, são locais onde você declara claramente as dependências, inclusive as versões que essas dependências utilizam por conta disso. Outra coisa que é muito utilizado, para você conseguir trocar de ambiente, trabalhe com configurações de forma declarativa para você conseguir trabalhar. Então, sabe aquele arquivo .env, trabalhar com variáveis de ambiente, ou até mesmo aqueles arquivos .tom, aqueles arquivos .ini, arquivos xml, não interessa. Quando você organiza o seu sistema e toda a parte de configuração dele trabalhando dessa forma, significa que você consegue mudar o comportamento da sua aplicação com suas configurações conforme a o ambiente que você quer fazer o depósito legal becky serviço está a todos os serviços eles vão ser tratados como recursos que você vai a taxa a gente já vai falar um pouco mais sobre esse caras aqui outro ponto build e release e run ou seja a você vai poder fazer a o build da sua aplicação aí você já vai poder fazer o deploy e rodar sua aplicação né no final do dia ele vai estar falando em você rodar uma esteira de sear e decidir e botar tudo pra rodar se você consegue fazer isso você vai ter boas práticas de trabalhar com o software tá processos está e aqui que é um ponto importante lembra que eu falei trabalhar sem estado né então é aqui que ele está falando né em relação a trabalhar e state les tá ou seja tudo que você trabalha não armazenar estado na máquina que você está utilizando. Outro ponto, você pode também escolher qual é a porta a qual o seu software vai estar respondendo. Isso é muito comum hoje em dia. Concorrência. Você conseguir escalar através de processos que você for rodar. Disposability. O que ele faz aqui para você? Através de processos que você for rodar. Disposability, tá? O que ele faz aqui para você? Você ter maneiras, tá? De conseguir dar um shutdown na sua aplicação, tá? E mantendo, né? A cada momento sua aplicação no ar. Mas, por exemplo, imagina você tem três máquinas. Você quer se livrar de uma porque não tem mais demanda então você vai a destruir aquela máquina mas você vai destruir essa máquina como de forma graceful na isso a gente chama de graceful shutdown ou seja ele para de receber novas requisições termina as requisições que está process processando pra depois matar a máquina em si. Legal? Aqui é criar os ambientes de desenvolvimento e produção e manter o ambiente de desenvolvimento e produção mais próximo um dos outros. Os logs têm que ser tratados como event streams, ou seja, log no final das contas galera são sempre eventos tá e esses eventos que acontecem eles são fluxos contínuos de informação e esses fluxos contínuos de de informação não podem ficar gravado nessa máquina porque se ela for a matada você vai perder os logs e aqui né admin process né que é rodar barra administrar ou gerenciar as tarefas como o ano of process ou seja você tem que conseguir executar tarefas específicas na hora que você for subir por exemplo na hora que você tem você quer por exemplo fazer um processamento de nota fiscal você tem que ter a capacidade de subir o ambiente ou subir uma máquina roda aquele processo depois ela pode cair eu recomendo que você leia né e entenda a fundo cada ponto desse cara aqui. Então, se você clicar, ele vai te explicar o que é Backing Services aqui, por exemplo. Backing Services é qualquer serviço que a sua aplicação vai consumir através da rede. E daqui ele dá exemplos aqui, como banco de dados, etc. Então, eu posso ter que querer trocar esses back-end services, ou seja, criar uma abstração. Ou seja, você vai utilizar métricas, você vai trabalhar com observabilidade. Qualquer coisa que a sua aplicação se conecta através da rede, é chamado de back-end services. Legal? da rede é chamado de backing services. Legal? Então, você tem que conseguir criar distinções na hora que você for rodar um banco de dados de desenvolvimento, um banco de dados de produção, como que você vai guardar essas credenciais, e daí uma coisa começa a se correlacionar com a outra. Então, isso aqui, pessoal, é super importante. Eu super recomendo que você leia todos os fatores. Não sei se você já tinha ouvido falar, talvez sim, talvez não, mas eu quero que você refresque a sua mente, porque esses tipos de coisas vão te ajudar a escalar tantos monolitos como microserviços. a escalar tantos monolitos como microserviços. É uma prescrição você entender esses 12 factors, esses 12 fatores para as suas aplicações. Beleza? Então, vamos continuar.