Choosing Go for Delinkcious

I wrote and shipped production backend code in many fine languages such as C/C++, Python, C#, and, of course, Go. I also used a few not-so-fine languages, but let's leave those out of the discussion. I decided to use Go as the programming language for Delinkcious because it is a superb language for microservices:

  • Go compiles to a single binary with no external dependencies (awesome for simple Dockerfiles).
  • Go is very readable and easy to learn.
  • Go has excellent support for network programming and concurrency.
  • Go is the implementation language of many cloud-native data stores, queues, and frameworks (including Docker and Kubernetes).

You may argue that microservices are supposed to be language agnostic and that I shouldn't focus on one language. This is true, but my goal is to be very hands-on in this book and dive deep into all the fine details of building microservices on Kubernetes. To do that, I had to make specific choices and stick to them. Trying to get the same level of depth in multiple languages would have been futile. That being said, the microservice boundaries are very clear (one of the advantages of microservices) and you can see how implementing a microservice in another language will present a few issues to the rest of the system.