Smarter people have a better way to explain it than us: https://github.com/bwplotka/mimic/blob/main/README.md#but-why-go
We took a lot from it.
-
Because most outages are caused by a configuration error and a configuration language is the most important tool in the hands of a platform engineer.
-
Configuration as code as in programming language code, not JSON, YAML or HCL.
-
Go is a strongly typed language. IDEs provide a great developer experience with autocompletion and type safety.
-
Tests are a first class citizen: it makes trivial to write a test to ensure correctness of the configuration
-
Most of the infrastructure tools are written in Go: i.e. Kubernetes, Prometheus, Istio, Tekton, ... it is easy to interact with them and leverage their APIs/structs.
-
Dependency management: Go modules provide a simple way to manage dependencies and reuse code with the correct version to ensure compatibility
-
Documentation: Go recommends godoc formatting as it can leverage native comments for each struct's fields in order to provide comments/examples in the IDE of the developer, which increase productive and correctness.
-
Quick feedback loop: Catch most mistakes and incompatibilities in Go compile time. Go has very fast compilation time, which feels like you are running a script.
-
Limit the number of languages used in the organization to a minimum : Go is one of the cleanest, simplest and developer friendly languages that exists.
-
Backwards compatibility: Go is well-known for its backwards compatibility making it a great choice for long-lasting platforms reducing rework through breaking changes.
- But Why Go from Mimic by bwplotka 👈 we were heavily inspired by this one.
- Not Another Markup Language from NAML by krisnova
- Go for Cloud by rakyll
- How Go fixed everything that was wrong with programming by jankammerath
- The yaml document from hell by ruudvanasseldonk
- noyaml website
- YAML Considered Harmful - Philipp Krenn 🎥
- Nightmares On Cloud Street 29/10/20 - Joe Beda 🎥