Desenvolvimento de APIs em Go

Uma série de artigos concisos

John Fercher
2 min readJun 19, 2023

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.

  1. Go + Chi: Criando uma API REST simples
  2. Go + Project Layout: Organizando a Casa
  3. Go + Docker: Dockerizando uma API
  4. Go + Repository + Command-Query Separation
  5. Go + MySQL: Docker-compose em ação
  6. Go + GORM: O melhor ORM de Go
  7. Go + Injeção de Dependência: Árvore de Dependências, Inversão de Controle e Raiz de Composição
  8. Go + Testes Unitários: Libs, Nomenclaturas, Padrão AAA, Wrappers e Organização
  9. Go + Integração Contínua: Github Actions, Golangci-lint e Codecov
  10. Go + Observabilidade: Métricas com o Prometheus
  11. Grafana + Prometheus: Visualizando as Métricas de Nossa API
  12. Domain-Driven Design (Parte I) — Subdomínios, Linguagem Ubíqua e Modelo de Domínio
  13. Go + Arquitetura Hexagonal — Isolando o domínio e outras coisas mais
  14. Go + Architecture Linter — Mantendo a arquitetura
  15. Go + gRPC — Utilizando protobuf
  16. gRPC + Prometheus — Métricas no Grafana com interceptors
  17. Go + Neo4j — Modelando o Brasil em Grafos
  18. Neo4j + GDS — Encontrando caminhos mais rápidos e mais baratos

--

--

John Fercher

Tech lead at @MercadoLibre, gamer, master of science and open source contributor. More about: johnfercher.com