Desenvolvimento de APIs em Go
Uma série de artigos concisos
Introdução
Go é uma linguagem de programação de código aberto criada pelo Google que pode ser utilizada em diversos cenários. Sua eficiência, desempenho e suporte nativo à concorrência a tornam uma escolha popular em diversos segmentos de desenvolvimento de software, inclusive para o objeto de estudo da série que estamos criando, que será de desenvolvimento de APIs.
Nessa série, serão abordados diversos assuntos, desde os mais básicos, como a criação de uma API simples e a sua dockerização, até assuntos mais complexos, como a configuração de telemetria, arquitetura, design, padrões de projeto, entre outros.
Os episódios irão focar em ser concisos (entre 3 e 10 minutos de leitura), permitindo abordar a maior quantidade possível de assuntos. Portanto, não se surpreenda ao encontrar alguns code smells ou soluções que não estejam na “melhor maneira possível”. Esses pontos foram deixados de propósito para serem tratados em futuros artigos dedicados a esses assuntos. (Uma boa desculpa, né? hehe)
Estrutura da Série
Cada artigo abordará um tópico específico do desenvolvimento de APIs, os temas serão progressivos, ou seja, cada episodio irá se basear nos conhecimentos abordados nos artigos anteriores, assim com o passar do tempo construiremos algo bem profissional. Os códigos correspondentes a cada episódio serão armazenados em branchs especificas no repositório johnfercher/medium.
No início de cada artigo, serão adicionados alguns links úteis. Um deles será para uma collection do Postman, permitindo a realização de chamadas à API. Outro link será para a branch do código relacionado àquele artigo em particular. Por fim, será incluído um último link para um Pull Request entre o artigo atual e o anterior, facilitando a identificação das mudanças realizadas naquele artigo.
Artigos da Série
Aqui está a lista de artigos publicados até o presente momento.
- Go + Chi: Criando uma API REST simples
- Go + Project Layout: Organizando a Casa
- Go + Docker: Dockerizando uma API
- Go + Repository + Command-Query Separation
- Go + MySQL: Docker-compose em ação
- Go + GORM: O melhor ORM de Go
- Go + Injeção de Dependência: Árvore de Dependências, Inversão de Controle e Raiz de Composição
- Go + Testes Unitários: Libs, Nomenclaturas, Padrão AAA, Wrappers e Organização
- Go + Integração Contínua: Github Actions, Golangci-lint e Codecov
- Go + Observabilidade: Métricas com o Prometheus
- Grafana + Prometheus: Visualizando as Métricas de Nossa API
- Domain-Driven Design (Parte I) — Subdomínios, Linguagem Ubíqua e Modelo de Domínio
- Go + Arquitetura Hexagonal — Isolando o domínio e outras coisas mais
- Go + Architecture Linter — Mantendo a arquitetura
- Go + gRPC — Utilizando protobuf
- gRPC + Prometheus — Métricas no Grafana com interceptors
- Go + Neo4j — Modelando o Brasil em Grafos
- Neo4j + GDS — Encontrando caminhos mais rápidos e mais baratos