Best Software Tools and Projects Written in Go LanguageWeb Development Programming Languages Go GoLang
Hugo is one of the most popular open source static site generators out there. Rinse and repeat in plain English, HUGO is a framework for building websites quickly. Over 29k live websites are built with HUGO and Wappalyzer reports that Hugo serves almost 50% of the static sites. It is hugely popular with public sector web developers and notable US government sites include vote.gov and digital.gov. Oh and guess what, Kubernetes’ own site is built using HUGO!
Open Source Continuous File Synchronization tool.
Define and run multi-container applications with Docker.
Kubernetes (K8s) - Google’s most recent container-management system is an open-source system for automating deployment, scaling, and management of containerized applications.
Is a DNS server written in Go. Apart from being written in Go, it differs from other DNS servers because it is very flexible, and is designed so that most of its functionality is outsourced into plugins. The CoreDNS project graduated as an official Cloud Native Computing Foundation project in 2017.
Zinc Search Engine
ZincSearch. A lightweight alternative to elasticsearch that requires minimal resources, written in Go.
Zinc is a search engine that does full text indexing. It is a lightweight alternative to Elasticsearch and runs using a fraction of the resources. It uses bluge as the underlying indexing library.
It is very simple and easy to operate as opposed to Elasticsearch which requires a couple dozen knobs to understand and tune which you can get up and running in 2 minutes
It is a drop-in replacement for Elasticsearch if you are just ingesting data using APIs and searching using kibana (Kibana is not supported with zinc. Zinc provides its own UI).
Network-wide ads & trackers blocking DNS server. See its source code on github.
The lightweight, distributed relational database built on SQLite.
rqlite is an easy-to-use, lightweight, distributed relational database, which uses SQLite as its storage engine. rqlite is simple to deploy, operating it is very straightforward, and its clustering capabilities provide you with fault-tolerance and high-availability. rqlite is available for Linux, macOS, and Microsoft Windows.
frp - fast reverse proxy
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
What’s in a name? Rather than striking fear in the hearts of most & sending people running for cover, here’s a lovely project that has spawned a next generation database designed for cloud native applications. Like its namesake, CockroachDB is built to be resilient and almost indestructible.
sqlc - Generate type-safe code from SQL
sqlc: A SQL Compiler. sqlc generates type-safe code from SQL. Here’s how it works:
- You write queries in SQL.
- You run sqlc to generate code with type-safe interfaces to those queries.
- You write application code that calls the generated code.
Rclone (“rsync for cloud storage”) is a command-line program to sync files and directories to and from different cloud storage providers.
“rsync for cloud storage” - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files.
Monzo - online banking app
Monzo is a banking app written in Go programming language. Most companies introduce Go lang together with the microservices architecture. This was similar to the case of Monzo, an app-based online bank. When they first started architecting the application in February 2015, they were focused on the single responsibility principle. It states that every module should be responsible for a single functionality. This approach makes the app more stable – and here’s where Go makes a great fit. Monzo is a classic example of an app built on Go language from the very start.
Allegro - e-commerce app
Most of Allegro’s microservices are written in Java, yet the team was open to explore new things. They’ve worked with on an open-source Go project before and were happy to see how Golang will handle larger volumes of traffic.
The final results were astonishing. Go helped Allegro speed up the application from 2.5 seconds to less than 250 milliseconds, and that’s for the longest request! The Allegro team swears by Golang and is happy to share their insights during Go-related conferences.
SoundCloud - music app
Although the app is largely based on Ruby on Rails, SoundCloud identifies as a polyglot company, with many languages adding up to their backend. They appreciate Golang as a WYSIWYG (what you see is what you get) language. This makes it easier for the entire team to understand the software and make the maintenance process more efficient.
What’s more, SoundCloud appreciates Golang’s fast compilation and static typing. In layman’s terms, this means that developing, testing, and deploying the application is as fast as possible. The team claims that these swift processes mean that some simple ideas can get from whiteboard to production in just one hour. Impressive, isn’t it?
Badoo - dating app
Bitmap indexes can be hard to implement in many popular database management systems, such as MySQL. The solution? You guessed it: Golang. Bitmap indexes are commonly used in Pilosa, a database management system written in Go. Without going too much into technical details, the Go language allows for smooth implementation of bitmap indexes, which is why the Badoo team decided to use it for their high-maintenance product.
Uber - ridesharing app
Although Node.js was Uber’s first language of choice, they decided to start using Go for this service. The company needed something fast, as they’re dealing with hundreds of thousands of geofence lookup requests every second! Golang turned out to be the perfect pick, as it can work on multiple CPU cores at the same time, while Node.js is single-threaded. In other words, the Go language can do multiple things at once.
The choice proved to be largely successful and the Uber team is happy using Golang. Not only is it faster, but it also makes software developers more productive. When they’re already familiar with Java, C++, or Node.js, they will be able to learn Go in just a couple of days.
When it comes to the app’s performance, the results are truly impressive. On New Year’s Eve 2015, Uber’s data center has successfully handled a peak load at just 35% CPU usage. To top it all off, the company can boast a whopping 99.99% uptime, with downtime caused only by third-party libraries and not Golang itself.
Encouraged by the geofence success, Uber started implementing Golang in more of its microservices. For example, they’re using this language to match riders to the right drivers too. It has become their most popular language for creating new services within the product. It’s safe to say that Uber is one of the top Golang apps when it comes to popularity.
Dropbox owes a large share of its success to Python, a language that enabled company to iterate and develop quickly. However, with a growing user base, they started exploring ways to scale systems in a more efficient manner. That has lead to migrating performance-critical backends from Python to Go to leverage better concurrency support and faster execution speed.
This was a massive effort–around 200,000 lines of Go code–undertaken by a small team of engineers. They have successfully moved major parts of our infrastructure to Go. Zviad Metreveli presetned details of those effots in Go at Dropbox - Gopherfest - November 18, 2015.
SendGrid is a cloud-based email service to reliably deliver high volume emails on behalf of some of the biggest companies in the world which includes uber, Airbnb, Spotify and more. SendGrid’s customizable, reliable, and scalable APIs have been developed using Golang. Such email applications can deliver the most relevant content to the right user at the right time.
It is a video-sharing website hosted in France. The website resembles YouTube; it streams videos, including original content created by Dailymotion studios. Dailymotion uses Golang for automation of APIs and End to End test cases.
They conduct hundreds of automation tests every month using Golang. They chose Golang for huge loads of automation testing as it is fast and powerful. They have developed most of their backend projects in Golang because of its performance, static type checking, and simplicity.
It is a live streaming video platform that focuses on video game live streaming, but also streams music broadcasts, creative content, eSports competitions and more.
Twitch use Go for many of our busiest systems. Its simplicity, safety, performance, and readability make it a good tool for the problems we encounter with serving live video and chat to our millions of users. Go is an important part of how Twitch scales, especially combined with AWS Lambda.
In 2018 Twitch relesed RPC framework they use for communication between backend servers written in Go - Twirp: a sweet new RPC framework for Go.
gogs - painless self-hosted Git service
/gɑgz/ project aims to build a simple, stable and extensible self-hosted Git service that can be set up in the most painless way. With Go, this can be done with an independent binary distribution across all platforms that Go supports, including Linux, macOS, Windows and ARM-based systems.
⚡️ Express inspired web framework written in Go.
Fiber is an Express inspired web framework built on top of Fasthttp, the fastest HTTP engine for Go. Designed to ease things up for fast development with zero memory allocation and performance in mind.
aws load balancer controller
A Kubernetes controller for Elastic Load Balancers.
CasaOS - A simple, easy-to-use, elegant open-source Home Cloud system.
echo - Go web framework
High performance, minimalist Go web framework.
The easiest, most secure way to use WireGuard and 2FA.
Container runtimes on macOS (and Linux) with minimal setup.
DockerSlim (docker-slim): Don’t change anything in your Docker container image and minify it by up to 30x (and for compiled languages even more) making it secure too! (free and open source).
SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! Blob store has O(1) disk seek, cloud tiering. Filer supports Cloud Drive, cross-DC active-active replication, Kubernetes, POSIX FUSE mount, S3 API, S3 Gateway, Hadoop, WebDAV, encryption, Erasure Coding.
containerd - An open and reliable container runtime
containerd is an industry-standard container runtime with an emphasis on simplicity, robustness and portability. It is available as a daemon for Linux and Windows, which can manage the complete container lifecycle of its host system: image transfer and storage, container execution and supervision, low-level storage and network attachments, etc.
gitea - self-hosted git service
As Gitea is written in Go, it works across all the platforms and architectures that are supported by Go, including Linux, macOS, and Windows on x86, amd64, ARM and PowerPC architectures. You can try it out using the online demo. This project has been forked from Gogs since November of 2016, but a lot has changed.
JuiceFS is a distributed POSIX file system built on top of Redis and S3.
JuiceFS is a high-performance POSIX file system released under Apache License 2.0, particularly designed for the cloud-native environment. The data, stored via JuiceFS, will be persisted in object storage (e.g. Amazon S3), and the corresponding metadata can be persisted in various database engines such as Redis, MySQL, and TiKV based on the scenarios and requirements.
With JuiceFS, massive cloud storage can be directly connected to big data, machine learning, artificial intelligence, and various application platforms in production environments. Without modifying code, the massive cloud storage can be used as efficiently as local storage.
nsq - A realtime distributed messaging platform
NSQ is a realtime distributed messaging platform designed to operate at scale, handling billions of messages per day.
It promotes distributed and decentralized topologies without single points of failure, enabling fault tolerance and high availability coupled with a reliable message delivery guarantee. See features & guarantees.
Operationally, NSQ is easy to configure and deploy (all parameters are specified on the command line and compiled binaries have no runtime dependencies). For maximum flexibility, it is agnostic to data format (messages can be JSON, MsgPack, Protocol Buffers, or anything else). Official Go and Python libraries are available out of the box (as well as many other client libraries), and if you’re interested in building your own, there’s a protocol spec.
lux - download tool
👾 Fast and simple video download library and CLI tool written in Go. lux is open source.