Bom, pessoal, então, seguinte, eu tô aqui no meu chat GPT, tá? E quando eu comecei a falar pra vocês sobre documentação e etc., isso aqui, pessoal, é independente de ferramenta. Eu tô aqui no GPT, mas eu poderia estar usando qualquer outra ferramenta de IA, tá? E o porquê que eu tô dizendo isso? Porque, independente do modelo de inteligência artificial que você trabalha, quando você está utilizando técnicas de prompt, você consegue resultados, obviamente, semelhantes. Mas quando eu digo resultados semelhantes, é a forma de como a IA vai interagir baseado naquele prompt. Obviamente, se eu pegar o mesmo prompt e colocar em diversos tipos de IA, os resultados serão diferentes, mas a forma de interação que você vai ter com a IA e a forma de como que ela vai trabalhar aquelas informações são muito parecidas, tá? Então, por exemplo, eu criei um assistente aqui no meu GPT chamado ADR, né? ADR Generator, né? Que é Active Architecture Decision Records, tá? Então, quando eu clico aqui, você vai ver aqui que eu tenho um ADR Generator. E a grande sacada nesse ponto é, nossa Wesley, mas você vai estar aqui para me mostrar um chat de como trabalha? Não. O que eu quero dizer é que em um prompt que eu escrevi, eu consigo gerar esse tipo de resultado. Então, eu vou fazer uma especificação aqui de um ADR Generator e você vai entender o que eu estou querendo dizer. Obviamente que eu vou escrever de uma forma bem rápida e tudo mais e de uma forma extremamente informal e a gente vê o resultado final. Beleza? Então, vamos lá. Vamos imaginar que eu vou falar o seguinte. precisa pegar os últimos 10 posts do usuário. Preciso de uma ADR para isso, pois quero usar o Redis para cache. Essa aqui é um pedido que eu acabei de colocar. para cache. Essa aqui é um pedido que eu acabei de colocar. O grande ponto, se você perceber, é que até mesmo na hora de criar uma nova DR, eu posso escolher entre o modo básico, detalhado, o modo de rastreabilidade. Eu coloquei isso porque trabalhar com prompt também permite com que você crie caminhos diferentes que a IA pode tomar nas decisões. Então, essa é uma forma que eu posso trabalhar. Vou dar um Ctrl X aqui para mim. Vou colocar só aqui, o modo básico. Daí eu já colo o que eu quero fazer. Então, ele está colocando, eu sou seu assistente especializado em Architecture Decision Records. Meu objetivo, antes de começarmos, recomendo considerar os modelos de ADR. E aqui ele trouxe aqui para mim, modelo básico, onde ele vai trazer título, data, status, contexto, decisão, consequências, modelo detalhado, que acrescenta opções consideradas, pró e contras, impactos, modelo com rastreabilidade, ele inclui tarefas, referências a outras ADRs que a gente já tem porque normalmente numa ADR você pode ter, por exemplo o status dela, se ela está válida, se ela está deprecada e se ela está deprecada, embaixo você fala, ela foi substituída por essa outra decisão, então eu vou colocar quero o modo básico baseado em e vou colocar, quero o modo básico, baseado em, e vou colocar aquele prompt ali que eu estava escrevendo. Perceba que tudo que está acontecendo agora aqui para mim é uma interação. Ela me entrevista. Então, olha o que ela faz. Ela sempre tenta entender a minha intenção para confirmar se é isso mesmo que a gente está falando. Então, ela está falando, então a gente está lidando com uma aplicação de alta escala, onde é necessário buscar os 10 últimos postos do usuário com baixa latência. E você está considerando usar o Reds para cache como solução. Você já possui alguma estrutura de ADR ou prefere criar do zero? Fala assim, eu quero, vou colocar, criar do zero. Maravilha, então vamos lá. Então vamos criar uma DR do zero contendo essas informações aqui. E daí, se você começa a ver, ela vai seguindo um passo a passo. Então ele já fala assim, vamos começar a preencher, eu vou sugerir um modelo inicial com base no seu caso. O título. O uso de Redis para cache dos 10 últimos posts por usuário. O status. É proposto, aceito ou rejeitado. O contexto. Descreve o problema. A decisão. Explica que o Redis vai ser usado para cachear. Consequências. Benefícios esperados. E os riscos. Pode seguir nesse modelo? Sim. Então, galera, você começa a perceber que com um único prompt eu consigo ter esse tipo de resultado. Então, olha aqui o título. Uso Redis para cache dos últimos 10 postos do usuário. Você gostaria de manter esse título? Eu vou colocar somente Redis para cache. Então, perfeito, atualizando Reds para cache aqui pra mim. Agora, eu vou colocar, vou registrar uma data, tal data, pode ser com essa data, eu vou colocar, não, eu quero 02 barra 07 de 2027. Use essa data galera você consegue perceber que eu acabo tendo um assistente aqui pra mim eu vou colocar aqui como aceito essa ADR maravilha uma coisa interessante e obviamente eu não vou ficar passo a passo terminando a ADR inteira aqui com você, depois eu vou dar uma adiantada no vídeo, mas eu quero que você consiga perceber que baseado naquela minha frase inicial, ela já está entendendo a minha intenção e ela vai tentar gerar um contexto aqui para mim. Olha só, precisamos descrever o problema e a situação. A aplicação opera em alta escala e precisa fornecer aos usuários os 10 últimos posts com baixa latência. Consultas frequentes ao banco de dados para essa informação têm gerado carga excessiva e aumento de latência. É necessário adotar uma solução que melhore a performance dessas consultas, sem comprometer a consistência percebida pelo usuário. Daí eu vou falar assim, vou colocar, isso mesmo. Porém, a parte desse cache terá que rodar de forma distribuída pelo fato de termos muito hits. Aí, ele atualiza o contexto aqui para mim. Olha só. Consultas frequentes do banco de dados para se a informação tem gerado carga excessiva. É necessário usar uma solução que melhore a performance dessas consultas sem comprometer a consistência pelo usuário. Porque eu falei, basicamente, que eu preciso, de forma geral, trabalhar de forma distribuída. Devido ao alto volume de acessos, hits simultâneos, parte da estratégia de cash precisará ser distribuída, garantindo escalabilidade e balanceamento de carga. Eu vou falar, sim, era isso mesmo que eu queria. Então, galera, percebam quanto tempo você demoraria para escrever um documento dessa forma. Mas o mais interessante é que ela pode sugerir outros pontos aqui pra mim. Aí a decisão, olha só que interessante. Aqui descrevemos a solução adotada e o porquê. Com base no seu caso, segue uma sugestão. Agora, isso aqui é interessante, porque ela tá dando sugestões técnicas pra mim e nesse momento, é o momento que você, como desenvolvedor, tem que entender do que você está fazendo. Então, por exemplo, será utilizado Redis como mecanismo de cache para armazenar os 10 últimos posts de cada usuário. A chave de cache seguirá o padrão user, id e daí tem recente posts aqui. A atualização do cache será feita sempre que houver novos posts ou alterações. Para suportar alta carga, as múltiplas implementações serão distribuídas, utilizando um cluster Redis com múltiplas réplicas e Sharding para garantir escalabilidade. Você quer ajustar essa decisão? Olha só que interessante, pessoal. Quando eu estou trabalhando, por exemplo, com cache no Redis e de forma, com Sharding, ou seja, são várias máquinas guardando informações diferentes, eu tenho um outro problema. Eu tenho um problema que eu posso ter hotkeys, ou seja, como o usuário, user 2.id, cada cara acaba caindo num cluster diferente, eu posso ter clusters desbalanceados de acordo com o tipo do usuário, com o ID do usuário e etc. Então, eu começo a entrar num ponto ali mais técnico, que eu posso até perguntar aqui para ela. Mas, isso, mas, vou colocar, mas esse padrão não pode desbalancear o cluster tendo mais usuários em um node do que o outro. trabalhar, por exemplo, com consistent hashing, por exemplo. Então, escrevi qualquer coisa, meio que da ponta da minha cabeça, e aí ele começa a perceber. O padrão sugerido, de fato, pode pegar hotspots, que um cluster read se o balanceamento de hash não for bem distribuído, principalmente com usuários muito ativos, né? Onde eles ficam concentrados em shards. Então, eu vou agora pensar de uma outra, daí ele coloca outra forma, ó. De carga em nós específicos do cluster, será adotado um esquema de consistent rashing e permite a uniforme. A solução será implantada no cluster e etc. Daí a uniforme, a solução seria implantada no cluster e etc daí eu vou perguntar, mas pra isso esse padrão de que vai funcionar não deveria ter uma outra forma para essas keys ficarem mais rebalanceadas onde eu estou falando aqui o user, dois pontos e etc. Então, galera, perceba que eu estou gerando um documento e aqui eu estou questionando. A minha ideia aqui para mostrar para você é que ela acaba sendo trabalhando com questionamentos. Então, não é apenas a geração de um documento. Eu posso tirar dúvidas técnicas enquanto eu gero um documento. Então, isso aí é importante. Se queremos usar Consistent Hash, deixar o cluster, todos os usuários, cria exatamente o problema de desbalanceamento. Alternativas, evitar o uso de hashtags, a não ser que você queira controlar a colocalização, usar um padrão como Recent Posts Users, ou usuário com o ID e os posts. Então, tem diversas adoções. E aqui, ele trabalhou com outro exemplo. Nem quero ler, vou falar assim. Essa nova versão atende? Sim. E agora, ele vai para o próximo passo. Consequências. Aqui, descrevemos as consequências. Positivos, redução da latência, alívio de carga, escalabilidade. Respostas. Negativo, complexidade operacional, eventual inconsistência, necessidade de política de inspiração, invalidação. Estou dando exemplos aqui para vocês, então nem vou ficar discutindo esses pontos, não é ideia. E aqui ele traz, aqui está o rascunho final da sua ADR. Então, Reds para cache dos últimos 10 posts, status, o contexto, a minha decisão que eu tomei, quais são as minhas consequências, os pontos negativos, os riscos, e ele fala, ADR está pronto, gostaria de criar mais um. Então, galera, perceba que apesar de uma ADR, de forma, a ideia dela inclusive não é ser um documento muito grande, eu consegui ser entrevistado, discutir pontos com a IA, fazer tudo isso e não teve nenhuma mágica por trás a gente conseguiu ter exatamente esse tipo de interação exatamente pelo fato de a gente ter um único prompt. Uma forma de como eu pedi pra essa IA trabalhar comigo e a partir dessa forma ela conseguiu me entrevistar, tirar dúvidas, confirmar informações comigo e gerar o resultado final aqui desse documento. Então, a ideia do poder que você tem pra trabalhar com prompts é extremamente forte na hora de a gente trabalhar com documentações. E uma das coisas mais interessantes que a gente consegue ver é que você tem facilidade, você tem exploração, você consegue discutir, ou você pode simplesmente seja isso, isso, aquilo, corrija isso e tá feito esse tipo de dado. Então, a minha ideia aqui, obviamente, não era te ensinar o que é uma ADR ou a gente ficar discutindo pontos técnicos, mas sim mostrar pra você o nível de interação que você consegue ter com uma IA, com um nível específico de resultado, com apenas um único prompt. E, obviamente, ao longo do curso eu vou mostrar para vocês como que esse prompt foi gerado, mas por que e como ele se comportou dessa forma trazendo esses tipos de resultado. Fechou? Então, é isso aí, galera. Sei que ficou meio grande, inclusive, esse vídeo, mas era importante trazer aqui para vocês ver como um único prompt pode fazer a diferença de uma forma muito forte para a gente durante o nosso processo de desenvolvimento.