Skip to content
This repository has been archived by the owner on Sep 28, 2023. It is now read-only.

Latest commit

 

History

History
53 lines (35 loc) · 3 KB

go.md

File metadata and controls

53 lines (35 loc) · 3 KB

Go (Golang)

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.

Why Go

  • 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.

References

Go resources