Bom pessoal, vamos falar agora sobre eficiência e performance. Essas duas palavras, elas são palavras diferentes, com intenções diferentes, mas elas são totalmente correlacionadas. Vamos falar aqui, ó. A capacidade de usar recursos de computação com eficiência para atender os requisitos de sistema e manter essa eficiência à medida que a demanda muda e as tecnologias evoluem. Legal? Como é que funciona? Qual é essa ideia? Vamos entender primeiramente qual é a diferença entre eficiência e a diferença entre eficiência e performance. Vamos lá. Eficiência é o quão bem algo pode rodar atendendo os requisitos de negócio. Como assim quão bem? Como que eu consigo rodar com menos fazendo mais? Sempre pense assim, o que é ser eficiente? Fazer algo grande com menos. Fazer algo grande com menos. Conseguir gastar menos e conseguir otimizar aquela coisa que você está gastando menos para fazer o mesmo tipo de trabalho. Eu vou dar um exemplo muito simples. Dependendo da situação, dependendo do escopo, só de você trocar linguagem de programação você já consegue aumentar muito mais a sua eficiência porque porque dependendo da linguagem de programação ela é mais eficiente porque ela faz mais coisa com menos e normalmente para ser eficiente ela tem que ter mais performance e quanto mais performance ela tem, mais eficiente ela consegue ser. Mas eu não estou aqui apenas para falar de linguagem de programação. Eventualmente, como que você mantém eficiência? Às vezes você está usando uma máquina X que tem um custo X e se você utilizasse uma máquina Y com custo Y, você conseguiria ter o mesmo resultado gastando menos. Legal? Então, eficiência é fazer mais com menos. E performance é quanto mais normalmente você consegue performar, normalmente você consegue fazer mais com menos. Entende? Então, isso aí é um ponto importante quando a gente está falando de eficiência. E essa eficiência, ela não tem que ser mantida somente na primeira vez que a aplicação foi para o ar. Rodou, está parada, está eficiente e beleza. Não, essa avaliação de eficiência tem que ser contínua, porque invariavelmente, por exemplo, atualizou uma linguagem de programação, está em uma nova versão, e nessa nova versão você já tem 20% de mais velocidade. Poxa, vamos tentar organizar aqui para tentar fazer esse upgrade. Quais são as dependências para eu fazer esse upgrade, para eu conseguir ser mais eficiente. Entende? Então, isso aí é muito importante. A eficiência tem que ser vista ao longo do tempo. Legal? E quais são os principais pontos que a gente tem que pensar em relação a eficiência e performance? Primeira coisa, democratizar tecnologias avançadas. O que isso significa, galera? Existem tecnologias que são extremamente complexas, difíceis, e que se você ou se algum desenvolvedor tivesse acesso, a empresa inteira conseguiria rodar com mais eficiência. Eu vou dar um exemplo bem chulo aqui, mas eu acho que vai dar para você perceber. Vamos imaginar que todas as requisições de todos os seus micro serviços funcionem de forma síncrona. Legal? Por quê? Porque foi feito dessa forma e tudo que roda de forma assíncrona você vai gastar mais porque você tem que receber e retornar o resultado em tempo real você não consegue fazer o processamento em background por exemplo legal aí de repente surge o serviço do Apache Kafka na AWS. Surge o SQS. Surge o Kinesis lá. Cara, são tecnologias extremamente robustas, extremamente complexas. Legal? Mas, que é facilmente, agora, pode ser utilizada. O quão trabalhoso daria para você gerenciar um cluster de Kafka? A AWS faz para você. Ou seja, tecnologias extremamente avançadas agora podem ser utilizadas para aquela empresa ter mais eficiência, fazer mais com menos. E, em contrapartida, ela vai ter também mais performance. Imagina você pegar uma malha de, sei lá, 500 microserviços que estavam rodando de forma assíncrona e conseguir rodar isso de forma assíncrona e rodar isso de forma assíncrona. Grande parte deles. Você vai economizar muito. Ou seja, existem hoje ferramentas que são extremamente complexas, que são ferramentas extremamente difíceis de gerenciar e que agora a gente tem acesso. Eu gosto de contar história, galera, mas um dia não. Eu tive a oportunidade de ser mentorado por muitos anos por um dos vice-presidentes de um grande banco no Brasil. Na realidade foram de vários bancos mas eu lembro até um dia que ele me levou até a Avenida Paulista e me mostrou um data center daquele banco e falou que tudo que estava naquele data center todas aquelas máquinas toda aquela história, estava tudo replicado num outro lado, num outro bairro. E eu falei, caraca, cara, realmente não é qualquer pessoa que consegue montar um banco. Ou montar alguma coisa com alta tecnologia, porque é extremamente complexo. alguma coisa com alta tecnologia porque é extremamente complexo hoje em dia com a nuvem qualquer startup consegue ter acesso a qualquer tipo de tecnologia que um banco roda porque porque coisas complexas estão democratizadas entre aspas agora pelo menos você tem acesso é barato não mas você tem acesso é muito mais barato você começar hoje em dia do que você tem que fazer um investimento gigante só pra aparecer o seu olá mundo para o cliente final legal a torne-se global em minutos tá hoje em dia a gente tem que pensar o seguinte tá quando a gente fala em tornar global você vai ter várias esferas, vários pontos de vista. O primeiro ponto de vista é o seguinte, alta disponibilidade. Eu consigo rodar a mesma carga de trabalho que eu estou rodando nos Estados Unidos, rodando em São Paulo, rodando na Europa. Você consegue fazer isso facilmente hoje em dia, utilizando a nuvem. Então, isso é importante. Não somente regiões em diferentes lugares do mundo, como a parte de zonas de disponibilidade, as E's, a viability zones. O que isso significa? Que você vai estar rodando em diversos data centers com pelo menos 100 quilômetros de diferença entre eles né pra garantir que mesmo que aconteça um evento um sei lá um evento trágico é por questões naturais você consegue rodar um outro ponto importante também é você conseguir se manter dentro da lei né por exemplo eu não posso mais guardar dados de cidadãos europeus em data centers americanos como que eu faço agora isso eu consigo rapidamente ser global e guardar esses dados na Europa, por exemplo. Legal? Use arquitetura serverless. E a gente já falou sobre serverless, e agora você já sabe também que quando a gente está falando em arquitetura serverless, a gente não está falando apenas em Lambda Functions. A gente está falando em S3, a gente está falando s3 a gente está falando em dynamo de b a gente está falando em rds a gente está falando em lambda fonte a gente está falando em diversos tipos de serviço o que é serverless serviços que no final do dia você não tem que mais pensar em operação você só chega e usa ele escala e ele se vira ali para você. Legal? Outro ponto importante, experimente com mais frequência. Cada dia tem uma novidade. Em qualquer cloud provider. E se você não tiver a cultura de experimentar, de testar as coisas, você nunca vai saber se você consegue ter mais eficiência, porque recursos novos acontecem o tempo inteiro. Vou dar um exemplo ali para você. Quando a gente está rodando uma Lambda Function, a gente sempre tem aquele ponto do cold start, que muita gente fala. Ou seja, é o tempo de a sua aplicação baixar, ser baixada lá de um S3, ser deployada e começar a rodar. Você pode ter lá, sei lá, um segundo de latência. Mas agora, para algumas linguagens de programação, você tem ali o seu Snap Start lá. Ou seja, você consegue subir bem mais rapidamente. Isso aí aí você só consegue fazer o que experimentando legal e o outro ponto que ele chama é considera mecânica ou simpatia ou seja no final do dia você tem que além de conseguir experimentar você também vai ter que se acostumar a cada dia mais utilizar aqueles tipos de solução legal então aqui a gente falou sobre eficiência e performance