Essa saga já está virando minha série do ano! Paraabéns pela resolução dessa TRETA, você é um grande profissional e também um TH-camr que conquista a atenção do início ao fim.
Adoro ver TRETAS! Cara muito bom ver a sua linha de raciocínio para resolver um incidente, amei esse vídeo rsrs quando você foi falando o que estava acontecendo eu fui imaginando por onde começaria a procurar, concluo que primeiro começaria a chorar de desespero só da pipeline estar toda ok, na sua maquina e prod não 😂 Parabéns pelo vídeo mandou muitoooooooo!
😂 valeuuuu Laís! Que bom que curtiu, sem esse vídeo não dá pra saber se sigo nessa linha ou não. Vou tentar encontrar outros casos pra contar, vai dar mais trabalho porque preciso criar o cenário da empresa (meio fictício) antes mas acho que fica legal, vamos ver.
Graças a vc estou com uma TRETA a menos em produção, depois do vídeo fui verificar e constatei que poderia ocorrer o mesmo incidente, muito obrigado pela dica, mostra mais desse tipo de conteúdo, pode trazer alguns insights valiosos pra quem tá começando
Cara, acho que esse é o tipo de conteúdo que mais falta para os DEVs. Faça mais vídeos desse tipo! Vale muito a pena saber dos problemas e o desenrolar para resolução. Gostei bastante! TRETAS!
Valeu William. Eu fico bastante de olho no que os produtores estão fazendo e honestamente não encontrei esse tipo de vídeo também não. Fico feliz que você goste, em breve em volto com mais tretas.
Foi ótimo discutir o cenário, que evidentemente poderia ter ocorrido com qualquer pessoa ou organização e é um alerta para aqueles que desejam implementar técnicas de DevOps em processos de desenvolvimento de aplicativos.
Treta! Por favor faça mais vídeos como este. Cara esse vídeo foi incrível. Toda a situação foi bem detalhada e pude sentir como se estivesse vendo esse erro na minha frente. Eu ainda não tive muitos incidentes com códigos em produção. Pois foram poucos os projetos realmente complexos que fiz. Mas tenho certeza que depois desse vídeo vou ter uma noção melhor de como resolve-los.
Ótimo exemplo de tratamento de incidente! Trabalhei durante anos nessa área e fico feliz de ver esse tipo de vídeo explicando como funciona a análise e tratamento de incidentes. Muito legal, parabéns!
muito bom!!!! sou estudante na programação...entendi alguma coisa? muito pouco. Mas vc abriu um leque de raciocinio e perguntas que talvez seja de muita importancia. ótimo conteúdo 👏👏
Legal que mesmo não entendendo muita coisa você se interessou. Pode ter certeza que mais importante que entender tudo é perceber que existe uma linha de raciocínio e uma técnica pra encontrar o problema.
TOp demais o video haha Atualmente trabalho em uma multinacional no time que mantêm o sistema legado, e as "ambulâncias" ( bugs criticos ) são frequentes e isso me deixava muito frustrado, felizmente com o tempo fui criando "casca" e sabendo lidar melhor com essas coisas, e é engraçado que no dia-a-dia de um sistema legado, esquecemos que até sistemas novos, com novas tecnologias sofrem com essas "ambulâncias", não é tudo mil maravilhas haha
pode crer eu também vira e mexe tenho que resolver uma TRETA em produção. e é sempre assim. passa por todos os testes. passa por todos os ambientes. a TRETA só aparece na produção. e é isso mesmo, o lance é ter calma e encontrar a causa raiz. curti.
ja trabalhei em lugares que com dias assim mesmo hahaha, pior que um dia cheio de incidentes é um dia com um incidente só P1, aquela que derruba o sistema inteiro.
Que aula! Parabéns pelo conteúdo!! Ainda estou começando a engatinhar na área, e ver esse tipo de conteúdo, de situações reais, é muito enriquecedor. 👏👏👏
Boaaa Saulo, fico feliz demais em saber que tem uma galera começando na área assistindo esses vídeos. Quando eu comecei eu não fazia ideia de que incidentes, post mortem e essas coisas existiam.
Treta!!! Muito bom acompanhar cada etapa de desenvolvimento desse produto. Gosto muito como você aborda esses assuntos. Continue trazendo ótimos conteúdos assim, está sendo muito útil para mim ❤.
Parabéns pelo vídeo e todos os outros conteúdos, e o jeito como é relatado o problema deixa até mas divertido de acompanhar, pelo menos para quem está assistindo haha
Treta demais! Realmente post mortem são um saco... Vale a pena mencionar que durante o incidente são criadas salas de War Room para envolver todas as pessoas que são afetadas e quem está solucionando, é um baita estress.
E que treta!!!! O legal é que, como tem domínio do ambiente, você soube direcionar tudo corretamente. Imagine se isso acontecesse com você após ter chegado na empresa a um mês somente e não tiver a quem recorrer? Aí passa a ser um desastre, não uma treta. Ficou legal sua explicação.
seria terrivel ein. Mas ai teria um problema de organização ai, não dá pra esperar que uma pessoa recem chegada num contexto seja capaz de se desenrolar assim, mesmo sênior... mas ... a realidade é dura as vezes. Valeu Evandro!
Muito show! Olha o cenário! Hehehe Esses dias recebi um e-mail da Hotmart falando que minha assinatura estava em atraso ! Porém assinei dia 06/11 e paguei no crédito. Antes tinha pedido para pagar no PIX... Gerou QR code e tal porém voltei atrás e paguei no cartão de crédito.
@@Filhodanuvem foi algo nesse sentido. rsrsrs muito estranho. foi como se eles tivessem dois meios de pagamentos atrelados a assinatura para um unico email . eu paguei e deu tudo certo com cartao de credito porem a outra forma de pagamento com PIX não deu certo. Dai eles entenderam que estava em atraso e enviaram um e-mail cobrando kkkkkk
Opa! Compartilha mais casos de #TRETA com a gente, é bom que nos conforta em saber que o mundão não gira, mas capota pra todo mundo rsrsrsrsrs Por sinal, em um futuro distópico, acha que rolaria botar desafios de xabus como esse que você resolveu? ...resolver xabus dealgo que já está no ar, costuma ser ainda mais desafiador do que criar coisas do zero
COM CERTEZA! Planejo criar desafios de resolver bugs e também desenvolver features numa base de código já existente. Concordo completamente com você que muitos dos desafios do dia a dia são sobre lidar com código dos outros.
To curtindo demais esse formato de video Claudson, posso estar errado, mas você e o primeiro canal que vejo que esta literalmente dissecando uma app (inclusive a sua propria kk) profundamente, conteúdo foda!! sucesso no devgym!!! 🫶
Essa treta foi muito boa! Gostei muito do seu relato e identifiquei bastante com algumas situações que ocorrem na empresa onde eu trabalho. É legal saber que ta todo mundo tendo que lidar com bugs no dia a dia também kkkkkk
Hahahaha uma coisa que aprendi é que quanto menos mudamos um software menos bugs eles tem. Já trabalhei em lugares que fizeram deploy freeze em fim de ano. O programa funcionava perfeitamente bem, sem problemas haha
mais um vídeo incrível. Filho, pode me dizer oq tu usa pra fazer essas edições legais com o mouse e tal? dá pra ver que é bem fluído(como aquelas funções de lerp/slerp kk) e tem até uma animação de click. Acho sensacional tuas edições
Valeuu! Parte dos créditos é da equipe do www.screen.studio/ que criou essa ferramenta de gravação de tela com animação, fica bem legal. A outra parte dos créditos é minha mesmo porque fica bem mais complexo fazer um trecho diferente pra cada parte da historia que preciso contar haha, e o controle de zoom também é meio que manual hehe. Mas que bom que tem gostado :)
É muita TRETA! Na minha opinião, uma das piores coisas de erro é quando a mensagem de erro mostra o problema no lugar errado. A maior parte do tempo do incidente é gasto investigando uma feature que tem 3 anos que não vê uma mudança (e por isso, tá mal documentada) e nunca deu erro (e por isso ficou pra depois a refatoração). Até você descobrir que está cavando o poço no lugar errado...
Excelente vídeo! Eu curto muito ver como você aborda um problema. Outro nível! :) Curiosidade, depois desse incidente você adotou algum tipo de regression test pra garantir que essas funcionalidades principais não estão quebradas?
valeuuu mano! Eu tenho testes nesse sentido, o problema é que eles rodam contra um banco local de docker-compose. O bug era mais na pipeline que na aplicação penso eu e para evitar esse tipo de problema eu teria que rodar testes em produção, o que tenho visto como solução em algumas empresas, talvez smoke tests, que não interferem muito a a plataforma nem geram muitos dados.
Cara, posso compartilhar mas vai ficar faltando bastante contexto, porque as vezes uso make pra encapsular uma coisa aqui e ali, mas se tu quiser posso mandar aqui mesmo assim.
O que ajudaria nesses casos é o backend gerar logs completos, informando vários dados para contextualizar a situação (data e hora, URL, requestId, trace do erro, etc). Dessa forma, ao identificar um log de erro, vc pegaria o identificador único da request e faria a busca dos logs associados a esse identificador. Nesse caso vc teria o log do erro da consulta e o log do erro no insert, permitindo identificar o problema de forma mais rápida.
Outra melhoria seria implementar testes com o Cypress, testando o fluxo de login e pagamento, que acredito ser os dois pontos críticos da sua aplicação.
Valeu pelas adições. Tem toda a razão sobre a melhoria dos logs. O Cypress nesse caso não ajudaria muito nesse caso, até porque os testes estão lá mas como eles usam uma versão da aplicação e banco diferentes dos de produção, ainda há essa brecha de erro. Além disso, os testes de autentição com cypress não são muito fáceis de fazer, comentei disso nesse video aqui th-cam.com/video/3ou8OHieCNY/w-d-xo.htmlsi=FIUF3qzv4vjcyFXs Depois me diz se tem alguma sugestão pra fazer by pass dos problemas.
@@Filhodanuvem a minha sugestão do Cypress, foi executa-lo diretamente em produção. Você criaria uma conta de teste na sua aplicação em produção, e usa as credenciais dela para realizar o teste com o Cypress. Esse teste deveria rodar após o deploy em prod, mas garantindo que esteja testando na nova versão. Outra opção seria usar alguma funcionalidade para agendar esse teste para ser executado a cada X horas.
Pra que fazer verificação de quando rodar a migration? AS migrations rodadas não deveriam ser registradas no banco. Se executar o comando de migrations, antigas migrations não vão ser executadas novamentes.
Para por exemplo reduzir o tempo da pipeline. E eu também queria reduzir o número de interações de rede entre o GitHub e o banco por questão de segurança, ainda vou voltar a trabalhar nisso.
Boa pergunta Talis. Tudo depende da situação, não dá pra expor detalhes de problemas e implementação pra fora de empresas, então nunca vou em pessoas da comunidade para problemas que eu preciso passar o contexto da empresa/solução antes de falar da treta. Para incidentes assim a estratégia é sempre olhar pro histórico de mudanças recentes pra entender se o problema é novo ou não, se reverter for uma opção obvia e sem riscos, é melhor fazer. Se nao for uma opção, é tentar entender o problema e debugar, os calos da vida deixam a pessoa mais experiente naturalmente mas em tese é tentar reproduzir o problema, criar uma hipotese do por que ele acontece, testar e ver se a hipotese se confirma, repetir isso varias vezes até a hipotese ser verdadeira (bem na linha do video). Ter ajuda de alguem trabalhando em paralelo em outras hipoteses tambem ajuda, buscar por conversas antigas no slack e documentação em geral que possa indicar que a treta já aconteceu no passado pode indicar alguem com experiência nesse tipo de problema. Não tem problema pedir ajuda, só é bom pedir ajuda depois de tentar algumas coisas. De novo tudo depende da gravidade do problema. Quando o problema é muito grave, provavelmente vai aparecer muita gente pra ajudar ou investigando ao mesmo tempo.
treta !! Conteúdo muuuito bom, depois se puder grava um video como podemos ter uma aproximação de gastos de infra ao fazer uma plataforma assim, tipo gasto com banco de dados, gasto com servico de deploy, gastos com domínio e por ai vai =) Conteúdo muito bom !!!
Decidi usar pra reduzir o tempo da pipeline e reduzir a interação do GitHub com o banco de produção. Em questão de tempo poupava 1 ou 2 minutos. Pra uma pipeline que leva uns 15 até que é um tempo considerável mas nada que me tire o sono. A questão da interação me preocupa mais.
Bom video, heim mano! Essas são as tretas reais do dia a dia. O que você identifica como a causa raiz? Eu penso que o principal seja a falta de pensar em YAGNI. A pipeline ja estava lenta? Era realmente necessário um aprimoramento dela pensando em performance? Se não, faz sentido, né? Mas é isso. Esse falha te obrigou a revisar a sua jornada de auth. Sempre tem um ganho, até nas buchas. 😂😂😂😂
é dificil falar de todas as motivações nos vídeos mas além da velocidade na pipeline, eu queria reduzir a interação no banco de produção através da pipeline. Para mim, isso é uma brecha de segurança. Se fizermos o exercício de 5 whys, eu diria: 1) Por quê o incidente aconteceu? Porque uma coluna da tarefa x deveria estar em produção e não estava. 2) Por quê a coluna não estava lá? Porque as migrations não rodaram. 3) Por quê as migrations não rodaram? Porque uma action fez skip do job. 4) Por quê? Porque implementamos o skip pra reduzir o número de interação github - banco. 5) Por quê? Porque isso é considerado pela gente como uma brecha de segurança. A brecha de segurança é o root cause e o uso errado da action também faz parte da causa raiz. Numa equipe maior, ou quando a devgym crescer, iria sugerir trabalharmos em como resolver as migrations sem roda-las a partir da pipeline, há estrategias pra rodar as migrations no proprio binario go assim que ele sobe e nos ultimos meses o cockroach também lançou uma feature de migrações. As tarefas (que são action points) iriam ser sobre pesquisar essas alternativas e levar a discussão pro time pra decidir quais delas usar.
Amo os relatos aqui, passo por problemas assim direto kkkkk Ainda mais que tenho que coordenar juniors e eles não possuem tantas habilidades pra achar os problemas
TRETAAA! Agr a questão é a seguinte... conseguiu jogar o jogo do miranha? Kkkkkkk Amei esse vídeo seu, bem diferente! Faz mais vídeos desse tipo 🔥. Nova inscrita!!!
Fala Samuel. Não tenho de propósito 😇. Para um produto de uma pessoa só acho "too much". Trato minha pipeline como meu ambiente de QA rsrs. Falei mais sobre isso nesse vídeo aqui caso não tenha visto. th-cam.com/video/6o2EUXlDNIg/w-d-xo.html
Cara, no minuto 9:00 você fala de uma action que checa o que foi modificado nos commits, por favor, me fala qual é!!!!!!!!! No trabalho desenvolvi um script em bash pra poder retornar o que foi modificado, uma dor de cabeça, tive que usar o HEAD e deslocar N commits feitos caso fosse uma PR e caso o commit fosse algo diferente de um commit tive que ver quais outros foram de um mesmo push
Nao previne exatamente porque os testes rodam no seu próprio banco de dados e nesse caso o banco de dados dos testes estava ok mas o de produção não estava, não havia bug nesse cenário e os testes que existiam até passavam. Pra pegar exatamente esse cenário eu teria que rodar testes automatizados contra produção, existem empresas que fazem isso, é uma técnica, mas pra mim ainda não vale a pena.
Pelo que eu entendi, você usa um serviço de autenticação e outro de banco de dados, na minha humilde opinião, mudaria pra um que já faça tudo, no meu caso estou aprendendo o Firebase e no futuro pretendo estudar outros como Supabase, que permite instalar no seu próprio servidor.
Não tenho uma necessidade clara pra fazer isso. Mesmo eu podendo instalar eu mesmo, hoje eu pago por serviços rodando num modelo meio heroku. Isso iria aumentar meu custo.
@@Filhodanuvem Talvez eu não tenha me expressado bem, não é sobre o que gostamos ou queremos hoje, mas sobre ter a possibilidade de faze-lo amanhã, firebase não permite rodar no seu próprio servidor, mas como é mais fácil, estou usando ele HOJE, por facilidade e custos, mas pretendo estudar o supabase pra ter uma saída backup, ficar 100% na mão de bigtech é complicado, pelo menos assim terei como fazer por conta própria caso aconteça algo.
Obrigado pelo vídeo! Mas tenho uma dúvida, aqui 7:40 , você mostrou sua tabela e dados dos usuários, até mesmo número de telefone. Isso pode gerar problema pra você não mano? Abraço!
parabens pelo videoo! caraaa... é incrivel isso ahahahahah roda em tudo, mas em PRD quebra, cai... oakeroKEA eu acho isso fantastico. e sim... a pipe ta ok e ai? kkkkkkkkkkkkkk meu jesus! parabens pelo Conteudo! posta mais videos assim! akoerkAOERKOAEKRO espero que nao de mais erros em PRD mas se der.... ja to com a pipoca preparada kkkkkkk
Eu não suprimi o erro porque sou contra a isso mas no fim das contas deu no mesmo, eu peguei o err e esqueci de checar, e logo abaixo eu sobre escrevi ele , então o go não disse “variável declarada e não usada” . É nessa linha que tu falou mesmo hahaah.
não tem coisa pior que resolver algo critico com alguem perto só olhando. Você já está nervoso, já uma situação tensa, você tá no seu maximo de senso de urgência, alguém ali só aumenta a chance de erro.
hahaha. Nesse projeto estou usando um "framework" que eu mesmo criei chamado envless, quanto menos ambientes, melhor. Falei um pouco sobre isso nesse vídeo th-cam.com/video/6o2EUXlDNIg/w-d-xo.htmlsi=B-z3aOzyTsyvmOeD Mas basicamente, ter mais um ambiente num projeto de uma pessoa só aumenta a complexidade num nivel que não se justifica. Imagina eu testar local, testar na pipeline, fazer deploy pra staging, testar em staging para ai entao subir pra prod. Por enquanto é uma start up que eu rodo no tempo livre, preciso "me mover rápido e quebrar coisas".
Cara. Seu conteúdo é uma dos melhore no YT. Parabéns!!!
Valeuu mano, que bom que você tá curtindo
Traz mais essas TRETAS! Gosto demais de saber das histórias de terror que os desenvolvedores passam por aí 😂
hahaha que bom que curtiu felipe, vou tentar trazer mais.
Essa série de build in public tá maravilhosa. Continue aí com essa ideia!
Valeuu
Essa saga já está virando minha série do ano! Paraabéns pela resolução dessa TRETA, você é um grande profissional e também um TH-camr que conquista a atenção do início ao fim.
Valeu demais mano! Estou curtindo muito fazer esses vídeos e esse apoio me dá força pros próximos.
Adoro ver TRETAS!
Cara muito bom ver a sua linha de raciocínio para resolver um incidente, amei esse vídeo rsrs quando você foi falando o que estava acontecendo eu fui imaginando por onde começaria a procurar, concluo que primeiro começaria a chorar de desespero só da pipeline estar toda ok, na sua maquina e prod não 😂
Parabéns pelo vídeo mandou muitoooooooo!
😂 valeuuuu Laís! Que bom que curtiu, sem esse vídeo não dá pra saber se sigo nessa linha ou não. Vou tentar encontrar outros casos pra contar, vai dar mais trabalho porque preciso criar o cenário da empresa (meio fictício) antes mas acho que fica legal, vamos ver.
Você é um ótimo contador de história. Fiquei fixado na narrativa do início ao fim. 😂
Se for assim, quero mais TRETAS
Opa, valeu demais! Tô me esforçando na contração de história 🙂
Graças a vc estou com uma TRETA a menos em produção, depois do vídeo fui verificar e constatei que poderia ocorrer o mesmo incidente, muito obrigado pela dica, mostra mais desse tipo de conteúdo, pode trazer alguns insights valiosos pra quem tá começando
nossa! Que coincidência. Que bom que ajudou Ronaldo.
Já estou rabiscando o roteiro pra próxima treta.
Acho top demais vídeos assim, é legal ver o mundo real e saber que bugs assim são muito comuns no dia a dia! 🙌
Valeu pelo feedback Rodrigo
Cara, acho que esse é o tipo de conteúdo que mais falta para os DEVs. Faça mais vídeos desse tipo! Vale muito a pena saber dos problemas e o desenrolar para resolução. Gostei bastante! TRETAS!
Valeu William. Eu fico bastante de olho no que os produtores estão fazendo e honestamente não encontrei esse tipo de vídeo também não. Fico feliz que você goste, em breve em volto com mais tretas.
Mostra mais TRETAS! 🤣
hahahaha vou trazer mais, valeu
Siiiiim!!! 😂
Foi ótimo discutir o cenário, que evidentemente poderia ter ocorrido com qualquer pessoa ou organização e é um alerta para aqueles que desejam implementar técnicas de DevOps em processos de desenvolvimento de aplicativos.
Treta! Por favor faça mais vídeos como este.
Cara esse vídeo foi incrível. Toda a situação foi bem detalhada e pude sentir como se estivesse vendo esse erro na minha frente. Eu ainda não tive muitos incidentes com códigos em produção. Pois foram poucos os projetos realmente complexos que fiz. Mas tenho certeza que depois desse vídeo vou ter uma noção melhor de como resolve-los.
Que legal que você gosta e esses vídeos te ajudam. Vou trazer mais em breve
Mano, que TRETA. E que lição. Isso não tem em bootcamp. Obrigado pela aula!
😌 pior que é verdade. Valeu cosmo.
Ótimo exemplo de tratamento de incidente! Trabalhei durante anos nessa área e fico feliz de ver esse tipo de vídeo explicando como funciona a análise e tratamento de incidentes. Muito legal, parabéns!
Valeu Leandro. Espero que ajude pessoas novas a área a terem uma noção de que esse tipo de coisa existe.
muito bom!!!! sou estudante na programação...entendi alguma coisa? muito pouco. Mas vc abriu um leque de raciocinio e perguntas que talvez seja de muita importancia. ótimo conteúdo 👏👏
Legal que mesmo não entendendo muita coisa você se interessou. Pode ter certeza que mais importante que entender tudo é perceber que existe uma linha de raciocínio e uma técnica pra encontrar o problema.
TOp demais o video haha
Atualmente trabalho em uma multinacional no time que mantêm o sistema legado, e as "ambulâncias" ( bugs criticos ) são frequentes e isso me deixava muito frustrado, felizmente com o tempo fui criando "casca" e sabendo lidar melhor com essas coisas, e é engraçado que no dia-a-dia de um sistema legado, esquecemos que até sistemas novos, com novas tecnologias sofrem com essas "ambulâncias", não é tudo mil maravilhas haha
Haha valeu cara. Se o software está tendo problema quer dizer que ele tá rodando e entregando valor rsrs
pode crer eu também vira e mexe tenho que resolver uma TRETA em produção. e é sempre assim. passa por todos os testes. passa por todos os ambientes. a TRETA só aparece na produção. e é isso mesmo, o lance é ter calma e encontrar a causa raiz. curti.
É bem assim mesmo mano, valeu
Essas tretas são muito comuns pra quem mexe com backend. Muito obrigado por compartilhar.
Hehe imagino que o frontend também tem várias tretas, talvez até mais difícil de investigar.
Bem legal este conteúdo Treta, é bom ver exemplos de linha de raciocínio nesses momentos críticos, parabéns pelo conteúdo!
Valeu irmão, que bom que curtiu
Ótimo case de TRETA, as marcações de tempo ajudaram a trazer o suspense rs
Hahaha boa
Mutio top!!! curti o vídeo, tem dias que incidente vem de rodo, haja estômago para tratar cada um.
ja trabalhei em lugares que com dias assim mesmo hahaha, pior que um dia cheio de incidentes é um dia com um incidente só P1, aquela que derruba o sistema inteiro.
Essa TRETA foi boa. Obrigado por compartilhar. Acho que é a melhor forma de aprender. Nessa eu não caio mais hahahaha.
hahaha feliz em ajudar hahaha
Que aula! Parabéns pelo conteúdo!!
Ainda estou começando a engatinhar na área, e ver esse tipo de conteúdo, de situações reais, é muito enriquecedor. 👏👏👏
Boaaa Saulo, fico feliz demais em saber que tem uma galera começando na área assistindo esses vídeos. Quando eu comecei eu não fazia ideia de que incidentes, post mortem e essas coisas existiam.
Treta!!!
Muito bom acompanhar cada etapa de desenvolvimento desse produto.
Gosto muito como você aborda esses assuntos. Continue trazendo ótimos conteúdos assim, está sendo muito útil para mim ❤.
❤️ Valeu grande Miguel.
Cara que TRETA kķk, parabéns por conseguir resolver rápido. E obrigado de mostrar a realidade
Hahaah valeu Carlos.
Obrigada por compartilhar Tretas, assim aprendemos também.❤
Que bom que conteúdo ajuda Adriana. Valeu por comentar 🙏
Muito bom conteúdo, baita aprendizado que as vezes só em produção mesmo que se encontra. TRETA
deixar a bomba em produção pra tentar encontrar o problema é daquelas coisas que precisamos coragem para fazer haha.
Parabéns pelo vídeo e todos os outros conteúdos, e o jeito como é relatado o problema deixa até mas divertido de acompanhar, pelo menos para quem está assistindo haha
Que bom que curtiu e foi divertido Carlos. Se o conteúdo consegue agregar e entreter, é o melhor dos mundos 😉
Treta demais! Realmente post mortem são um saco... Vale a pena mencionar que durante o incidente são criadas salas de War Room para envolver todas as pessoas que são afetadas e quem está solucionando, é um baita estress.
bom ponto cara. Taí algo pior que um post mortem ein hahaha. Já trabalhei em empresa que War Room era praticamente "hoje não sei que hora vou embora".
Já dizia um velho sábio, ninguem tropeça em montanha. Bugs em produção são desesperadores, mas é parte fundamental para forjar bons programadores.
nossa muito boa esse dito ai, nunca tinha ouvido. Valeu Rafael.
E que treta!!!! O legal é que, como tem domínio do ambiente, você soube direcionar tudo corretamente. Imagine se isso acontecesse com você após ter chegado na empresa a um mês somente e não tiver a quem recorrer? Aí passa a ser um desastre, não uma treta. Ficou legal sua explicação.
seria terrivel ein. Mas ai teria um problema de organização ai, não dá pra esperar que uma pessoa recem chegada num contexto seja capaz de se desenrolar assim, mesmo sênior... mas ... a realidade é dura as vezes.
Valeu Evandro!
Caramba, que TRETA! Ainda bem que deu tudo certo no final!
Valeu Daniel (e bem vindo, acho que tu chegou no canal faz pouco tempo).
Gostei do video, esses tipos de TRETAS causam um grande aprendizado pra nós devs!!
valeu Tiago, que bom que curtiu
Muito bom! É sempre divertido ouvir histórias de bugs reais em produção. 😆
treta nos sistemas dos outros é refresco hahahaha brincadeira. Valeu mano.
Muito show! Olha o cenário! Hehehe
Esses dias recebi um e-mail da Hotmart falando que minha assinatura estava em atraso ! Porém assinei dia 06/11 e paguei no crédito.
Antes tinha pedido para pagar no PIX... Gerou QR code e tal porém voltei atrás e paguei no cartão de crédito.
Eles disseram que uma assinatura que você não fez estava atrasada? 🤔 poxa hotmart haha
@@Filhodanuvem foi algo nesse sentido.
rsrsrs muito estranho.
foi como se eles tivessem dois meios de pagamentos atrelados a assinatura para um unico email .
eu paguei e deu tudo certo com cartao de credito porem a outra forma de pagamento com PIX não deu certo. Dai eles entenderam que estava em atraso e enviaram um e-mail cobrando kkkkkk
A plataforma ficou muito show! ate parece que foi feita com Java ! kkkkkk Zuera
Exelente!
Top demais você passar a real de problemas em produção rs
A saga da caça ao bug em produção é sempre interessante de ouvir!
Heheh valeu irmão
Aprendi demais com esse vídeo! Massa ficar mais por dentro de alguns bugs que podem ocorrer no nosso dia-a-dia como desenvolvedor.
que ótimo que conseguiu aprender Felipe, tamo junto.
Opa!
Compartilha mais casos de #TRETA com a gente, é bom que nos conforta em saber que o mundão não gira, mas capota pra todo mundo rsrsrsrsrs
Por sinal, em um futuro distópico, acha que rolaria botar desafios de xabus como esse que você resolveu?
...resolver xabus dealgo que já está no ar, costuma ser ainda mais desafiador do que criar coisas do zero
COM CERTEZA! Planejo criar desafios de resolver bugs e também desenvolver features numa base de código já existente. Concordo completamente com você que muitos dos desafios do dia a dia são sobre lidar com código dos outros.
To curtindo demais esse formato de video Claudson, posso estar errado, mas você e o primeiro canal que vejo que esta literalmente dissecando uma app (inclusive a sua propria kk) profundamente, conteúdo foda!! sucesso no devgym!!! 🫶
valeu mano! Já estamos quase no fim do ano e acho que deu pra compartilhar bastante coisa com o projeto. Já valeu a pena por esse lado.
Essa treta foi muito boa! Gostei muito do seu relato e identifiquei bastante com algumas situações que ocorrem na empresa onde eu trabalho. É legal saber que ta todo mundo tendo que lidar com bugs no dia a dia também kkkkkk
Hahahaha uma coisa que aprendi é que quanto menos mudamos um software menos bugs eles tem. Já trabalhei em lugares que fizeram deploy freeze em fim de ano. O programa funcionava perfeitamente bem, sem problemas haha
Massa demais! Aprendendo na prática
Opa, que bom que deu pra aprender alguma coisa
mais um vídeo incrível.
Filho, pode me dizer oq tu usa pra fazer essas edições legais com o mouse e tal? dá pra ver que é bem fluído(como aquelas funções de lerp/slerp kk) e tem até uma animação de click. Acho sensacional tuas edições
Valeuu! Parte dos créditos é da equipe do www.screen.studio/ que criou essa ferramenta de gravação de tela com animação, fica bem legal. A outra parte dos créditos é minha mesmo porque fica bem mais complexo fazer um trecho diferente pra cada parte da historia que preciso contar haha, e o controle de zoom também é meio que manual hehe. Mas que bom que tem gostado :)
muito top! Valeu, @@Filhodanuvem
É muita TRETA! Na minha opinião, uma das piores coisas de erro é quando a mensagem de erro mostra o problema no lugar errado. A maior parte do tempo do incidente é gasto investigando uma feature que tem 3 anos que não vê uma mudança (e por isso, tá mal documentada) e nunca deu erro (e por isso ficou pra depois a refatoração).
Até você descobrir que está cavando o poço no lugar errado...
Puts isso é terrível mesmo. Já passei por vários incidentes que era isso, quando encontramos o problema real é até fácil de resolver.
Excelente vídeo! Eu curto muito ver como você aborda um problema. Outro nível! :)
Curiosidade, depois desse incidente você adotou algum tipo de regression test pra garantir que essas funcionalidades principais não estão quebradas?
valeuuu mano! Eu tenho testes nesse sentido, o problema é que eles rodam contra um banco local de docker-compose. O bug era mais na pipeline que na aplicação penso eu e para evitar esse tipo de problema eu teria que rodar testes em produção, o que tenho visto como solução em algumas empresas, talvez smoke tests, que não interferem muito a a plataforma nem geram muitos dados.
@@Filhodanuvem pode crer. É, como não tem um ambiente de staging, tem que ser em prod mesmo. Muito bom o vídeo, como sempre. Aprendo muito!
consegue compartilhar as actions da devgym ?
seria muito bacana aprender como montar um pipeline de ci/cd como você.
Cara, posso compartilhar mas vai ficar faltando bastante contexto, porque as vezes uso make pra encapsular uma coisa aqui e ali, mas se tu quiser posso mandar aqui mesmo assim.
Muito bom, parabéns pelo conteúdo de qualidade! (Treta)
Valeuuu
#pqp mano kkkk. Que treta ein. Pior que é verdade esses erros que "nao prevemos" é complicado.
Pois é, a realidade é diferente da teoria rsrs. Valeu mano
Muito show esse vídeo! parabéns.
Valeu Luiz
O que ajudaria nesses casos é o backend gerar logs completos, informando vários dados para contextualizar a situação (data e hora, URL, requestId, trace do erro, etc).
Dessa forma, ao identificar um log de erro, vc pegaria o identificador único da request e faria a busca dos logs associados a esse identificador. Nesse caso vc teria o log do erro da consulta e o log do erro no insert, permitindo identificar o problema de forma mais rápida.
Outra melhoria seria implementar testes com o Cypress, testando o fluxo de login e pagamento, que acredito ser os dois pontos críticos da sua aplicação.
Obviamente essas melhorias demandariam tempo, e cabe o Dev avaliar a necessidade desse esforço ou não
Valeu pelas adições. Tem toda a razão sobre a melhoria dos logs. O Cypress nesse caso não ajudaria muito nesse caso, até porque os testes estão lá mas como eles usam uma versão da aplicação e banco diferentes dos de produção, ainda há essa brecha de erro.
Além disso, os testes de autentição com cypress não são muito fáceis de fazer, comentei disso nesse video aqui th-cam.com/video/3ou8OHieCNY/w-d-xo.htmlsi=FIUF3qzv4vjcyFXs
Depois me diz se tem alguma sugestão pra fazer by pass dos problemas.
@@Filhodanuvem a minha sugestão do Cypress, foi executa-lo diretamente em produção.
Você criaria uma conta de teste na sua aplicação em produção, e usa as credenciais dela para realizar o teste com o Cypress.
Esse teste deveria rodar após o deploy em prod, mas garantindo que esteja testando na nova versão. Outra opção seria usar alguma funcionalidade para agendar esse teste para ser executado a cada X horas.
Sobre o teste de pagamento diretamente em PROD complicou pelo fato da Hotmart não ter cartão de teste, então o teste acabaria sendo limitado.
Que massa, cada bug têm uma boa história...
Verdade, alguns bugs acabam marcando nossa história
Uma aula para nos iniciantes. Valeu
Valeuu Silas
Aguardando o video de marketing. Conteudo top como sempre!!
vem aiiiii (marketeiro aquecendo publico mode off)
TRETA! muito legal seu vídeo.
Valeuuu
esperando ver mais TRETAS logo logo 😅
Hahahaha valeu Marcos Henrique. Que bom que está curtindo (e voltando com seu canal)
Pra que fazer verificação de quando rodar a migration? AS migrations rodadas não deveriam ser registradas no banco. Se executar o comando de migrations, antigas migrations não vão ser executadas novamentes.
Para por exemplo reduzir o tempo da pipeline. E eu também queria reduzir o número de interações de rede entre o GitHub e o banco por questão de segurança, ainda vou voltar a trabalhar nisso.
Já tive problemas com migrations tb hahaha, amo essas tretas
quem nunca neh Luis haha
nesses momentos de bug (TRETA) ou falta de conhecimento mesmo, voce costuma consultar alguém ou uma comunidade especifica ? como você faz?
Boa pergunta Talis. Tudo depende da situação, não dá pra expor detalhes de problemas e implementação pra fora de empresas, então nunca vou em pessoas da comunidade para problemas que eu preciso passar o contexto da empresa/solução antes de falar da treta.
Para incidentes assim a estratégia é sempre olhar pro histórico de mudanças recentes pra entender se o problema é novo ou não, se reverter for uma opção obvia e sem riscos, é melhor fazer. Se nao for uma opção, é tentar entender o problema e debugar, os calos da vida deixam a pessoa mais experiente naturalmente mas em tese é tentar reproduzir o problema, criar uma hipotese do por que ele acontece, testar e ver se a hipotese se confirma, repetir isso varias vezes até a hipotese ser verdadeira (bem na linha do video).
Ter ajuda de alguem trabalhando em paralelo em outras hipoteses tambem ajuda, buscar por conversas antigas no slack e documentação em geral que possa indicar que a treta já aconteceu no passado pode indicar alguem com experiência nesse tipo de problema. Não tem problema pedir ajuda, só é bom pedir ajuda depois de tentar algumas coisas. De novo tudo depende da gravidade do problema. Quando o problema é muito grave, provavelmente vai aparecer muita gente pra ajudar ou investigando ao mesmo tempo.
Conta as TRETAS Claudson!
Já já vem mais Thiagao hehe
treta !!
Conteúdo muuuito bom, depois se puder grava um video como podemos ter uma aproximação de gastos de infra ao fazer uma plataforma assim, tipo gasto com banco de dados, gasto com servico de deploy, gastos com domínio e por ai vai =)
Conteúdo muito bom !!!
Opa! Fica ligado, estamos em novembro e até o fim do ano vou trazer um vídeo com todos os gastos desse ano.
@@Filhodanuvem topper, no aguardo filho da nuvem !!!
Incrivel esse video sobre post mortem, pq decidiu usar essas filtragens no git actions? Quanto tempo demorava antes dessa melhoria?
Decidi usar pra reduzir o tempo da pipeline e reduzir a interação do GitHub com o banco de produção.
Em questão de tempo poupava 1 ou 2 minutos. Pra uma pipeline que leva uns 15 até que é um tempo considerável mas nada que me tire o sono. A questão da interação me preocupa mais.
traz mais TRETAS, por favor haha
Pode deixar
Bom video, heim mano! Essas são as tretas reais do dia a dia.
O que você identifica como a causa raiz?
Eu penso que o principal seja a falta de pensar em YAGNI.
A pipeline ja estava lenta? Era realmente necessário um aprimoramento dela pensando em performance?
Se não, faz sentido, né?
Mas é isso. Esse falha te obrigou a revisar a sua jornada de auth. Sempre tem um ganho, até nas buchas. 😂😂😂😂
é dificil falar de todas as motivações nos vídeos mas além da velocidade na pipeline, eu queria reduzir a interação no banco de produção através da pipeline. Para mim, isso é uma brecha de segurança.
Se fizermos o exercício de 5 whys, eu diria:
1) Por quê o incidente aconteceu?
Porque uma coluna da tarefa x deveria estar em produção e não estava.
2) Por quê a coluna não estava lá?
Porque as migrations não rodaram.
3) Por quê as migrations não rodaram?
Porque uma action fez skip do job.
4) Por quê?
Porque implementamos o skip pra reduzir o número de interação github - banco.
5) Por quê?
Porque isso é considerado pela gente como uma brecha de segurança.
A brecha de segurança é o root cause e o uso errado da action também faz parte da causa raiz. Numa equipe maior, ou quando a devgym crescer, iria sugerir trabalharmos em como resolver as migrations sem roda-las a partir da pipeline, há estrategias pra rodar as migrations no proprio binario go assim que ele sobe e nos ultimos meses o cockroach também lançou uma feature de migrações. As tarefas (que são action points) iriam ser sobre pesquisar essas alternativas e levar a discussão pro time pra decidir quais delas usar.
Tretaaa! Hahahahaha
Fiquei curioso para saber como resolveu o problema da migration?
Hahahaa depende qual dos problemas. A questão da velocidade na pipeline nao resolvi. Era mais um quick win pra mim que um grande problema.
Hahaha algumas decisões precisam ser tomadas de maneira rapida.
A dúvida é sobre onde e quando rodar a migration do banco. Qual abordagem adotou?
Treta! Já tive que trabalhar um fds quase inteiro pq o sistema que trabalhava não disparou os emails por um chave primaria duplicada.
Nossa! Treta no fim de semana ninguém merece.
Amo os relatos aqui, passo por problemas assim direto kkkkk
Ainda mais que tenho que coordenar juniors e eles não possuem tantas habilidades pra achar os problemas
treta
complicado, é muito dificil resolver uma situação crítica assim e ainda tentar compartilhar o processo com outra pessoa.
Que treta, pode trazer mais
TRETAAA! Agr a questão é a seguinte... conseguiu jogar o jogo do miranha? Kkkkkkk Amei esse vídeo seu, bem diferente! Faz mais vídeos desse tipo 🔥. Nova inscrita!!!
Hahahahaha terminei o jogo essa semana. Maravilhoso haha. Valeu pela sugestão e bem vinda Ada.
Show de bola
Valeuu
Excelente conteúdo
Muito obrigado
kkkk
Que sufoco ein.
Faz parte do aprendizado.
É isso aí!
mestre, voce nao tem um ambiente de QA nao? seria uma ja que tem menos recursos e de certa forma ta a copia de producao
Fala Samuel. Não tenho de propósito 😇. Para um produto de uma pessoa só acho "too much". Trato minha pipeline como meu ambiente de QA rsrs.
Falei mais sobre isso nesse vídeo aqui caso não tenha visto.
th-cam.com/video/6o2EUXlDNIg/w-d-xo.html
Essa é a vida de programador kkkkk, seus vídeos são muito bons
hahahah pois é mesmo. Valeu Eliezer.
Cara, no minuto 9:00 você fala de uma action que checa o que foi modificado nos commits, por favor, me fala qual é!!!!!!!!! No trabalho desenvolvi um script em bash pra poder retornar o que foi modificado, uma dor de cabeça, tive que usar o HEAD e deslocar N commits feitos caso fosse uma PR e caso o commit fosse algo diferente de um commit tive que ver quais outros foram de um mesmo push
Ai meu Deus, eu voltei no trecho e fui ler o workflow e vi o nome: dorny/paths-filter@v2, obrigado! Seu conteúdo é sensacional
é essa daqui dorny/paths-filter
teste de integração não previne esses erros?
Nao previne exatamente porque os testes rodam no seu próprio banco de dados e nesse caso o banco de dados dos testes estava ok mas o de produção não estava, não havia bug nesse cenário e os testes que existiam até passavam.
Pra pegar exatamente esse cenário eu teria que rodar testes automatizados contra produção, existem empresas que fazem isso, é uma técnica, mas pra mim ainda não vale a pena.
Queremos ver mais TRETAS!! kkk
hahahaha boa!
Treetaaa... já passei por alguns bugs em produção muito sinistros...
Rsrs na hora é uma tensão forte
As tretas nunca tem fim
Hahaha nunca
Pelo que eu entendi, você usa um serviço de autenticação e outro de banco de dados, na minha humilde opinião, mudaria pra um que já faça tudo, no meu caso estou aprendendo o Firebase e no futuro pretendo estudar outros como Supabase, que permite instalar no seu próprio servidor.
Não tenho uma necessidade clara pra fazer isso. Mesmo eu podendo instalar eu mesmo, hoje eu pago por serviços rodando num modelo meio heroku. Isso iria aumentar meu custo.
@@Filhodanuvem Talvez eu não tenha me expressado bem, não é sobre o que gostamos ou queremos hoje, mas sobre ter a possibilidade de faze-lo amanhã, firebase não permite rodar no seu próprio servidor, mas como é mais fácil, estou usando ele HOJE, por facilidade e custos, mas pretendo estudar o supabase pra ter uma saída backup, ficar 100% na mão de bigtech é complicado, pelo menos assim terei como fazer por conta própria caso aconteça algo.
@sesinando ah ok. Me parece um bom plano, o importante é ter algo rodando a custo baixo, no meio do caminho sempre podemos mudar de ideia. Sucesso!
Obrigado pelo vídeo! Mas tenho uma dúvida, aqui 7:40 , você mostrou sua tabela e dados dos usuários, até mesmo número de telefone. Isso pode gerar problema pra você não mano? Abraço!
Se fossem dados reais gerariam sim, mas trata-se de um mock-up e serviu apenas para ilustrar o que ele estava falando no vídeo.
Isso mesmo que o ranyeryfx disse. Não é nem a minha tabela rsrs. Mas é um bom ponto, fazer esses vídeos tem um período de vazar dado sensível.
Que massa! Traz mais tretas ai
Opa, vou trazer
Conteúdo muito bom
valeu Rodrigo! Que bom que curtiu
O conteúdo do seu canal está muito bom. Me animei a estudar o golang
Boraaaa
TRETA!👍
valeu!
Mais tretas !!!ótimo vídeo vlwww
valeuuu
TRETA, Tenho todos os dias kkk. Ser DEV não é brincadeira.
ganhar 5k dolar por mês todo mundo quer, as tretas de madrugada ninguém vê.
parabens pelo videoo! caraaa... é incrivel isso ahahahahah roda em tudo, mas em PRD quebra, cai... oakeroKEA eu acho isso fantastico.
e sim... a pipe ta ok e ai? kkkkkkkkkkkkkk meu jesus!
parabens pelo Conteudo! posta mais videos assim! akoerkAOERKOAEKRO
espero que nao de mais erros em PRD mas se der.... ja to com a pipoca preparada kkkkkkk
treta! uEARhuAHERUERh
Hahahahaha pode deixar Cássio. Espero trazer outros vídeos, dessa vez com problemas de outras empresas (que vou precisar camuflar haha)
Treta!! E gente nervosa!
hahahahaha
Tretas esse foi o resumo do meu dia hoje kkkk
Hahaah poxa meus sentimentos, espero que tenha tudo se resolvido no fim
Deixa eu adivinhar:
user, _ := findUser()
if user == nil {
// create
Ignorou o erro?
Eu não suprimi o erro porque sou contra a isso mas no fim das contas deu no mesmo, eu peguei o err e esqueci de checar, e logo abaixo eu sobre escrevi ele , então o go não disse “variável declarada e não usada” . É nessa linha que tu falou mesmo hahaah.
Quem nunca passou por uma TRETA dessas,, kk, eu ja resolvi uns bugs de prod com o gerentao fungando no meu pescoço sentado na cadeira ao lado.. kk
não tem coisa pior que resolver algo critico com alguem perto só olhando. Você já está nervoso, já uma situação tensa, você tá no seu maximo de senso de urgência, alguém ali só aumenta a chance de erro.
Voce nao tinha logs ?
Tinha, a mensagem de alerta era a própria mensagem de log.
Treta!!!!
✔️
Tretaaa boa
Oq seria do Dev sem essas TRETAS pra gente resolver kkk
hahahaa o que vai ficar da nossa carreira são as histórias não é mesmo?
TRETA
Dúvida, por que não usar ambiente de testes? (seu PC não vale.... kkkkkkkkkk)
hahaha. Nesse projeto estou usando um "framework" que eu mesmo criei chamado envless, quanto menos ambientes, melhor. Falei um pouco sobre isso nesse vídeo
th-cam.com/video/6o2EUXlDNIg/w-d-xo.htmlsi=B-z3aOzyTsyvmOeD
Mas basicamente, ter mais um ambiente num projeto de uma pessoa só aumenta a complexidade num nivel que não se justifica. Imagina eu testar local, testar na pipeline, fazer deploy pra staging, testar em staging para ai entao subir pra prod. Por enquanto é uma start up que eu rodo no tempo livre, preciso "me mover rápido e quebrar coisas".
#treta das boas pra resolver! 😅
Hahaha o jeito é rir agora que passou
É aquele velho ditado, no meu local funciona! kk
Hahahahaha na minha máquina funciona. Quem nunca ?
mil TRETAS e mil trutas
hahahaha
TRETA