Então, eu entendo que meus recursos são finitos, eu entendo que a memória é cara, e nada disso o usuário precisa falar para mim. Eu preciso entender que eu vou precisar armazenar de forma mais inteligente, eu preciso entender que os tempos vão se sobrepor na minha arquitetura, no meu system design. E aí, dado isso, a gente precisa entender que outro recurso também é complexo. Quando eu vou entregar o software, a rede é um recurso complexo. Aí a gente precisa tratar isso com muito cuidado. Por que com muito cuidado, Fernando? Por que com muito cuidado? Por que a rede está como uma península importante na minha avaliação? Primeiro porque o impacto imediato que eu tenho é um que todos falam, pelo menos a maior parte das pessoas que eu converso falam da palavra Q, Wesley. Patência. latência. Então, quanto maior a quantidade de roundtrip que eu tenho na minha rede, ou seja, quanto mais ida e volta que eu tenho dentro da minha rede, maior é a minha latência. Então, exemplo, se eu pego 1 KB e vou trafegar numa rede, por exemplo, só para arredondar o cálculo aqui, de 1 gigabit por segundo, isso vai me custar 10 microsegundos. Se eu tiver em uma rede muito round-trip, com o mesmo data center, se eu fizer aí, o que vai acontecer? Eu posso aumentar isso de forma significativa, eu posso sair de 10 microsegundos para 500 microsegundos facilmente. Isso a gente falando em cenários que estão dentro do mesmo data center. Por isso que eu falei lá, o ambiente é uma das variáveis que eu preciso considerar. Isso complica de forma muito acentuada quando a gente vê cenários onde eu tenho o quê? Cara, onde eu tenho os recursos da minha rede distribuídos aonde? Distribuídos em regiões diferentes. Então, se eu precisar executar roundtrip entre recursos de regiões distintas dentro da rede, eu vou ter problema de latência. Isso é claro. Então, algumas coisas começam a ficar muito claras aqui para mim. Primeiro, tudo falha, a gente não pode armazenar mais do que é necessário, não posso armazenar as coisas na memória RAM de forma incorreta, de forma organizada, para eu poder acessar de forma mais rápida e evitar um reprocessamento. Quando isso acontece dentro da rede, eu preciso entender essas condições de ambiente, se vai estar dentro do mesmo ambiente, se eu vou ter muito round trip, e como isso impacta a minha latência. Só que diante de tudo isso, para eu poder chegar naqueles números que a gente está buscando, ou nos objetivos que a gente está buscando como design, tem mais dois fatores importantes que a gente vê hoje. Primeiro, como premissa, a gente vê que hoje tudo tem que ser comprimível. Então, para eu poder ter o uso correto da minha rede, eu vou ter que comprimir as coisas. Então, isso quase que vira um pré-requisito. comprimir as coisas. Então, isso quase que vira um pré-requisito. Eu preciso fazer, comprimir os meus dados para eu poder ter um melhor uso da minha rede, para eu poder ter um tempo de resposta mais satisfatório. Então, isso para mim é outra premissa que sempre está à mesa quando eu estou desenvolvendo. E a última, mas não menos importante, o armazenamento. Armazenamento. Por que a última e a não menos importante? Porque até pouco tempo atrás, o armazenamento foi um calcanhar de aqueles para a gente conseguir obter um tempo de resposta satisfatório nas aplicações. Então, quando a gente tinha os discos lá de HDD, e ainda tem, tem muitas ofertas no mercado baseadas em HDD, tem muitas empresas que ainda têm soluções baseadas em on-premise, baseadas em HDD, em hard disk, a gente tem que interpretar o armazenamento baseado em um ratio que a gente trabalha. Esse ratio que a gente trabalha tem a ver com duas operações. As operações de leitura e as operações de escrita. Certo? O modelo mais adequado de armazenamento Ele vai estar sempre baseado Nesse comportamento que o meu software vai ter O software sempre vai ter Hora mais armazenamento Desculpa, hora mais escrita Hora mais leitura Então, ele também vai fazer parte da minha premissa Como que eu armazeno E o quanto custa armazenar isso? Para a gente ter uma ideia aqui, não sei se todo mundo sabe, mas os discos normalmente, os padrões de HDD, eles têm 7.200 RPM, rotações por minuto. Isso é interessante por quê? Porque essas rotações por minuto, as leituras que a gente tinha no HDD, determinavam qual era o tamanho ou qual era o tempo necessário para eu executar um processo de consulta. Lá no passado, quando eu não tinha essa barba branca que eu tenho, isso era uma problemática porque a gente precisava andar pelos blocos do disco para encontrar o bloco mais satisfatório e encontrar, de fato, ter um menor tempo de leitura dentro do bloco. E o que que acontecia? A gente tinha uma máxima, não sei se todo mundo já escutou, naquela época a gente falava assim, olha, space is free, spindle is expensive. Ou seja, o espaço era barato, mas a capacidade de armazenamento é limitada, porque ela, de fato, determina o quão caro é o consultorado. E consultar o dado, hoje, ainda é caro. Armazenar é muito barato. Faz sentido, Wesley, que eu estou falando? Armazenar é barato. Consultar é caro você não quer falar comigo? a gente está num momento que se a gente compara quando a gente olha pra trás a gente tinha muito medo de guardar dados a gente ficava tentando regular demais isso. E hoje a gente vê dados duplicados para tudo quanto é lugar para tentar suportar tipos de escala. Fernando, tem uma pergunta que foi feita, que é o seguinte. Você disse que RAM é lento. É lento. Na maioria das pessoas, quando pensam, poxa, eu vou fazer um cache, e é melhor fazer um cache em memória porque é mais rápido do que eu guardar em disco, e depois você fala, poxa, mas RAM é memória, é lento. Exato. Como que funciona essa provocação? Exato, exato. Aí que está. A gente está fazendo uma comparação de RAM com disco. Realmente, a memória RAM é muito rápida e comparada ao disco. Mas a gente precisa lembrar que isso acontece em alguns cenários. E não são todos os cenários que a gente se compara igual. Há cenários onde, por exemplo, baseado no ambiente, por isso que eu falei que o ambiente é importante, baseado no ambiente, eu incluso não tenho controladoras entre hard disk, entre disco e entre máquina, para eu poder diminuir a quantidade de IOPS e ter um tempo de resposta melhor. Exemplo disso, você vai ver vários providers que não há controladora, nenhuma controladora, e a gente chama isso, dá um nome disso, a gente fala que a unidade de disco está armazenada na barriga da máquina. Já escutou falar disso? Na barriga da máquina. Significa que não há um controlador entre ambos. Isso foi feito para melhorar o óbito de resposta. Quando a gente fala para tomar cuidado porque ele é lento, porque realmente esse pensamento, na verdade, eu acho que é ótimo esse pensamento. Cara, eu não vou adenar em disco, eu vou levar para a memória. A memória é excelente, porque, de fato, eu consigo repor a memória muito rápido, às vezes mas para eu fazer a leitura dela ele ainda é lento eu organizar as coisas na memória de forma satisfatória ainda é pouco íntimo pelas pessoas de forma geral de forma geral a gente coloca utiliza por exemplo um redis um main cache que já tem uma estrutura pré-definida de armazenamento e lá ele cuida para mim de forma encapsulada, se pode dizer, dessa organização para eu ter um tempo de resposta mais satisfatório. Mas a gente tem que lembrar que nem sempre é assim. Às vezes eu tenho softwares, por exemplo, que são baseadas em, por exemplo, leitura biométrica, que eu preciso cuidar da locação em memória. Então, por exemplo, os hardwares de leitura biométrica, eu não uso um Redis ali. Eu vou ter que cadastrar a biometria do meu usuário em memória lá como eu fazia em C no passado. Era a forma mais rápida que eu tinha, mais rápida do que usar um software desse, que não vai responder a essa necessidade. Então, quando a gente olha, a gente precisa tomar um cuidado. Por que a gente precisa tomar um cuidado? Porque quando a gente utiliza soluções que encapsulam já um comportamento, a gente está transferindo para essa solução essa responsabilidade de fazer essa tratativa, mas nem sempre todos os cenários de software são iguais. Por isso que a arquitetura se chama arquitetura de referência. Então, precisa tomar cuidado, ter como verdade que ele é lento, incluso para armazenar e ler da melhor forma. Nem sempre você vai ter um Redis, um Mencash ou qualquer sistema que ajude você a consultar esses dados de uma forma mais estruturada. Esse que é o negócio. Nem sempre eu vou ter. Pode trazer à mesa aí quem trabalhava com C, com C++, quando estava fazendo ponteira em memória. Certo? Perfeito. Então, lógico que a aplicabilidade é distinta, mas a gente precisa entender as premissas, né? A gente acaba utilizando de forma exacerbada o recurso de uso de memórias, que nem eu falei, transferindo para esses softwares essa responsabilidade, mas a gente como arquiteto, hoje, aqui sentado, fazendo o system design, a gente precisa entender isso, que memória de fato ele é dentro e eu preciso colocar coisas de forma organizada lá dentro. Ah, Fernando, eu vou então escolher um software, se for o caso nosso, uma peça de software que vá fazer isso da melhor forma. E aí eu preciso entender como ele faz isso. Faz sentido, não é? Faz todo sentido. O ambiente muda tudo. Muitas vezes, pelo fato de a gente desenvolver, sei lá, para web, ah, não, eu preciso pegar o dado rápido, eu vou na memória. Mas a gente esquece que existem outras situações que não são apenas aquele banco de dados que você deixou um tail lá na memória com o Redis para tentar deixar mais rápido o acesso. Um ponto que tem que lembrar é que mesmo a memória sendo lenta e para a web, se a gente vai utilizar um acesso à memória, é um dos recursos mais caros se você comparar com um armazenamento em disco também. Exato, um dos mais caros. E é super relevante. Eu adorei a pergunta da pessoa que fez aí. Eu vou até mandar depois uma camiseta. Manda o nome da pessoa para mim e eu vou mandar uma camiseta nossa para ele. Adorei a pergunta. Show de bola. Estou anotando aqui. Eu achei fantástico. E realmente, a gente precisa ficar muito atento. Rede, por exemplo, onde eu estava no cliente, um cliente falou assim para mim, cara, até estava comentando com você aqui, né, Off Topic, e o cara falou assim, cara, rede para a gente é primordial, né? Se eu não tenho cuidado na rede, no desenvolvimento do meu software, se eu não entendo algumas condições do uso da minha rede, eu paro o país. O cara para o país, ele não para um negócio, ele para o país. Então, são premissas que a gente precisa ter no nosso ferramental como arquitetos para poder começar a desenhar as coisas. Eu adorei a pergunta, foi muito boa a provocação, foi ótima.