Lessons Learned: Devendorize and Modularize a Go Project

defer Conclusions() This week I’ve been working on remove all the vendors of a massive Go project and make it use Go modules. It’s not an easy task considering that it depends of almost 400 packages, many of such packages with different versions and using packages from Terraform and Kubernetes that are also massive consumers of external packages and provides a large amount of them. Here are my lessons learned in the process of devendorize and modularize a Go project.

Introduction to Microservices in Go, part 1

This is a very simple example about how to build a microservice in Go. It’s meant for a quick Go and Microservices tutorial series covering from the a RESTful API to gRPC on Kubernetes. The purpose of this microservice is a catalog of movies. The code is at https://github.com/johandry/micro-media-service and every section is a branch, clone the repo and change branch for every section. git clone https://github.com/johandry/micro-media-service A simple RESTful API Let’s start with a simple RESTfull API by making a simple web server.

Terranova: Using Terraform from Go

Terraform is an amazing tool made by HashiCorp to describe infrastructure as a code. Terraform allow us to build, change, and do versioning of the infrastructure safely and efficiently. The use of Terraform is quite simple, after download the binary you need to create a terraform configuration file or files to describe the infrastructure to build. The first time you have to initialize terraform (terraform init) to download all the dependencies and then apply the changes (terraform apply).