Since its creation in 2009, the Go programming language has seen a growing global fan base of developers looking for a lightweight, open source language well-suited for today’s microservices architectures.
I had a chance to catch with one of our resident Gophers, Developer Advocate Brian Ketelsen, to learn more about Go and its thriving community, as well how he’s seeing enterprise developers use Go in the cloud.
Q: How did you get involved in the Go space?
A: I’ve been doing startups for a long time, and back in 2009, I saw Go when it launched, and I was at a fintech startup. I used Go as a way to introduce some concurrency to our platform – it solved that problem nicely and it almost immediately became my favorite tool for building applications.
Fast forward through a couple more startups, I went off on my own and started teaching Go classes around the world. Last summer, I had the opportunity to talk to Bryan Liston and discovered that the Cloud Developer Advocate group was really a wonderful home for me and it provided me the ability to maintain the relationships that I have in the Go community and also continue to teach and help foster a good community in Go.
Separately, Erik St. Martin—who is also now a Developer Advocate at Microsoft—and I run GopherCon every year, which to this day has been in Denver every summer. We really enjoy bringing the community together and watching the amazing growth of the Go community. It’s a great language but—more importantly to me—it’s a really great community.
Q: Tell us about Go and why it’s so popular lately.
A: Go is a relatively new language that is born out of the roots of UNIX from the people who created C, but didn’t create C++. It’s envisioned as a language that’s easy to use but has very low-level features. One of the things that I think attracts people to Go—especially for the cloud—is the fact that it’s really fast and it compiles down to a static binary that doesn’t have any dependencies. So, you can build a production binary on your Mac and ship it up to a Linux server and just run it without any crazy installs or any worrying about dependency conflicts.
Q: Who is using Go today?
A: Go is very popular in startups, but I think more surprisingly is the adoption in really big enterprises—large corporations like the New York Times and several big banks are using Go, as well as companies like Apple and Microsoft and Google. The adoption of Go is wide-spread—across the globe—from China and the major tech hubs you’d expect to companies in the middle of the rust belt.
Q: How have you seen Go grow in recent years?
A: Exponentially would probably be the best way to describe that. Our first conference was in 2014. We started off thinking we were going to sell 300 tickets, but we ended up more than doubling that to 750. At last year’s conference, we sold out at 1,500 and we’ve upped the ticket count for 2018 to 1,800 and I suspect we’ll sell out again. Go’s adoption throughout the world has just been amazing. In 2017 developer surveys, we’re seeing Go in the top 20 of all programming languages — cracking the top 10 in terms of growth and developer “love.”
Q: What are some of the advantages of using Go compared to other popular languages, specifically in the cloud?
A: Specifically, in the cloud, compiling down to a static binary is absolutely the number one advantage. When you look at a cloud-based infrastructure, often you’re using something like a Docker container to deploy your workloads. With a static binary that you build in Go, you could have a Docker file that’s 10, 11, 12 megabytes instead of bringing in the entire Node.js ecosystem, or Python, or Java, where you’ve got these hundreds of megabyte-sized Docker files. So, shipping that tiny binary is amazing.
And the performance of Go means that you’re not really losing anything when you’re coming from another language. In fact, compared to Python or Ruby, you’re gaining quite a bit of speed. And in terms of Java’s performance, goes on par or a little bit faster, maybe a little bit slower, depending on the workload. But that tiny binary size makes it really awesome in the cloud. Pulling a 10mb Docker file, or shipping a 10mb binary, with significantly less resources and in significantly less time than it would be to pull that GB huge Docker file.
Q: Are there scenarios where Go isn’t the best or preferred option?
A: Most of the use cases for Go, where it doesn’t work as well, I would say center on the client side. I wouldn’t use Go today to build a desktop application. It can be done—but it’s not as easy. So, Go is definitely more centered on the server. And it’s great for building network services, it’s great for building web applications, APIs, microservices, anything that talks over the network – Go’s great for that.
Q: Can you tell us a little bit more about the Go community and what their role has been in the trajectory of Go.
A: Go came from the founders of C—a lot of people who are working at Google right now. Google continues to provide valued support and sponsorship, but it’s been really amazing to watch over the years as the community has grown far beyond the company. There’s people leading the community from every corner of the globe and it’s great to see something that has a life of its own spring out of a project like that.
It would appear just by looking at GitHub that there are roughly 1,000 people across the globe that have contributed to the central Go project itself. Outside of just the Go project, there are an estimated 500,000 to 750,000 Go developers and we really don’t know the size of that because of the population of China that we just haven’t been able to measure well yet. Certainly, a lot of people across the world using Go.
Q: What is Microsoft doing with Go?
A: Microsoft is using Go internally to power pieces of the Azure infrastructure, like AKS [Azure Container Service]. For customers, Go is definitely a first-class citizen on Azure – you can use Go to make calls to the Azure SDK and provision services and infrastructure. You can also use Go to call into those services and consume things like Cosmos DB, other databases, message queues, any of the services that Microsoft provides. The Azure team has been investing in a great experience for Go developers.
One of the advantages of using Go with Azure, I think, is the speed at which you can develop—the speed at which Go executes. It’s a really fast language. And that awesome ability to create a single static binary: you don’t have the craziness of worrying about dependencies when you build your applications with Go.
Q: Where do you see Go headed in the future?
A: I think Go will continue its trajectory of growth. I think, eventually, Go will be the first choice for people who are doing things on the server side. There are definitely projects for mobile development and desktop development in Go that is starting now. I’d love to see them mature more and make Go a little easier to use when there’s a user interface involved.
I love the fact that companies like Microsoft are both adopting and supporting Go so nicely. One of the things that I absolutely adore is the Visual Studio Code extension for Go, written by Microsoft. I think Visual Studio Code is the easiest and best place to write Go code and that’s awesome, I really love the fact that Microsoft has thrown so much work behind this great language. It makes my life easier. I think it won’t be long before Go is the dominant platform for building server-side applications. If we’re not already there, we’re on a trajectory to do that shortly and I don’t see a downside in the long term for Go.