Quantas informações em menos de 30 minutos 😮. Esse vídeo vale ouro. Gostei demais em ver como você organizou o projeto. Parabéns e muito obrigado pela atenção em responder a minha dúvida. Superou as expectativas 😊
Se pudesse, curtia duas vezes! Excelente vídeo! Por favor, continue nos mostrando "como é em produção" ou "na vida real". Isso ajuda muito para termos base o que podemos estudar, como ter mais produtividade, etc. Valeu!
Excelente vídeo muito bem explicado, informações preciosas que em muitos locais a gente só aprende através de cursos pagos e muitas vezes não chega aos pés desse vídeo
Opa, que bom que curtiu. Ainda pretendo fazer um vídeo só sobre docker, tô adiando isso há anos. Pra mim tem uma ou duas coisas que os iniciantes sempre erram com docker, que é fazer uma imagem que não é auto suficiente. Eu sempre errava isso também.
Eu uso o compileDaemon pra hot reload, acho mais simples. Só mando rodar o executável por ele no dockerfile de dev e tá pronto. Mas achei legal o air, vou experimentar.
Lidando com algumas stack diferentes, da ate vontade de chorar de tão complicado fazem algo q Golang eh tao simples. Queria me referir apenas ao ferramental, mas não ate mesmo nas escolhas da própria lang e frameworks... Eh simplesmente perfeita a lang e ecossistema perto de todas outras.
Hahaha eu tenho medo do dia que go perder popularidade e eu tiver que trabalhar com essas linguagens complexas cheia de funcionalidades, jeitos de se resolver a mesma coisa, gradle pra build, que compilar em linha de comando é quase um parto e é quase obrigatório usar uma IDE 🤣
Que conteúdo incrível, ainda não programo golang, mas pretendo começar esse ano, sem dúvidas você já tirou várias dúvidas que "eu do futuro iria ter :)
Óptimo vídeo Claudson, sempre a partilhar boas praticas! Fica aqui a sugestão para um futuro vídeo. Algo que geralmente acrescento ao meu ambiente local é um segundo container que corre os meus testes a cada mudança. É muito bom para praticar aquele padrão do Red Green Refactor do TDD/BDD. Aquele abraço!
Continua, conhecimento quanto mais melhor, acho que Go é muito bom, porém a stack é bem complicada de interagir, quanto mais vídeos simplificando, melhor
Obrigado Léo rsrs. Olha, talvez seja só minha vivência mesmo, não tive boas experiências com o viper, achei complexo pra algo que na verdade eu só queria pegar valores de variáveis de ambiente e no máximo checar uma coisa ou outra. Já a lib Cobra, do mesmo autor, sou muito fã.
Muito bom! Poderia trazer um vídeo pra gente falando um pouco mais de como você utiliza o migrate? Atualmente utilizo o Django que faz isso automaticamente, mas pelo pouco que vi sobre o migrate me parece ser manual.
Achei o Go amigável, estou pensando seriamente em estudar sobre a linguagem. Atualmente trabalho com logística e aqui em Portugal comecei a ver algumas vagas pra Go, oq me despertou o interesse kk.
Um dias desses vi um ranking de linguagens populares em Portugal e achei go até bem colocado, atrás das mais antigas mas bem colocado. Go é sucesso haha. Eu já vi um e outro vídeo do curso da Ellen e acho que é uma boa porta de entrada sim.
Muito massa o vídeo, eu adoro o docker compose, maravilhoso para projeto simples. Uma pergunta a você que é dev PHP e GoLang, qual é o preço de manter uma aplicação simples com docker em GoLang. Me falaram que 200 reais por ano daria conta para Php, mas eu sei que GoLang vai ser mais caro.
Fala Kevin, um pouco complexa essa pergunta, tem muitas formas de colocar aplicação em produção, com preços bem diferentes. Uma digital ocean da vida é uns 5 dolares por mês no plano mais barato, na render estou pagando 7 dolares.
@@Filhodanuvem entendi, bem razoável então. Eu estava pensando em fazer em GoLang, porque eu acho essa parte de concorrência do Go linda e também não tenho muita experiência, então um projeto em Go pode dar um upzinho no currículo. Obrigado pela resposta
Eu só uso debug quando vou escrever testes, então a configuração não fica no repositório. Eu instalei o delve e quando rodo os testes a partir do vscode, ele se conecta com o delve e faz debugging. Focando nos testes não tem muito porque eu ter que debugar a aplicação toda, e configurar isso com o docker.
Muito boa todas explicações, parabéns. Uma dúvida, o migrate do Go é semelhante ao do Python? Você escreve os models e abstrai o banco com um ORM q gera os migrates?
Fala Gustavo, a tool que eu uso é essa daqui github.com/golang-migrate/migrate e pelo menos no meu uso, ela não se liga a nenhum orm, então eu crio os arquivos sql manualmente. Também não uso nenhum orm senão poderia procurar uma mais parecida com o que você disse.
@@Filhodanuvem Entendi, então neste caso você modela o banco de dados manualmente e o pkg migrate apenas faz o gerenciamento disto para versionar e rodar as atualizações no ambiente produtivo ou remake localmente? Outra dúvida, como você gerencia um migrate indesejado, por exemplo um rollback de um migrate que não deu certo ou q você queira voltar?
Suas migrations tem inserção de dados diretamente? Como você lidaria se quisesse manter alguns dados locais para não ter que se repetir a ação de inserir manualmente para conseguir testar? Tenho a sensação que em alguns casos principalmente pensando que a CI roda as migrations, que as migrations não deveriam possuir inserções em tabelas do banco, e numa estrutura onde o banco começa a existir no run da aplicação, dados de teste precisam ser inseridos todas as vezes. Acho que criar algum mapeamento de porta para um banco na minha máquina é uma boa pedida, mas queria tua opinião aqui.
É um dúvida e questionamento muito válido. Minhas migrations inserem dados sim, as operações de inserção não são muito frequentes já que elas acontecem somente quando lanço um novo desafio na plataforma. Mas você tem razão, eu sofro com a questão de “se repetir”. O caso mais frequente de eu precisar mudar um dado somente em local é forçar um usuário a ser pro/pagante nesse ambiente. Criei um comando make pra agilizar o processo mas tem abertura pra automatizar de alguma forma. Já pensei em fazer algum seed ou série de execuções que rodam depois das migrations somente pra local/CI mas ainda não parei pra investir nisso. De certa forma, como eu tenho essa dor pra inserir dados em ci isso acaba me forçando a escrever testes que precisam navegar pelo sistema pra eu conseguir criar o cenário que eu quero testar. É ruim, aumenta o tempo de execução de testes mas tem seu lado bom, já que como o projeto nao tem uma equipe com várias pessoas lidando com ele o tempo todo, ter mais testes e mais chance de encontrar erros se torna mais vantajoso.
Estava revendo o vídeo para entender a aplicação do docker-compose e percebi que o air e o app tem o mesmo container name e ports. Isso não gera erro? Tentei rodar aqui e sempre dá erro
Ótimo ponto! Eles conflitam sim se você rodar os dois ao mesmo tempo, se fizer “docker compose up” sem especificar o air, ele vai subir todos os services. Por isso que no vídeo eu falei “docker-compose up app” ou “docker-compose up air” por que ali vai subir o que está especificado e suas dependências apenas.
Não tem nenhum motivo técnico, acho que peguei o docker-compose de outro projeto que tinha (provavelmente de uma época que não existia healthcheck) e nem pensei em reescrever 😅
@@Filhodanuvem dahora, estou provando o air em um docker como você fez, porém após iniciar um versionamento no projeto estou tomando este erro: error obtaining VCS status: exit status 128 Use -buildvcs=false to disable VCS stamping. Porém se eu passo esse comando via command, ele não reconhece
Tem algum link pro docker-compose pra eu dar uma olhada? Já tive problemas com a versão do air versus a versão do go que eu precisava pro projeto (definido no go.mod) mas não lembro exatamente a mensagem de erro.
Quando você diz web quer dizer sites como e-commerce ? o tooling do go é bem simples, pra serviços web pequenos, apis por exemplo ele brilha muito. Pra sites como eu tô fazendo, sinto falta de algumas coisas mais poderosas (template engine melhor por exemplo) mas como gopher também não curto muito frameworks muito grandes, então da pra atender a proposta em go sim. Não entendi a questão do real-time, me dá um exemplo?
Entendi. Não, o go não faz isso. O angular é uma biblioteca majoritariamente frontend que lida com estado de aplicação no lado do navegador. O go é focado em backend, nada impede a gente a fazer o go entregar páginas html que é o caso da Devgym, mas depois de entregar o html aí já não estamos mais falando de go, estamos falando de tecnologias de frontend, JavaScript (que até poderia ter angula no meio), css…