'Go' and 'DevOps' - Modern Bffs in the Cloud-Native Industry

Pavan Belagatti - Oct 10 '19 - - Dev Community

Go, the open-source programming language began in-house at Google approximately around ten years ago and is gaining massive popularity as the language of the future. Today, 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: 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.

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.

GoLang Trend

HackerRank Developer survey

State of software engineering report

Go stands 1st for top paying skills

  • The Go Developer Network spreads across 44 countries, 140 groups, 66962 members as of today, Yes it is growing day by day.

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

Go is fastest growing language

What Makes Go so Good for DevOps?

According to Google, Go was designed with an eye on the felicity of programming, 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.
Joe Beda, the creator of Kubernetes, writes about why Kubernetes is 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 other programming languages.

It is the 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. Sorry to repeat, Go is simple to understand, which makes it easier for testers and developers to read the code & collaborate better. Even if you get a new member in the team, he will quickly understand the code in a few days.

Derek Collison's bold prediction made many cloud enthusiasts take a special interest in Go.

Alt Text

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 is mostly DevOps people who like to use ‘Go' more in the future.
Alt Text

In fact, I wrote another article that talks more about Go and DevOps, '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
  • Cross-Compilation
  • Garbage Collection
  • Readability
  • Builtin Testing
  • Profiling

DevOps Tools Written in Go

  • Kubernetes
  • GitHub
  • Helm
  • Docker
  • Terraform
  • Prometheus
  • Etcd
  • Grafana
  • Jaeger
  • Honeycomb
  • Istio

Go is Excellent for Microservice-based Architectures
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 and 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? Concurrency!
Go especially is better suited to modern computing, particularly when it comes to cloud & microservices architectures. Scalability is a major issue in modern software & 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 & 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

  • Go at CloudFlare
    Railgun, a significant software at CloudFlare, makes extensive use of goroutines and channels. Goroutines handle both the multiplexed Internet connections & the concurrency feature of Go was then realized and adopted by CloudFare very early around 2012.

  • Go at SoundCloud
    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 on his Quora answer. 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 & they run approximately 10+ Go applications over 50+ nodes in AWS (the answer captured on July 2015).

  • Go at Bitly
    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.

  • Go at Dropbox
    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 & this feature is written in Go.

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.

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 & efficient software.
And now, there is an ecosystem, there are a lot of libraries available whether it’s for writing tests, or improve logging, there are central go modules repositories such as GoCenter via which public go modules can be downloaded. Also, for enterprises, they 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 in the DevOps world and is here to stay.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .