E, lógico, quando a gente fala de estimativa, tudo isso daqui traz para mim outra variável importante. Eu vi lá na documentação de vocês. Escalonamento. Eu preciso alcançar isso, mas eu preciso buscar um escalonamento. E aí eu traria perguntas. Eu vou fazer o meu design, eu acho que tem perguntas super relevantes. O que eu faço se meu serviço crescer? E aí eu estou falando hoje com o cliente. Normalmente o usuário não sabe o que ele quer. Não sabe o quanto vai crescer. Ele não tem essa perspectiva. É lógico, porque muita coisa que a gente faz é baseado num teste. É baseado no que a gente faz é baseado num teste é baseado no que a empresa está buscando, mas não significa que de fato vai se realizar, e às vezes pode se realizar de uma maneira muito mais agressiva e muito melhor do que a empresa imaginou então como que eu faço para escalar o meu serviço e crescer é o que eu faria, estou lá desenhando e aí, o que eu faço? o que eu faço se. Estou lá desenhando e o que eu faço? O que eu faço se a minha requisição crescer? Se o meu workload for maior do que eu estava planejando? Certo? Como que eu faço para ajudar a representar as solicitações mais relevantes. Quando eu tiver coisas mais relevantes do que foi informado pelo usuário, isso tende a crescer, como que isso pode deteriorar os meus recursos? Como que eu gerencio os recursos deteriorados. Então, quando a gente fala de escalonamento, essas três perguntas são relevantes porque eu preciso entender se o meu software está indo para um caminho correto de design se eu souber responder isso daqui aí eu quero fazer uma pergunta para você uma curiosidade bora uma curiosidade você desenvolve faz quanto tempo? vinte e poucos anos quase a minha idade aí olha só olha só 20 e poucos anos. Quase a minha idade. Aí olha só. Olha só. Você... Lembra os primórdios da internet? Foi criado o projeto de DNS. Sabe? Antes disso, o pessoal tinha um pré-DNS, que era um arquivo de host txt que você colocava o ip nas máquinas para as máquinas se conversarem beleza? então você colocava lá um host txt, colocava os endereços só que cara não era a solução correta porque não era a solução correta? cara porque quando o projeto foi criado vocês todo mundo sabe o dns quando foi criado, vocês todo mundo sabem, o DNS quando foi criado, sabe quantas máquinas tinha na internet conectada? 200. 200. Hoje a gente tem bilhões de máquinas conectadas na internet. E é o mesmo projeto de DNS. Para mim, o projeto de DNS é um exemplo de system design mais foda que existe. Porque o cara conseguiu escrever uma solução que está antes, responde a... o serviço cresceu demais, as requisições cresceram, certo? E ele está fazendo de uma maneira, cara, de que eu consigo... talvez não consiga dar... a gente se registra um domínio, não é tão imediato, mas para propagar isso na escala que a gente está falando, é assim, absurdo. Ele é hiper satisfatório, ele responde a demanda que ele foi previsto. Assim, ele foi mais do que previsto inicialmente. Então, ele é um exemplo que eu olharia com muito cuidado, porque ele dá essas respostas que a gente tem que buscar quando a gente vai fazer o system design quando eu escalo de formas que eu não estou pensando que eu não estou avaliando como que eu levo isso adiante então a gente precisa trazer algo que é responsabilidade nossa e não é do usuário final questione o inevitável a gente nunca questiona o inevitável. A gente nunca questiona o inevitável. O inevitável que é, cara, se eu escalo desse jeito, se eu responder desse jeito, o meu inevitável é o que eu devo fazer quando o meu sistema falhar? O que deve acontecer quando falhar? Eu acho que aqui a gente consegue, pelo menos ao ver, pensando como em arquitetura, a gente consegue chegar a um ponto importante. Um balizador hiperrelevante, antes de eu escolher as ferramentas de coisas que eu tenho que saber, ou coisas que eu preciso entender, antes de escolher um ferramental. Antes de saber se eu vou usar um cárter, se eu vou usar uma fila, se eu vou usar múltiplas filas, se eu vou usar filas com escritas distribuídas, como que eu vou fazer? A gente entender daqui até o inevitável, o que acontece quando falha, que tipo de falhas são aceitáveis, que tipo de falhas são aceitáveis, e estar pensando nisso. Uma coisa, Fernando, com toda essa história de estimativa e etc, até que ponto, isso aqui é até uma pergunta do José Vitor, não há risco de otimização prematura quando a gente desenha uma solução? Principalmente nessa etapa inicial, quando muitos pontos são arredondados, inferidos e aproximados? Eu acho que é por isso que você falou do middle out, né? Eu ia falar disso agora. Você matou na mosca. Por isso que a gente faz middle out. Porque a gente vai buscar, normalmente, o que é mais dolorido na minha arquitetura para poder crescer de forma expansiva. Eu dou um exemplo aí hiperrelevante. Acho que todo mundo viu a série lá do... Muita gente deve ter visto a série do Netflix. E para mim, que sou técnico, teve um ponto auge da série, que depois degringolou para outras coisas, que foi quando os caras começaram a trabalhar sobre o TCPIP. Eles entenderam que o TCPIP era o calcanhar de aqueles deles para eu poder dar uma resposta muito mais rápida do que o ouvido alcançava e precisava bloquear, alterar o handshake, as etapas de handshake, que são três etapas, de 30 a 4 etapas, para eu poder entregar o meu dado e controlar a perda de dado dentro da rede. Cara, isso foi muito bacana. Inclusive, pessoal, assistam essa série, principalmente no início, depois dê uma mudada, etc. Mas assistam principalmente no início essa série The Playlist, a história da criação do Spotify. Exato. E tem nesse ponto aí do TCPIP, isso é bem bacana. É muito importante, porque é o centro de toda a funcionalidade do produto. Ou seja, ele foi ao extremo no centro. O extremo da requisição. Foi ao contrário. E acho que... Quem perguntou isso? José Vitor. José? A gente é brother. Vou te falar um negócio, cara. Existe um negócio que eu falo para os meus clientes. Existem várias jornadas de usuário, mas poucas são críticas. A gente chama isso de CUGE, Critical User Journey. A gente vai sempre buscar, isso tudo que eu estou falando, nos Critical User Journeys. Que não for crítico, A gente vai sempre buscar, isso tudo que eu estou falando, nos critical user journeys. Que não for crítico, incluso as métricas, depois monitoramento, SLO, SLI, a gente vai fazer de forma diferente. Mas para os critical user journeys, eles são poucos. Tanto que a gente começa a monitorar os softwares hoje de formas diferentes, porque a gente entende que como eles estão separados em várias responsabilidades, algumas são mais críticas que outras. Vou te dar um exemplo muito rápido aqui, muito simples. A gente falou de série. Vou buscar uma série no meu provedor de nuvem predileto, lá de streaming, no Netflix, na Apple, onde for. Cara, listar o filme para o usuário naquele momento da noite é mais importante que fazer o pagamento se o serviço dele não estiver bloqueado. Com certeza, a lista de filme é um critical user journey. Pagamento não é um critical user journey. Cara, mas eles são, eles podem ser inclusos, eles têm indicadores de performance diferente. E aí a gente começa a olhar os objetivos de negócio, que o arquiteto e que o SRE tem que olhar baseado num item específico, numa jornada específica. Faz sentido? Perfeito, perfeitamente. Vamos continuar numa próxima aula? O resto que eu tenho aqui agora, qual minha programação para falar com vocês que eu teria na lista? Cara, eu quero desenhar padrões agora. E aí eu tenho padrões. Qual que é a próxima etapa disso? A gente entender os padrões de composição. Como que os meus requisitos estão compostos para eu poder fazer a distribuição de carga? E aí é onde a distribuição de carga leva a utilizar o teorema de CAP para eu poder ter as réplicas das minhas peças de forma satisfatória no meu sistema de design. Então, há um partner também por detrás e alguns anti-partners para eu provocar o desenho da minha arquitetura. Então, tudo isso é importante para a gente poder falar desses partners aí depois no futuro em breve pode ser, na próxima semana talvez? Com certeza com certeza eu acho que toda essa base eu acho que toda essa base conceitual que você passou com certeza já deve estar fervulhando aí a cabeça de um monte de gente, inclusive a minha, tem muitas coisas que a gente acaba não se perguntando, e muitas dessas coisas que a gente deixa de perguntar é exatamente o que vai fazer falta quando der problema no sistema. E essa parte de Critical User Journey que você colocou, é um dos pontos mais importantes e que eu recomendo que todo mundo comece a pensar sempre nisso. Mesmo no exemplo que a gente deu nos sistemas de ingresso. Poxa, o negócio de ingresso, o cara pode criar conta, pode fazer o login, pode fazer... Cara, agora, vender ingresso, a pessoa está lá no show e tem que mostrar o QR Code são coisas que são fundamentais sem isso não vive, então eu não tô preocupado com sistemas acessórios, eu tô preocupado com coisas que realmente importam pro negócio se importa pro negócio é porque ali tem a atenção especial, é ali que eu vou garantir que as minhas métricas estejam consistentes para eu fazer com que a empresa continue rodando de forma aceitável, de acordo com os padrões que, em tese, foram acordados no início. Perfeito. E é importante, Wesley, o que você falou. Meu pai já falava. Se tudo é prioritárioário não é prioritário e aí um problema depois que a gente pode até trazer a turma em uma outra aula sobre outro tema sobre SRE o SRE ele precisa fazer parte dessa composição do System Design olha que incrível nas nossas visões ele tem que fazer parte porque ele monitora o software hoje de forma diferente Olha que incrível. Nas nossas visões, ele tem que fazer parte. Por que ele tem que fazer parte? Porque ele monitora o software hoje de forma diferente do que ele monitorava no passado. A gente não monitora mais o software da mesma forma. Por isso que me espanta. Às vezes o cara fala, eu tenho um CRE aqui, o que você faz? Ah, eu tenho um NIPLEC. Não, você tem ferramental, você não tem CRE. Como você tem ferramental, você não tem SRE como está sendo monitorado? quais são os dispens? como que eu vou rastrear aquelas informações? o que é importante eu rastrear? como que eu vou rastrear? por que que esse componente de negócio vamos chamar assim que vira um componente de negócio depois que ele está em operação por que que ele tem indicadores diferentes de outras peças porque ele tem indicadores diferentes de outras peças que tem outros indicadores. Quando a gente olhava da forma monolítica, tudo tinha o mesmo indicador, tudo era tratado da mesma maneira, tudo era o mesmo tempo de resposta. Mas, às vezes, para eu poder fazer a escrita de um cadastro de usuário, eu vou ter um tempo de resposta aceitável. Para eu você fazer a lista de filme lá do Netflix, cara, é o outro. Eu fazer o sign-in do meu usuário é crítico, porque senão é receita e grana. Cara, para eu listar filme também, ambos têm prioridades diferentes e vão ter métricas e indicadores com objetivos de negócios distintos. Isso, incluso, precisa estar materializado no meu design. Faz sentido? Perfeitamente, cara. Perfeitamente. Maravilha. Maravilha. Fernando, então vamos fazer assim. A gente marca para agora que está todo mundo, vamos dizer, na mesma página, aí a gente marca para a gente ir para esse outro ponto. É aquela história, não tem como falar de coisas complexas de uma forma simples. Coisas complexas são complexas e as explicações e a jornada para você entender esse tipo de complexidade é longa. E eu acho que esses pontos que você colocou foram muito, muito importantes para todo mundo. Eu posso compartilhar outra coisa aqui na sala? Eu comecei a falar igual um louco, sem respirar. Fernando, depois eu queria pedir, inclusive o Fabrício Augusto pediu, se você pudesse, depois você me passa em off, eu coloco, de recomendações para livros. É isso que eu vou mostrar agora. Ah, legal. Perfeito. É isso que eu vou mostrar agora. Posso compartilhar minha tela aqui de novo? Eu tinha separado já o slide aqui. Se eu tinha montado. Aí. Se você entra nesse endereço aqui www.e.google.com.br Esse cara vai te dar Essas quatro literaturas aqui gratuitas Há uma Mais outra literatura Building Security Reliable System Ele é incrível Ele é incrível. Ele é incrível e para mim é o livro dos mais importantes do Google para construir sistemas. Olha aqui, Best Practices for Design. Esse livro, ele é sensacional. Indico que todos leiam, que estiver aqui. E aí a gente volta a conversar tem coisas que eu falei aqui que são baseadas nesse livro nessa literatura também eles são importantíssimos eu usei como referência do que a gente está falando hoje o do primeiro livro de engenharia de confiabilidade do Beauty Secret to Rarible Seed tem conteúdos desses dois livros na nossa conversa de hoje a gente pode encontrar eles até mais detalhados aqui show de bola e agora temos comentários do tipo Fernando pagou o MBA com essa aula, olha só que sensacional ler isso, cara escutar isso, obrigado hashtag tá pago vou voltar aqui pra gente agora dar escutar isso. Obrigado. Hashtag tabaco. Vou voltar aqui para a gente agora dar continuidade nos partners que a gente precisa conhecer para conseguir fazer esses desenhos de forma de forma não quero falar uma palavra ruim e agressiva, mas de forma que responda a orquilôs agressivos. A gente está aqui para responder a bomba. Tiro, porrada e bomba. É isso que a gente gosta no ambiente de software. Manda. Então, estou aqui para contribuir com vocês. Obrigado pelo convite, Wesley. Chamou para a próxima aula. Obrigado por esse show de aula que você deu para a gente. Estou mega feliz, já aprendi muito com todo esse processo e acredito que um monte de gente aqui também aprendeu aí também. Obrigado. E agora a próxima aula é a gente entender como que eu uso os padrões baseado nessas práticas aí que a gente falou que são relevantes.