Go, the open-source programming language, began in-house at Google approximately ten years ago. Today, it is gaining massive popularity as the language of the future. In this article, we will see why Go is becoming more famous and important in the world of software development, especially when it comes to DevOps.
Go was created by several skilled engineers - namely Ken Thompson, Rob Pike, and Robert Griesemer - who worked on some notable projects previously. The first version of Go language was open to the public in 2009, and version 1.0 was released in 2012.
Let us take a deep dive and see why everyone is gaga over Go.
Where is Go Going?
Let us head over to Google trends and see how Go is performing globally over the past five years in terms of search interest on Google (web searches). As we see, it is up and growing steadily.
HackerRank's 2019 developer skills report revealed that Go is the #1 language developers want to learn for the second year running. Also, the fraction of people who know Go grew to 8.8% (45% YoY).
According to the Hired 2019 State of Software Engineers Report, Go is the #1 in-demand programming language.
According to the 2019 Dice Salary Survey, Go stands in the #1 place in the top-paying tech skills of 2019.
The Go Developer Network spreads across 44 countries, 140 groups, 66962 members as of today. Yes it is growing day by day.
Go is also the fastest growing language on GitHub in Q1 of 2019. Go has grown almost 8% overall with a 0.7% change from the previous Quarter.
What Makes Go so Good for DevOps?
According to Google, Go was designed to make programming easy. Its creators focused on speed of compilation, orthogonality of concepts, and the need to support features such as concurrency and garbage collection. Don't be shocked - even your favorite tools like Kubernetes, Docker, and many others are written in Go.
Go is excellent for working in environments where you can’t or don’t want to install dependencies since it compiles into a stand-alone binary. Without having to get the whole environment set up, you can get things done in a much faster way than with other programming languages.
It is a language that is meant to be fast on the web. Google and many other companies back it, it is always improving, and it is here to stay. And it bears repeating: Go is simple to understand, which makes it easier for testers and developers to read the code and collaborate better. Even if you get a new member on your team, they will quickly understand the code in a few days.
Derek Collison's bold prediction made many cloud enthusiasts take a special interest in Go.
Tobi Lütke, the CEO of Shopify, stated that Go is going to be the dominant language for server work.
TheNewStack Survey revealed that, it will mostly be DevOps people who like to use Go more in the future.
In fact, I wrote another article that talks more about Go and DevOps, which you can find here: 'Go Lang & DevOps - A Match Made In Heaven?'
Features that Make DevOps People Like Go
- Simple, Reliable and Efficient
- Open Source
- Fast Compilation and Execution
- Import-Defined Dependencies
- stdlib - Wisely composed packages that are useful
- Error Handling Capacity
- One Binary to Rule them All
- Garbage Collection
- Builtin Testing
Famous DevOps Tools Written in Go
Go is Excellent for Microservice-based Architectures
Say you have a monolithic architecture and thousands of lines of code. Finding the mistake that is causing the system to break is a huge task, and this is where the Microservices concept was introduced.
A microservices architecture breaks an application down into smaller applications. It then segments them by logical domains, making them independent elements so that we can easily track down which component is causing the error when something goes wrong.
But again, why Go is good for Microservices? Why?
Go especially is well-suited to modern computing, particularly when it comes to cloud and microservices architectures. Scalability is a major issue in modern software and cloud-native development. Having several microservices isn't such a big deal. But what will happen when your system consists of thousands of them? Concurrency becomes vital, and Go plays a significant role here.
"Go's big contribution was the native concurrency story, and arguably the implicit interface stuff. With these features, you get a lot of value, and you get a lot of expressiveness that wasn't available in languages like C." - Peter Bourgon, an engineering rockstar and a QConn speaker.
Successful Early Go Use Cases
Railgun, a significant software at CloudFlare, makes extensive use of goroutines and channels. Goroutines handle both the multiplexed Internet connections, and the concurrency feature of Go was then realized and adopted by CloudFare very early around 2012.
SoundCloud made use of Go features like static typing and fast compilation to do near-realtime static analysis and unit testing during the development phase. This also implies that building, testing, and rolling out Go applications through their deployment system is as fast as it gets.
Go at BBC
A lead Dev confirmed in his Quora answer that BBC is using Go. He answered saying they had a great success running Go in production since 2013. Some of their older systems have been running for over one year without a problem and they run approximately 10+ Go applications over 50+ nodes in AWS (the answer captured on July 2015).
As per their official blog, Bitly uses Go in production. While most of their services were written in Python, they leveraged Go's channels and goroutines to write straightforward code that parallelizes HTTP requests to downstream systems or aggregates writes to disk.
DropBox is a massive company, and today, most of DropBox's infrastructure is written in Go. Dropbox migrated from Python to Go for performance-critical backends to leverage better concurrency support and faster execution speed. Company-wide, Dropbox has 1.3 million lines of Go as per a blog shared by Tammy Butow, the then SRE manager at Dropbox.
Who Else is Using Go?
UBER - UBER has GeoFence lookups to show its users' vehicle availability in a particular location and prices accordingly, and this feature is written in Go.
BBC Worldwide - BBC Worldwide implemented Go for backend development and production of different games.
SoundCloud - SoundCloud used Go to develop their build and deployment system.
Google - Google uses Go for many internal projects. The service that runs dl.google.com — the source for Chrome, Earth, Android SDK, and other large Google downloads — has been rewritten in Go.
Twitter - 5 billion Twitter app sessions go through Go daily & that is huge.
Medium - Their Neo4j database is managed by a service written in Go which they refer to as GoSocial.
GitHub - A lot of GitHub infrastructure is in Go now, including all the server-side parts of Actions.
Here is a list of companies currently using Go around the world.
Give it a try
Go is easy to learn, easy to read, and it is very powerful. Go already has the tooling figured out for you. This is why numerous firms migrate to Golang from other languages and design effective and efficient software.
And now there is an ecosystem, and there are a lot of libraries available whether it’s for writing tests, or improve logging. There are also central Go module repositories such as GoCenter from which public Go modules can be downloaded.
Also, enterprises can use tools such as Artifactory that can be used to store private Go modules, public Go modules, and the compiled binaries.
Go is in such an inspiring stage currently. It has a very active open source community that is evolving every day. Also, code written in Go is easy to maintain. Go programmers are in high demand, and as we see that most of the DevOps tools are written in Go, it is easily predictable that Go goes well with the DevOps world and is here to stay.