Depois de quase 7 meses sem postar nada por aqui, resolvi fazer uma grande mudança! Durante esse tempo, pensei muito sobre o que fazer com o blog. Como estava trabalhando como SRE, meu dia-a-dia era muito mais voltado a infraestrutura do que código Go em si.
Por um instante, pensei inclusive em fechar o blog. Mas sempre que pensava isso, como a vontade de compartilhar continua aqui, resolvi mante-lo aberto, porém sem postar nada.
Foi somente no início desse ano que decidi realmente o que fazer. Ao invés de fechar o blog, decidi torná-lo mais pessoal, por isso que a URL lá em cima não é mais aprendagolang.com.br.
Ainda continuarei compartilhando o sei e novidades que estarei aprendendo sobre Go, ainda mais agora que voltei a trabalhar como software engineer.
No entanto, utilizarei esse espaço para compartilhar muito mais. Só para vocês terem uma ideia do que vem por aí, nos últimos 18 meses trabalhei na implantação de um API Gateway (Apigee), nova geração de clusters Kubernetes e implementação de um multi-region ativo-ativo de ponta a ponta.
Em outras palavras, aprendi MUITA COISA, e vou utilizar esse espaço para compartilhar com vocês.
Sobre as assinaturas, quem tem uma assinatura ativa continuará tendo acesso aos conteúdos normalmente. No entanto, não será mais possível assinar nenhum plano.
Já sobre os cursos, quem adquiriu continuará com acesso normalmente, porém não os venderei mais também.
Isso por que desejo focar esse ano em melhorias na Imersão Aprenda Golang e em workshops ao vivo.
Durante as próximas semanas, muita novidade vai rolar por aqui, inclusive a volta do parcelamento da imersão e uma super promoção em comemoração do meu aniversário 😁.
Espero que compreendam e estejam juntos comigo nessa nova etapa do blog.
Até a próxima.
Faça parte da comunidade!
Receba os melhores conteúdos sobre Go, Kubernetes, arquitetura de software, Cloud e esteja sempre atualizado com as tendências e práticas do mercado.
Agente autônomos em Go
O termo “agente autônomo” vem ganhando destaque à medida que as necessidades de automação e inteligência se tornam cada vez mais complexas. Basicamente, um agente autônomo é um software projetado para tomar decisões — com ou sem intervenção humana direta — e executar ações de forma independente, reagindo a estímulos do ambiente ou a eventos pré-definidos. Esses agentes podem, por exemplo, monitorar dados em tempo real, interagir com APIs externas, escalar recursos de infraestrutura ou até mesmo negociar ativos em sistemas financeiros.
Mas por que isso é tão relevante hoje em dia? E, mais importante ainda, por que escolher a linguagem Go (Golang) para desenvolver agentes autônomos?
O que são Agentes Autônomos?
Um agente autônomo é um componente de software capaz de perceber seu ambiente, raciocinar sobre essas percepções e agir conforme objetivos definidos, sem depender de comandos manuais a cada nova interação.
Leia mais »
Conheça os packages slices e cmp
Com a evolução da linguagem Go, algumas tarefas antes repetitivas ou trabalhosas ganharam abstrações poderosas e idiomáticas. Os packages slices e cmp, adicionados oficialmente ao ecossistema da linguagem por meio do módulo golang.org/x/exp e posteriormente promovidos ao módulo padrão em versões mais recentes, são dois exemplos reais.
Neste post, vamos explorar como esses dois packages podem simplificar tarefas comuns como ordenações e comparações, trazendo clareza, concisão e segurança ao seu código.
O package slices
O package slices, inicialmente disponível em golang.org/x/exp/slices e depois promovido ao slices, fornece funções genéricas para manipulação de slices de forma mais expressiva e segura. Entre suas funcionalidades estão: busca, ordenação, filtro, comparação, cópia e mais.
Microserviços eficientes com Go
Microserviços têm se tornado uma das arquiteturas mais populares no desenvolvimento moderno de software, especialmente quando falamos em sistemas escaláveis e de alta performance.
Go se destaca nesse cenário devido à sua simplicidade, velocidade e suporte nativo à concorrência.
Neste post, elenquei uma lista com 10 dicas práticas para garantir uma aplicação eficiente, robusta e escalável.
O que são microserviços?
Microserviços são uma abordagem de desenvolvimento onde um sistema é dividido em pequenos serviços autônomos, cada um responsável por uma função específica.
Leia mais »
Como iterar um map de forma ordenada
Em Go, o tipo map é amplamente utilizado por sua eficiência em acessar valores rapidamente através de chaves. Porém, devido à natureza do tipo map, não há garantia alguma sobre a ordenação das chaves durante uma iteração. Isso pode se tornar um problema quando precisamos de uma ordem específica para nossas operações, como imprimir resultados ordenados ou realizar tarefas onde a ordem é significativa.
Neste post, veremos como o package slice do Go pode nos ajudar a resolver esse problema de forma simples e clara.
Como os map funcionam
Um map no Go é implementado como uma tabela hash, que garante eficiência no acesso a valores através das suas chaves. Porém, por conta dessa implementação, a ordem em que os elementos são retornados em uma iteração não é determinada. Cada iteração pode resultar em uma ordem diferente, e o compilador Go intencionalmente embaralha a ordem das chaves para prevenir que desenvolvedores dependam acidentalmente de uma ordem específica.
Testes automatizados com GitHub Actions
No desenvolvimento de software moderno, a automação é uma peça-chave para garantir qualidade, eficiência e entrega contínua de valor. Uma das etapas mais importantes do ciclo de vida de uma aplicação é a execução de testes. Quando combinamos testes automatizados com Integração Contínua (CI), conseguimos detectar problemas rapidamente e evitar que bugs cheguem à produção.
Neste post, exploraremos o conceito de CI, a importância de automatizar testes em projetos Go e como configurar um pipeline utilizando o GitHub Actions para executar testes de forma automatizada.
O que é CI?
Integração Contínua (Continuous Integration – CI) é uma prática de desenvolvimento de software que consiste em integrar o código desenvolvido por diferentes membros da equipe de forma contínua em um repositório central. Cada nova mudança no código é automaticamente testada e verificada por meio de pipelines de CI, garantindo que o software continue funcionando como esperado.
Leia mais »
Primeiros passos com framework Echo
O desenvolvimento de APIs em Go tem se tornado cada vez mais popular graças à simplicidade e eficiência que a linguagem oferece. Atualmente, existem diversos packages e frameworks que facilitam a construção de APIs robustas e performáticas.
Neste post, vamos explorar o que é o framework Echo, como ele se compara com outros packages e frameworks populares, e como implementar um CRUD completo utilizando essa poderosa ferramenta.
O que é o Echo Framework
Como o próprio nome já diz, Echo framework é um framework web extensível para a construção de APIs em Go. Criada com foco em simplicidade e eficiência, ele permite que desenvolvedores construam APIs RESTful de maneira rápida e com um código limpo.
Principais características do Echo
- Roteamento eficiente: O Echo utiliza um sistema de roteamento otimizado, permitindo que as requisições sejam tratadas com baixa latência.
- Suporte nativo a middleware: Echo facilita a criação e o uso de middlewares, como autenticação, logging e compressão de respostas.
- Manipulação de erros: O framework oferece um sistema simples e robusto para lidar com erros.
- Suporte a WebSocket: Echo também possui suporte integrado para WebSockets, permitindo aplicações em tempo real.
APIs de alta performance com Fiber
O desempenho é uma preocupação constante para desenvolvedores que trabalham com APIs. Em um mundo cada vez mais exigente, onde a latência pode definir o sucesso ou fracasso de uma aplicação, escolher o framework correto pode fazer toda a diferença.
Embora o package padrão net/http seja conhecido por sua performance e simplicidade, o framework Fiber consegue, em muito cenários, ir além, sendo uma alternativa promissora para construir APIs rápidas e eficientes.
Neste post, exploraremos como o Fiber pode melhorar o desempenho de suas APIs, faremos uma comparação com o go-chi e apresentaremos benchmarks para você tomar a melhor decisão para o seu projeto.
O que é o Fiber?
O Fiber é um framework web para Go, inspirado no popular framework Node.js, o Express. Ele se destaca por sua simplicidade, facilidade de uso e, principalmente, por seu foco em performance.
Leia mais »
Kubernetes para desenvolvedores: como configurar o kubectl
Se você está desenvolvendo aplicações que rodam em Kubernetes, saber como configurar o kubectl é uma habilidade essencial.
O kubectl é a principal ferramenta de linha de comando utilizada para interagir com clusters Kubernetes, permitindo que você execute comandos para gerenciar recursos, fazer deploys e depurar problemas.
Neste post, vamos explorar o que é o kubectl e como configurá-lo corretamente para que você possa otimizar sua produtividade como desenvolvedor. Além disso, traremos dicas e truques para facilitar seu dia a dia ao trabalhar com Kubernetes.
O que é o kubectl?
O kubectl é a CLI (Command-Line Interface) oficial do Kubernetes. Com ele, você pode se comunicar diretamente com o servidor da API do cluster Kubernetes para criar, atualizar, excluir e visualizar recursos.
Por que o package net/http é tão poderoso
Se você já desenvolveu uma aplicação web em Go, certamente se deparou com o pacote net/http. Desde sua introdução, ele tem sido um dos pacotes mais utilizados na linguagem Go, servindo como a base para servidores web, APIs e até clientes HTTP.
Apesar de sua simplicidade, o net/http é extremamente poderoso, oferecendo uma infraestrutura robusta e flexível para lidar com requisições e respostas HTTP.
Neste post, vamos explorar em detalhes o que é o net/http, por que ele é considerado tão poderoso e o que ainda falta para que ele se torne uma solução ainda mais completa.
O que é o package net/http
O pacote net/http faz parte dos packages padrões da linguagem Go e fornece as ferramentas necessárias para criar servidores HTTP, lidar com requisições e respostas, além de fazer chamadas HTTP como cliente.