Melhorando a performance de uma API em Go
Vložit
- čas přidán 25. 08. 2024
- Na primeira edição da rinha de backend vários programadores tiveram de desenvolver uma API e aplicar testes de carga contra ela pra entender qual o p75, p90, p95... e seus response times. Nesse vídeo eu mostro em um passo a passo as decisões para tornar uma api go mais performática.
Evolua com desafios técnicos inspirados em testes reais de empresas de tecnologia:
💪 devgym.com.br/
🔗Links úteis
* Minha implementação: github.com/fil...
* Repositório da Rinha com regras e resultados: github.com/zan...
🏆Melhores vídeos do cana sobrel:
* Dev em Portugal 2021 • 3 mitos sobre uma carr...
* Dev em Portugal 2019-2020 • Dev em Portugal 2019-2020
* Minha história contada em vídeos: • Minha 1a entrevista pr...
* Meus testes práticos • Meu TESTE PRÁTICO em P...
* Entrevistas de emprego • #1 Como é uma ENTREVIS...
* Testes automatizados • Testes na programação ...
* Como começar a programar • Escrevendo seu PRIMEIR...
▶️ Redes sociais
Instagram: / filhodanuvem
Twitter: / filhodanuvem
GitHub: github.com/fil...
🎥 Equipamentos usados nesse vídeo
Amazon Brasil:
Microfone: amzn.to/3zujQII
Câmera (lente kit padrão): amzn.to/2UQspip
Tripé: amzn.to/2UM6Xv4
🕰Capítulos
vc literalmente fez o video que todo mundo queria, como sempre: muito inteligente
Valeuuu, que bom que curtiu cara!
Esse tipo de video é perfeito. Saber como você pensa e soluciona um problema difícil, é uma verdadeira aula! Se puder, faz mais videos como esse.
Opa Gustavo! Que bom que curtiu! Pode deixar.
Excelente abordagem, muitas dicas de observabilidade de performance, obrigado.
valeu Marcello, que bom que curtiu.
seus vídeos são inspiradores!!! Sou novo inscrito e estou maratonando tudo rsrs. Muito bom
Opa, bem vindo! Que bom que sua curtindo, boa maratona
CARA, QUE BRABO! Muito fluída a forma que tu comunica e parece que o tempo não passa... Ganhou mais um inscrito.
Daoraaa, que bom que curtiu Pedro
Cara, eu não sou de comentar em vídeos, mas na moral, esse vídeo é muito valioso e é uma baita aula. Parabéns pelo conteúdo!
Valeu mesmo pelo comentário, fico feliz demais em saber que tu gostou a ponto de mandar uma mensagem. Tamo junto.
Olha, vi vários vídeos sobre esse desafio e o seu tá SINISTRO!!!!!! Muito bom!!! parabéns !!!!
Opa, valeu mesmo! Que bom que curtiu o vídeo!
Legal demais este conteúdo!
Valeuu!
Parabéns pelo vídeo. Aprendi d+!!!
💯 que bom que aprendeu algo por aqui, valeu
brabo d++++++ cai aqui via indicação do youtube e ja vou devorar todos os videos!!!!
Opa, valeuuu Saulo. Bem vindo.
Como sempre, que vídeo FODA! Parabéns! Você me motiva a estudar Go todo dia! Valeuuu!
Valeuuu Kameikay, que bom que curtiu. E valeu por estar no canal a mó tempo.
Caracaaaa, que vídeo maravilhoso! +1 inscrito🎉
opa, valeu Salmo! Bem vindo.
Genial como sempre, meu amigo!
Valeuu grande Rogerson!
Uma verdadeira aula 👏🏾 fiquei até com vontade de aprender Go
Valeu Vinicius! Vem pro lado do go haha
Você é incrível cara, curto muito seu conteúdo!
Valeuuuu Eric ! 🙏
inscrito no canal e no devgym pro, agora só estudar !!! abraço e obrigado !!
Opa, bem vindo no canal e na Devgym Pro, qualquer coisa é só entrar em contato.
Top!
Valeu Thalles
Vim aqui deixar o meu relato, sou programador júnior e esse é o tipo de vídeo que eu sempre quis assistir enquanto estudava. Na prática, todos os conceitos de performance e principalmente a visão de alguém com conhecimento da área. Por favor traga mais conteúdos nesse estilo, como desafios, pequenos sistemas ou problemas didáticos pra análise. É muito interessante. Obrigado.
Valeuu pelo feedback, estou pensando com carinho em como trazer mais desse formato e feedbacks como o seu me animam a encontrar como :)
Primeira vez aqui no seu canal, vídeo muito bom camarada!
Valeuuu Breno
Belíssimo vídeo
Valeuu Mateus!!!
esse vídeo caiu na minha timeline na sorte, e que sorte! obrigado por compartilhar tanto conhecimento bruto, vale mais que ouro meu rei, abraços!
Opa, que bom que apareceu pra ti, espero que encontre outros vídeos legais no canal pra maratonar.
cara nem costumo comentar em vídeos, mas voce é otimo e muito didático, continue assim, ganhou um inscrito
valeu muito pelo comentário e pelas palavras. Welcome aboard :)
Animal o vídeo!!!
Valeuuu Felipe
bigodin, voce é top!
Hahahah valeu
Aulas!!! Mais um inscrito.
Opa,bem vindo mano
Vídeo maravilhoso
Valeuuu
Muito interessante ver a sua linha de raciocínio e como resolveu os problemas que foram aparecendo.
Eu aprendi muito com essa rinha, ainda vou me organizar para terminar o meu projeto rsrs
Legal Laís! A melhor parte da rinha foi cada um poder aprender algo novo independente da experiência.
caraca.. como eu nao sei nada de backend, tenho muito a aprender. Valeu pelo conteúdo, muito bom ter videos assim por aqui 😍
que bom que agregou higor!
QUE VIDEO FODA, GO SEMPRE NA FRENTE NÉ RSRSRS
Rsrsrs valeu Paulo! Go é vida
Uma verdadeira aula sobre performance e troubleshooting 🎉
Valeu mano! Vindo de você é um baita elogio.
Negão, cê é monstro!
valeu irmão.
Que video sensacional! Explicou cada etapa da otimização pra chegar no objetivo desejado, parabéns!
Valeuuu Lucas!
conteúdo de qualidade
Valeuu 🙏🏾
Excelente vídeo! Sua didática foi incrível e só deu pra perceber o "caos" no processo pq vc falou no final! Bem inspirador essa "rinha".
hahahaha que bom que tu curtiu (e que deu pra minimizar o caos).
bem legal
Valeu Luiz que bom que curtiu
Vc é golaço brother!!!!
Valeuuu Mano ⚽️
Parabéns pela aula. Altamente instrutiva. 👏👏👏
Valeuuu Saulo!
voce podia muito fazer a parte 2 desse video indo a fundo na sua implementacao com a nova carga dobrada de testes. A rinha de backend ja acabou, mas esse caminho na identificacao de gargalos e decisoes para melhorar a performance sao mto mto mto mto bons e educativos. vlw!
Valeu pela sugestão angelo! Tão vindo novas rinhas aí, de compiladores e frontend. Vou precisar escolher em qual participar por acho que elas vão rolar esse mês haha
@@Filhodanuvem pois simmmmmmm eu comecei a estudar absurdamente p essa de compiladores agora. Acho q n vai dar tempo de eu alcançar a galera p entregar pq sou noob, mas tô engolindo c++ álgebra e estrutura de dados lakalalka se você escolher essa vai ser muito legal 😎
Que conteúdo absurdo! Cheguei agora e já virei fã do canal. Parabéns demais!
🙏 que bom que curtiu Leonardo. Bem vindo
Excelente vídeo! Excelente explicação e muito aprendizado!
Valeuuu demais!
Top tier content!
manooo que vídeo foda, obrigado pelo compartilhamento de conhecimento 👊
Tamo junto Diogo
FODAAAAAAAAA
valeuuuu mano
Tu é fera demais!
Por mais vídeos assim.
Abraço.
valeu mano! 🦁
Nem terminei de ver o vídeo mas já quero te dar parabéns!!! Excelente conteúdo.
Dahora d+, feliz com tua volta mano!
Conteudinho true do true, que venha mais!!!
Opa, valeu pelas palavras!
excelente vídeo!
Valeu mestre Branas
Video massa demaissssssss.
tive que compartilhar com geral aqui, conteúdo de ponta .
Opa! Obrigado por compartilhar, ajuda muito 🙏 🙏 🙏
Faz tempo que eu via alguem tão alto nível assim... apenas meus manos de trampo. Mas esse vídeo é uma aula e informação de amos de experiências. Veio... me arrepei! Tu arrasa demais kskskssksks, sucesoooo meu queridão.
Uma aula falando tanto de um simples exemplo, quanto uma comparação com e vida real. Kskskskkskssk aí sim.
❤️ valeu pelo feedback Cassio, deu trabalho mas que bom que gostou do resultado.
Mano você brilhou muito na criação das soluções pra melhorar a performance da API 🌟e ter visto seu vídeo foi inspirardor! Obrigado !!!
Valeu demais pelo comentário Ângelo, que bom que curtiu o vídeo e te inspirou de alguma forma
Excelente! Mesmo num vídeo compacto você conseguiu mostrar os bastidores da busca por performance, o que é bem comum no mundo real de desenvolvimento. Estou aprendendo Go há alguns meses, você tem sido uma inspiração. Sua didática é muito, muito mesmo, acima da média.
Obrigado Anderson! Não tem elogio melhor que falar que minha didática foi boa.
Muito bom, muito bem explicado.
valeuu!
Obrigado por esse maravilhoso aprendizado ❤
Por favor, mais vídeos sobre isso!!!!
Valeuuu Mano jack! Pode deixar
Pra quem nao entendeu, ele deu uma aula, e cabe a nós pesquisarmos literalemnte cada termo e implementar em apis de estudo (ou reais) tudo que ele falou. Que video, meus caros, que video...
valeuuu mano
Que aula, contéudo maravilhoso demais !!!!
🙏🏾 valeu pelo comentário.
Que massa! Da forma como tu mostrou a sua experiência na rinha deu até vontade de participar! Parabéns, ficou muito legal!
Valeuuu Jhonatan, fica ligado que a rinha de compiladores está prestes a começar e vai rolar um de frontend também.
Achei o boné ali atrás muito legal. 👏👏
Rsrs 🧢 valeu mano
Sensacional, excelente vídeo! Go é vida!
Valeuuu
Parabens, estava sentindo falta dos seus videos.
Namoral um dos melhores conteudos de programação no youtube
Opa, valeu demais pelo elogio e obrigado por continuar acompanhando o canal.
Valeu!
🙏🏾 valeu pelo superThanks Nisael!
@@Filhodanuvemseu conteúdo é incrível
Meu patrão, que qualidade é essa hein??!! Ta maluco, roteiro 11/10! Parabéns pelo conteúdo e pela inteligência de desenvolve-lo! +1
Valeu demais! Deu trabalho mas valeu a pena se tu curtiu!
Baita aula!! Eu sou front, mas to cada vez mais me apaixonando pelo back end, e esse teu video me deixou mais pilhado hahahaha
hahahaha aí sim, mordido pelo lado backend da força haha.
Mano, você é único! Não à toa tá sold out. ❤ Valeu por mais um vídeo de extrema qualidade.
Hahahahah sold out. Valeuu irmão
Gostei desse tipo de video!
valeuu!
amo a rinha, e amo o review de todo esse cenário, simplesmente só aprendizado
Foi foda mesmo Nando
Você me inspira demais cara! Da sua história ao seu conhecimento. Obrigado tudo isso conosco ❤ e belo boné heheheh
🙏 🙏 obrigado pelo comentário Matheus. É muito doido saber que te inspiro de alguma forma. (Esse boné tá causando, nem era a intenção hahaha)
Meus parabéns, existe muito pouco conteúdo aqui no ytube em pt-BR com tamanha qualidade, sensacional
Valeu Jonata, que bom que curtiu!
Sensacional! Ganhou mais um inscrito 😃
Opa, bem vindo!
Vídeo inspirador, obrigado por esse conteúdo
valeuu! que bom que curtiu!
que top, parabéns !
ganhou um seguidor
Opa, bem vindo(a) e brigadão!
Man, tô impressionado, sou dev focado para o front end e muito "curioso" com o assunto tratado nesse vídeo, mas que delícia esse conteúdo e a forma como vc apresentou, parabéns!
Muito obrigado. A ideia do vídeo era realmente soar interessante pra backend e frontend devs. Que bom que curtiu.
Incrível Claudson!!!! Vídeo sensacional
Valeuu Pedro
Cara, você é maravilhoso, na moral. Muito obrigado pelo conteúdo
Muito obrigado Kevin por sempre aparecer aqui nos comentários nos últimos anos.
@@Filhodanuvem mérito do seu ótimo conteúdo, já vou aplicar esse conhecimento no projeto que construí
Muito bom vídeo, gosto quando falas sobre performance e qualidade de código. Go ahead!
Valeu Inocêncio 🙏🏾 Obrigado por sugerir o vídeo.
@@Filhodanuvem Disponha.
+1 inscrito mano!!! Muito bom ficou esse vídeo!! Acabei ficando curioso o que seria agora o próximo gargalo depois de dobrar a carga haha. Vale a pena uma parte 2 hein rs!
Valeuuu cara, vale mesmo ein, quem sabe não volto com essa parte 2 rsrs
Adorei o vídeo. Não sou programador GO, mas fiquei super focado no vídeo e adorei o resultado. Parabéns pelo vídeo. Novo inscrito.
daora! Se curtiu o vídeo sem ser programador Go então o vídeo cumpriu o propósito.
Amei o bonezinho do octocat
Valeuu irmão
Muito bom! 👏🏻👏🏻
Chegou a testar um índice fulltext pra busca?
Eu não investi tanto, cheguei a usar uns operadores tsvector e tsquery mas não vi grande melhora. Talvez não tenha isolado essa solução o bastante pra perceber a diferença, ou testei ela com a carga inicial antes de dobrarem, não lembro rsrs
Que vídeo FODA!
valeu Victor!
Seria melhor ainda se tivesse um curso onde vc vai implementando isso e vai batendo nessa dificuldade
Tu é brabo mesmo hein!!
Valeuu irmão
fera demais Parabéns, seguidor já@@Filhodanuvem
Que massa esse vídeo, o nome do canal é muito bom também 😅. Estou acompanhando agora o vídeo, sou iniciante em programação e estou agora lidando com o backend do meu projeto de uma pequena loja online. Talvez tente fazer isso em NodeJS em algum momento para ver o quanto ele perde para essas outras linguagens mais performáticas, se eu conseguir. +1 inscrito.
ótima ideia fazer isso pra estudar, seja bem vindo Andre.
Cara, você tem algo que tá muito escasso hoje, autenticidade. Vou nem falar da sua inteligência e capacidade técnica, choveu de comentários assim já hahaha esse final do vídeo onde você joga a true para galera de que o fluxo para chegar na solução não foi tão bonito como parece foi a cereja do bolo. Muitos acham que as vezes a solução vem pronta, achando que é 99% genialidade e 1% trabalho duro. Parabéns pelo vídeo, não te conhecia mas ganhou um inscrito. Vídeo perfeito, grande abraço!
Muito obrigado pelas palavras meu caro, infelizmente o lado ruim de vídeos na internet é a falsa sensação que ele pode passar, por isso quis deixar claro que essa prática de busca de performance na maioria das vezes é baseada de hipóteses, tentativas, testes e erros.
vídeo perfeito com destaque ao boné do mst kkkkkk tmj like e inscrito
Hahaha valeuu e bem vindo ao canal
Gostei bastante do video! +1 inscrito ...
uma unica obs: achei o audio do video meio baixo ...
Valeuu pela colocação e bem vindo Wallace. Vou dar uma chegada no áudio.
Kkkk o nome rinha de backend foi sensacional. Parabéns pelo vídeo, 24 minutos que passou voando.
Hahahah também adorei o nome. Valeu pelo comentário, se o tempo passou rápido então vou investir em mais vídeos assim.
por mais vídeos assim, pfv
Opa! Valeu pelo feedback!
q delicia de aula.
Faz mais vídeos de backend. fora os tutoriais, tem muito pouco conteudo em pt pra babckend
Opa, valeu! Já tem bastante material de back mas vou continuar!
Vídeo e explicação top demais !! Só fiquei com uma dúvida, por que ao invés de criar go routines para inserção do registro você não inseriu direto no DB após verificar se não existe? E logo após a inserção no DB já inserir no redis também?
Obrigado pelo conteúdo
Fala Vinicius, que bom que curtiu.
De todo o processo de endpoint post a parte mais custosa/demorada era a escrita no banco, escrever na memória/cache é mais rápido por isso só adicionei no cache e já retornei uma resposta. Por isso comentei que estava sacrificando a persistência, já que não é comum fazer esse caminho inverso na vida real.
muito bom cara, muito bom mesmo, parabéns, agora é esperar o vídeo do pessoal das outras linguagem kkkkk
hahaha valeu!!
Esse nome "Rinha de Backend" ganhou um like fácil!! kkkkkkkkk Eu agora entendi um dilema humano da vida! A maior parte das pessoas não "briga", a maior parte dos desentendimentos é mera "rinha"! ahuahu Valeuuuuuuuuuuuuuuu
hahahahah rinha é muito bom neh, o Zan foi criativo demais. Eu acho que nem dá pra traduzir essa palavra em outras línguas haha.
fiquei sabendo dessa rinha dias depois, infelizmente nao participei, mas mesmo assim eu decidi fazer esse desafio, só pra praticar mesmo, estou utilizando golang e postgres, eu nem tenho uma estrategia pra performance tipo distribuição de CPU/RAM etc, com certeza minha api nao vai aguentar muito, mas só de eu conseguir configurar o nginx, criar imagem docker da minha api, montar toda essa arquitetura, jogar ela em um docker compose, fazer tudo isso rodar em uma VM, e ainda conseguir executar o gatling (uma ferramenta que eu nem sabia que existia) nessa VM, eu ja estarei satisfeito...
entao a questao nem é se minha arquitetura vai aguentar muito ou nao.... o meu desejo mesmo é conseguir montar essa arquitetura toda
acho que por isso eu nao conseguiria competir, montar tudo isso é meu desafio, enquanto para os competidores da rinha tudo isso é arroz com feijao
o grande legal da rinha foi justamente ter um projeto onde todo mundo podia aprender e se divertir, os mais juniors e os mais seniors conseguiam exercitar conhecimentos diferentes.
@@Filhodanuvem sou pleno, os competidores eram mais seniors?
eu vi alguns projetos, pessoal separando 0.5 CPU pro banco, outros 1.5 CPU pro banco, olhando tudo aquilo fiquei perdido
eu não faço ideia de qual forma é a ideal para distribuir CPU pros componentes, isso é um conhecimento que eu realmente nao tenho
Cara, muito bom teu vídeo! Gostei do conteúdo e foi legal saber da rinha, não conhecia e curto muito esses desafios também!
Sobre a performance se tu reparar no 22:06 na comparação da última versão, apesar do tempo de resposta ter melhorado muito, tu perdeu muito no volume de execuções, caiu praticamente pela metade.
Valeuu Victor. A carga da rinha era x (essa metade) e só no fim ela dobrou, eu devia ter tirado todos os prints com x mas só percebi que tinha tirado tudo com 2x no final da edição, então acabei contando a história com prints 2x exceto a última implementação
boné FODA de fundo!!
🧢 valeu pelo comentário
Pega o melhor colocado lá que usou GO e explica o código dele pra gente aprender. Aproveitando, quando eu vi sobre a rinha, que era uma tabela só, na minha cabeça todo mundo ia usar MongoDb. Na minha cabeça, para essa solução ele seria o mais rápido de todos. Mas para minha surpresa, todos mundo usou o Postgres. Não entendi porque. Poderia explicar também?
Valeu, parabéns pelo conteúdo.
É uma boa pergunta Daniel mas eu tenho quase certeza que todo mundo começou pelas tecnologias que tinha mais familiaridade. Fazer tunning de postgres já foi um desafio e seria maior ainda em mongo no meu caso, já que trabalhei menos com ele.
ahhhh mano Bone de movimento terrorista no cenario nao, velho. Ai quebra a firma.
kkkkkkkk
brinks
Video muito brabo, essa ideia da rinha foi demais!
Cara, eu não concordo esse "movimento", mas o conhecimento q ele passa é valido, pelo menos. Ainda mais dele usar um Mac ao invês do GNU/Linux, é tipo desmerecer a luta do OpenSource . e do Cara que jogou uma torta no Tio Bill ou apoiar o Jobs ter feito a galera trabalhar 90 horas por semana
Hahaha Valeu Victor! A rinha foi a coisa mais incrível que eu vi nos últimos anos em termos de comunidade de software.
Tiago não é porque eu apoio open source que eu tenho que usar tudo open source neh hahaah. Imagina.
@@Filhodanuvem na verdade sim. Chega no Richard Stallman e diz que vc usa mac e apoia o opensource, Seria uma heresia. A Church of Emacs iria te perseguir kkkkk
video ficou incrivel, eu também fiz uma solução em go que infelizmente deu problema na rota de contagem e o resultado ficou zerado. Conheci golang pelo teu canal e hoje é minha linguagem favorita para hobby.
Tu trampa ativamente com go?
Que bom que curtiu o vídeo Luca. Trabalho com go sim no dia a dia.
rs mt brabo ksksksk brabo a niveis estratosfericos ksksk foda demais. pode trazer mais pq só nesse vc me mostrou que 19 ms caramba ksksks 19 kkk o pior cenario ksks brabo. indo no redis e dps no db cara brabo kk ta doido ksksk continue assim um dia quero chegar nesse nivel do senhor e nem é puxando saco não achei muito foda esses 19ms
Hahahha valeu mesmo Carlos! Senhor está no céu mas fico feliz mesmo que tenha curtido o vídeo.
Cara fiquei triste quando vc disse que a sua api ficou ruim de performance quando dobraram a carga, vc fez um trabalho impecável foi atras dos mínimos detalhes acredito que se tivesse mais tempo vc tiraria de letra. Parabéns pelo conteúdo e a propósito sou novo aqui 😂😂😂😂
Hahahahaah fica triste não, toda solução é performática até um certo limite. Valeuuu e bem vindo Wesley.
Muito foda, fiz minha API em Go também e to agora aprendendo sobre caching e goroutines pra tentar melhorar a perofrmance
Alguma recomendação de material de leitura?
Fala mano, pra goroutine, eu começaria pelo go tour
go.dev/tour/concurrency/1
já deu uma olhada? Sobre caching não me vem nada na cabeça além da documentação do sistema de cache que estiver usando.
Mano, tem como fazer um video baixando o postgres? Eu ja tentei instalar por vídeo e pela documentação e não consegui, tentei durante uma semana, comecei ate a instalar em máquina virtual
Fala Carlos mas exatamente onde é o problema ? Depois de baixar o que acontece quando você tenta rodar ?
@@Filhodanuvem Agora eu estou no trabalho não vou poder informar, mas quando eu chegar em casa copio o erro aqui. Vlw