Ten Popular Go Projects
Explore ten widely recognized Go projects that drive cloud-native and distributed systems, including Kubernetes, Docker Moby, and Prometheus. Understand their functionalities and see how Go plays a central role in modern infrastructure.
We'll cover the following...
You may have heard of many of these projects and didn’t know that they are implemented in Go. The fact of the matter is that Go powers much of the cloud-native movement. Many of the mentioned projects have command-line programs to control and manage their functionality. By the end of this lesson, you should feel that you are in very good company.
Overview
Go made quite a name for itself in the world of distributed systems, containers, and cloud-native computing. This means that if you want to be on the bleeding edge and work on the most innovative projects in the hottest domains, Go is an excellent choice. Here are some of the most popular open-source projects on GitHub, strongly biased by my preferences.
Moby (Docker upstream)
Moby is a project started by Docker to open source their technology. The various Docker releases are all based on upstream Moby, and the Docker CLI is a great example for a command-line program implemented in Go.
Check it out here: Moby
Kubernetes
Kubernetes is the most popular container orchestration technology and a fine example of a massive Go project. It is remarkable in multiple ways from the technical perspective, as well as the way the project is managed and the amazing community driving it forward.
Check it out here: Kubernetes
Traefik
Traefik is a modern HTTP reverse proxy and load balancer. It integrates smoothly with many existing infrastructure systems and configures itself automatically and dynamically.
Check it out here: traefik
Go-kit
Go-kit is a framework for building microservices in Go. It promotes best practices by focusing on separating concerns. It is one of my favorite projects, and I wrote a book called Hands-On Microservices with Kubernetes that coversusing Go-kit to build multiple microservices and deploy them on Kubernetes.
Check it out here: go-kit
DGraph
DGraph is a distributed graph database. It is fast, scalable and used by many large companies to store and query massive amounts of data.
Check it out here: DGraph
NATS
NATS is a high-performance, cloud-native messaging system. It supports several modes of messaging including persistent storage via NATS streaming. It’s similar to Kafka or RabbitMQ. I have used it successfully for a distributed systems project running inside a Kubernetes cluster.
Check it out here: NATS
K6
K6 is a modern load testing and performance testing framework, tool and API. You can define load tests in JavaScript and execute them against your services and web applications to see how they behave under different loads. I’ve used it successfully at work.
Check it out here: k6
Prometheus
Prometheus is a modern monitoring system. It collects time-based metrics. It’s got a multi-dimensional data model, powerful query language, and autonomous server nodes with graphs and dashboard support.
Check it out here: Prometheus
Jaeger
Jaeger is a distributed tracing system that originated at Uber. It is very suitable for tracing requests across multiple microservices, and it can complement Prometheus for debugging and troubleshooting cross-service problems in distributed systems.
Check it out here: Jaeger
Conclusion
We introduced ten popular Go projects, but there are many more. Go was designed as a practical language catering for large-scale software engineering, and there is overwhelming real-world evidence that it achieved its design goals.