As technology progresses and becomes more efficient, so should the programming languages that come along with it. Golang was created by Google in order to provide faster apps, increased productivity, and high code efficiency.
Making important decisions like adding or expanding usage of technology like Golang has to be based on your use cases and supported with strong business benefits. In this article, you will learn what companies use Golang and what are their Golang use cases so that you can make better decisions.
- Why are companies using Golang?
- Golang Use Cases
- Golang in Technology Platforms
- Golang in Online Booking Systems
- Golang in Ecommerce
- Golang in Fintech
- Golang in Payments Processing Systems
- Golang in Cyber Security
- Music and Video Streaming with Golang
- Golang in Chats and Messaging Platforms
- Golang in IoT data processing
- Golang in Real-time events platforms
- Golang in Gaming servers
- Golang – the future of programming?
- When Should You Migrate Your Project To Golang?
Why are companies using Golang?
Designed for multi-core processing
Golang was created with cloud computing in mind. It leverages concurrency and parallelism provided by modern hardware.
It’s approach to concurrency is very easy to work with. Compared to Python/Java, running a function on a goroutine requires minimal boilerplate code.
The goroutines and channel-based approach to concurrency makes it very easy to use all available CPU cores and handle concurrent IO without complicating development.
Created for large projects
Over time new complex systems were built on top of these foundational systems/libraries and languages. People too often don’t think of the hidden costs of complexity. The truth is that code is read many more times than it is written. Team velocity is significantly burdened by complexity.
Go code is very straightforward and readable. This simplicity empowers teams to collaborate in ways never before possible.
Easy to learn
The minimal layout and specification of Golang language make it very easy to read even if you are new to programming languages.
Go is simple to learn, especially if you have a background in C or Java. Even as a beginner, it’s easier to get the hang of the language in comparison to older competitors.
If you are already familiar with other programming languages then it typically takes around a week to get the hang of Go. Beginners will be looking at a few weeks up to several months depending on their dedication.
Golang Use Cases
The following sections group companies using Golang by domain. Each company section includes details found online, often in articles. We hope those materials that will help you get a better picture of Golang use cases across companies.
Golang in Technology Platforms
Technology Platforms provide a common set of functions that accelerate application development, so solutions can be deployed to the business more quickly. They often require high scalability and reliability which Golangs excels at.
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
"People become very productive in Go very fast, our infrastructure is built in Go today and all the new things we build in Go." - Zviad Metreveli, Senior Prinicipal Engineer at Dropbox
On top of that Dropbox open sourced several Golang libraries that help to improve caching, standard error interface, and more.
In 2020, Dropbox continue to break apart the Python monolith codebase and evolve it into a serverless managed platform, which would reduce code tangles and liberate services and their underlying engineering teams from being entwined with one another. To do so, they are innovating the architecture e.g. standardizing on gRPC and using Envoy’s gRPC-HTTP transcoding. See blog post.
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.
"Fundamentally, the biggest challenge that SendGrid faces in development is concurrent programming. While what we do isn’t rocket science, doing it at a scale of over 500 million messages per day is extremely challenging (I’ve done rocket science, this is way harder)." Tim Jenkins, Co-founder and Chief Technology Officer at SendGrid.
Golang in Online Booking Systems
An online booking system allows ordering services and payment through web or mobile applications, allowing businesses to scale operations. Being part of the day to day operations, those systems require top notch reliability, scalability, and integration with other systems.
While historically Uber has been mostly a Node.js and Python shop, the Go language is becoming the language of choice for building many of Uber Engineering’s new services.
Uber has written over a hundred services in Golang. Geobase is one of the most recent Uber services written in Golang. It matches riders to drivers, sharding the matching across machines. In fact, Golang powers a majority of high queries per second services at Uber.
"Looking back, we are extremely happy with our decision to Go for it and write our service in a new language. The highlights:
- High developer productivity. Go typically takes just a few days for a C++, Java or Node.js developer to learn, and the code is easy to maintain. (Thanks to static typing, no more guessing and unpleasant surprises).
- High performance in throughput and latency. In our main data center serving non-China traffic alone, this service handled a peak load of 170k QPS with 40 machines running at 35% CPU usage on NYE 2015. The response time was < 5 ms at 95th percentile, and < 50 ms at the 99th percentile.
- Super reliable. This service has had 99.99% uptime since inception. The only downtime was caused by beginner programming errors and a file descriptor leak bug in a third party library. Importantly, we haven’t seen any issues with Go’s runtime."
Delivery Hero is building the next generation global online food ordering platform. They use microservice architecture, and API REST, gRPC, SQS/SNS are used for communication between applications deployed to cloud-based infrastructure following 12 factors using Kubernetes/Docker.
While their techstack consists of Go and PHP as main languages, Go is becoming a core technology of foodora and foodpanda platforms.
"Go’s simplicity and its sophisticated tooling let us scale not only our service but more importantly, the process of software engineering itself. Reducing the friction of onboarding and training someone has a significant impact on the company’s productivity, even more so in a constantly moving environment like trivago." - Martin Mai, Software and Site Reliability Engineer
Source: Why We Chose Go
SIXT is one of the biggest technology-driven mobility companies in the world. SIXT App is the central interface for our services: It allows customers to plan their journeys, open and close cars via telematics, review their usage data and much more. It is built on a state-of-the-art Cloud-native, microservices-based, event-driven Golang infrastructure.
"We have been doing Golang at SIXT since 2015. Back then there was not that many people here in our area which were doing Golang in production mode, mostly side projects. So it was really a bold move from our side but it proved to be quite successful. Fast forward to 2019 we have over 15 teams doing Golang. Many of the applications they have built are basically foundation for most of our mobility product offer including Rent, Ride and Share." - Boyan Dimitrov, VP, Cloud Engineering at Sixt
Golang in Ecommerce
Ecommerce startups, SMEs and large enterprises all face challenges in regards page load times, scalability issues and availability of website i.e. during major promotions. Golang is widely used for solving those problems.
Alibaba Group container engine PouchContainer written in Golang. It can pack, deliver and run any application. It provides applications with a lightweight runtime environment with strong isolation and minimal overhead.
PouchContainer has been running on tens of thousand nodes in Alibaba stablely, and helped all online transactions of Alibaba's 2017 Singles Day smoothly on millions of containers.
Allegro, the largest online shopping platform in Poland. More than 21 million registered customers and over 220 million visits per month puts this e-commerce platform in 13th place among the world's leaders in online sales such as Amazon and eBay.
While most of the microservices are written in Java or another JVM based language, some in Python. When tasked to write a very fast cache service they decided to try something new and implement the service in Go.
"Finally, we sped up our application from more than 2.5 seconds to less than 250 milliseconds for longest request." - Łukasz Drumiński, Tech Lead @ Allegro
MercadoLibre, Inc. hosts the largest online commerce ecosystem in Latin America and is present in 18 countries. Company has turned to Go to help it scale and modernize its ecosystem.
Using Go allowed them to cut the number of servers from 32 down to just 4, speed-up build times 3x and test suite runtimes from 90s to just 3s.
"Go was just marvelous for us. It’s very powerful and very easy to learn, and with backend infrastructure, has been great for us in terms of scalability." - Eric Kohan, Software Engineering Manager at MercadoLibre
Source: MercadoLibre Grows with Go
Golang in Fintech
In fintech (financial technology), there is a continuous and 24/7 demand for financial data from many customers. Golang is a really good fit when it comes to handling transactions and accessing financial data.
Solarisbank is a tech company with a full German banking license. Their Banking-as-a-Service platform enables businesses to offer their own financial products using straightforward APIs like digital banking, payments, cards, identification and lending services.
From deep in the trenches of banking to the edges of services, Go is used across multiple teams in Solarisbank:
- Core Banking Teams - to build backbone, protocol level banking systems such as SEPA and SWIFT
- Auth Team - reverse proxies and the authentication/authorisation systems
- Data Platform Team - to build pipelines that serve as the infrastructure for turning data into knowledge
Teck Stack: Docker, Microservices, Ruby, Grape, Golang, Elixir, Phoenix, React.js, MySQL, Postgres, Redis, Concourse, Github, Prometheus, AWS
Source: Golang Engineer
UK-based start-up Monzo was granted a full banking licence in April 2017. It opened a waiting list for the US in summer 2019.
For banking ops, it decided to build its own platform using is mainly open source: Linux, Apache Cassandra distributed database (used by the likes of Apple and Twitter), Google’s Go (golang) programming language at the back-end and PostgreSQL. The infrastructure is hosted on the Amazon Web Services (AWS) cloud. The bank’s two data centres are for interacting with Mastercard’s systems.
"Go is a perfect language for creating microservice architectures, and the concurrency features, and the language in general, has allowed the easy creation of small and simple networked services at Monzo that are focused around the 'single responsibility principle'." - Matt Heath, Principal Engineer
Capital One is a tech-driven financial company. One of their services is Credit Offers API, where affiliate partners like Credit Sesame, CreditCards.com, and Bankrate display available credit card options.
In mid 2016 we created new Golang endpoint to the API that would acknowledge that an offer had been displayed to a customer.
"Go was starting to gain really huge, impressive momentum at Capital One and based on a POC that my team put together, we saw a huge performance improvement vs Java. These results were clear so we decided to use it for this new endpoint. At the time, no single team member knew Go, but within a month, everyone was writing in Go and we were building out the endpoints. It was the flexibility, how easy it was to use, and the really cool concept behind Go (how Go handles native concurrency, garbage collection, and of course safety+speed.) that helped engage us during the build." - Jaime Garcia, Director of Software Engineering at Capital One
Source: A Serverless and Go Journey
Golang in Payments Processing Systems
Payment processing systems allow businesses to take payments for goods and services using credit cards, debit cards, and checks. These systems check the details received during the transaction and carry out a series of anti-fraud measures before settling the transaction.
With 24/7 global operations and hard SLAs, stability and automatic recovery are a must have since each step in the payment processing pipeline requires the lowest possible latency which Golang delivers.
American Express is primarily know for its credit cards and payments processing. As of December 31, 2019, the company had 114.4 million cards in force, including 54.7 million cards in force in the United States.
In 2016 their payments and rewards platform teams were among the first to start evaluating Go. Their main focus was on microservices, transaction routing, and load-balancing use cases, and they needed to modernize their architecture.
"After working on Go, most of our developers don’t want to go back to other languages." — Benjamin Cane, Vice President and Principal Engineer at American Express
To help other enterprises determine if Go is right for them they have published a Go Case Study: American Express Uses Go for Payments & Rewards
Source: Choosing Go at American Express
PayPal was the pioneer of online payments and remains leading payment processor for online vendors, auction sites, and many other commercial users around the world.
There are currently over 100 Go developers at PayPal. While Go may never replace Node.js for certain applications Go is a first-class language at PayPal.
"Go provides channels and routines to deal with complexity, we were able to structure the code to meet our requirements." - Bala Natarajan, Sr. Director of Engineering, Developer Experience at PayPal
Zettle builds game-changing commerce tools, such as mobile card readers and point-of-sale apps that empower small businesses to compete with the big players. Founded in Stockholm in 2010, they revolutionised mobile payments with the world’s first mini chip card reader and software for mobile devices.
Go is the primary backend language at iZettle. Tech stack includes PostgreSQL and Dynamo for persistence, AmazonSQS and AmazonSNS for asynchronous services.
Source: Backend Engineer
Bolt Payments is an all-in-one payment platform for e-commerce retailers. Their end-to-end payment platform aims to make the entire checkout experience as frictionless as possible.
To improve their flexibility, Bolt team has created Sleet, an open-sourced library for interfacing with different PSPs using Golang .
"We were inspired by ActiveMerchant, which is another library written in Ruby on Rails that achieved the same purpose. After verifying that no solution like this existed for Golang, we decided to go ahead and build it ourselves." - Niraj Jayant, Engineering Manager at Bolt
Golang in Cyber Security
Security and privacy have continued to gain interest and the cybersecurity market is booming and continuing to grow. Golang is a perfect fit with static typing and wide use in server and cloud environments.
Trusted by more than 60,000 businesses to protect their data, 1Password gives you complete control over passwords and other sensitive business information.
The backend server for 1Password Administrator Tools is written entirely in Golang. It enables administrators to manage 1Password for their entire company and make account recovery simple, and secure.
Keybase is key directory that allows users to encrypt messages and verify identities.
"Why is Keybase written in Go? The libraries for Go are just phenomenal and I spend a lot of time working with C++ in OKCupid and it was hard to find libraries that work together really well. Go is the opposite - core libraries basically do everything you need." - Max Krohn, Founder of Keybase
Music and Video Streaming with Golang
Protocols such as HLS in Golang make it easy to build a streaming service that is simple to install while providing the most efficient performance. It supports the most commonly used file and encoding formats. The strong advantage to streaming with the language is speed, especially when it comes to live streaming. Without a seamless transition when encoding, decoding, and packaging video and audio, live streaming is not possible. Go handles all of these processes smoothly which can provide the viewer with a high-quality experience with minimal disruption.
SoundCloud is a consumer website that is the leading audio platform on the web and that means anything from bedroom DJs uploading their mixes to professional interviewers uploading interviews and podcasts.
SoundCloud maintains about half a dozen services and over a dozen repositories written entirely in Go. And we’re increasingly turning to Go when spinning up new backend projects.
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
Movio provides marketing data analytics and campaign management software for the film industry in SaaS model. Movio maintains real-time data on the demographic profiles and cinema transactions of identifiable moviegoers, which is consolidated and processed to design audience segments, create targeted marketing campaigns and measure their effectiveness.
Movio holds comprehensive marketing data covering from 39+ million active moviegoers, covering 29% of cinema screens worldwide.
In 2017 they have migrated from Scala to Golang and descried their migration on blog post Making The Move From Scala To Go, And Why We’re Not Going Back
Engineering team continues to use Golang and recently released unter open-source licence Bramble: A Federated GraphQL Gateway Implemented In Go
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.
Golang in Chats and Messaging Platforms
Chat servers must be able to perform many functions. The concurrency in particular comes in handy, with the high scalability being utilized when building messaging applications. In a time where messages are expected to be sent and received almost simultaneously, Go’s speed is beneficial in order to support projects in messaging and chat platforms.
Stream is an enterprise-grade chat and activity feed provider that serves more than a billion end-users.
Go’s combination of a great ecosystem, easy onboarding for new developers, fast performance, solid support for concurrency and a productive programming environment make it a great choice. It allowed a small development team at Stream powering feeds and chat for over 500 million end users.
Clever is a digital communication platform where teachers, students, and parents/guardians can securely send messages on the platform they use daily. More than 60% of U.S. K–12 schools use Clever, that’s 15 million students logging in with Clever monthly.
Listen to Clever's CTO and lead software architect discuss how and why we started using the Go language including initial experimentation with a single small project, the joys of Go’s built-in testing, how we auto-create new microservices and their data stores, some unpopular opinions, and a lot more. It’s a far ranging conversation that’s both informative and entertaining. Changelog podcast here
Source: Choosing Golang for Clever
Over 10 million users across the globe rely on Slack everyday to collaborate with their colleagues. As our user base has grown, so has our focus on enhancing the performance of our features and ensuring their ability to perform under load.
Slack engenering teams sue Golang for
Golang in IoT data processing
With the continued rise of the Internet of Things and the rapidly increasing number of edge devices comes a huge amount of data that needs to be acted upon quickly. Golang’s built-in concurrency makes the language an excellent candidate for many IoT applications.
Samsara’s platform brings AI safety programs, real-time visibility, workflows, reporting, and an ecosystem of integrations to connect the operations that power our economy: from production to logistics, construction, governments, and more.
Samsara's Industrial IoT platform is built entirely in Golang:
- Backend services (including their own, open-sourced GraphQL implementation)
- Cloud configuration, including fenerating Terraform files, managing users & teams for things like github/aws/pagerduty/permissions
- Firmware that runs devices
In 2017 TIBCO has open-soruced its core project Flogo. Initially, Flogo was IoT framework which later has evolved into a framework that focuses on making function-as-a-service (FaaS) development as painless as possible.
Today Flogo natively runs on AWS Lambda, enabling you to deploy your Flogo Flows as functions. Additionally, one of Flogo’s most recent capabilities has been to support the embedding of machine learning models that can be deployed at the edge.
Golang in Real-time events platforms
Real-time Event platforms have gone through incredible change as the demand for more efficient and accurate tools and intelligence have risen. In order to stay ahead of the curve, companies have had to update and revamp their systems so messages in reaction to events within the application are delivered almost instantly. Speed is Golang’s niche, as it combines lightweight memory requirements and quick delivery times that will leave your customers satisfied with the application’s service.
Pusher empowers 250K+ developers worldwide with APIs to create collaboration & communication features in their web and mobile apps.
Each day, Pusher sends billions of messages in real-time: source to destination in less than 100ms. How do we achieve this? A key factor is Go’s low-latency garbage collector.
PubNative is a mobile monetization platform that enables app publishers to enhance their revenue strategy through flexible ad units. It enables mobile publishers to maximize their programmatic advertising revenue.
With heavy traffic of around 25B auctions per day, PubNative's ad server is written in Go and connected to Spark data pipelines.
Source: Job description
Appodeal was originally created as an internal ad mediation tool of a mobile games publisher, that was released in 2015 as an ad mediation platform.
Today Appodeal serves several thousand active apps displaying 400 to 450 millions ads per day with up to 1 billion requests to ad networks that provide ads directly. To make sure everything is up and running, our servers process around 125K requests per second (i.e. about 10.8B requests per day).
Company uses various technologies to provide speed and reliability, and Golang is used for processing a wide range of statistical and other data.
Golang in Gaming servers
As gaming continues to grow exponentially, it’s important that your language can keep up with any updates that your system might require. Using existing Go libraries such as Nano, a game server library written with Go, can decrease the time necessary for programming by having pre-built code that can be used within your project. This can help you focus on other aspects of your game, saving you precious time and labor.
Riot Games was founded in 2006 to build player-focused games in the world. In 2009, we released our debut title, League of Legends that has gone on to be the most-played PC game in the world and a key driver of the explosive growth of esports.
Riot’s first-class languages for services are Java and Go, both are interoperable and relatively easy to package and deploy.
We love Go at Riot for a number of reasons including:
- Deployment tool, which is used to deploy and manage the lifecycle of services running in our Docker runtime
- To minimize request latency in forwarding logs and metrics to backend observability platforms, such as New Relic.
- In multiple projects use Golang’s httputil reverse proxy to proxy requests, add middleware for the lifecycle of requests to inject additional authentication or headers
- Entire backend microservice architecture is built using Golang - everything from spinning up and managing a game server process to purchasing items is all done using services written in Go.
Nakama delivers everything you need for realtime, social, and multiplayer experiences so that game developing companies can focus on building amazing games. Their open-source toolbox to build, deploy, and monetize games is build in Golang.
Nakama handles gameplay for over 150M players and serves over 70B requests per month.
Golang – the future of programming?
Go is a good default language. It’s ideal for systems, servers, APIs, daemons, databases, websites, tools, and more. Go strikes the critical balance of performance and developer productivity.
Over the next 10 years with growing usage of cloud solutions, IoT data, and new technologies like 5G, Golang is set to attract more and more companies. Companies want to reduce their time to market, decrease their operating costs, and increase their security.
Go has a key supporting role to play here providing API bridging to enable "legacy" workloads to run on cloud services. The second, much more significant phase, will be the industry shifting to take advantage of the unique cloud offerings, increasingly moving to cloud-native application development. In these cases, Go is a clear choice.
When Should You Migrate Your Project To Golang?
There are always trade-offs for every programming language, and Golang is no different. For the simplicity and speed of execution of the code built with Golang, it takes more effort to develop compared to a scripting language like Python.
Using Go isn’t something that you’ll want to pick up if your business is still validating its concept. Golang is good for businesses with predictable growth and is reliant on quick server responses.
No matter what direction your solution may take, Golang’s incredible features and unmatched flexibility can be used to achieve your goals. However, migrating your business over to Go can be a considerable amount of work and might not be worth it if you are still validating the concepts of your business. Golang can be an excellent option for businesses with dependable growth and a reliance on quick and efficient server responses.
If you feel your current programming language isn’t properly meeting your needs then it may be time to migrate to Go. The modularity and flexibility it can provide are just two of the top reasons developers have chosen it as their ‘Go-to’ language. It offers excellent reliability which means your services will have the uptime they need.
Since its creation in 2009, Golang has become a top choice as a programming language. Its consistency, flexibility, and concurrency combine to create a great experience for any project, and the scalability is unmatched. There are so many reasons why you should use Golang, and the time has never been better to switch.