Last week I had the pleasure of attending the GolangVan Meetup, the Vancouver group devoted to all things Go. Hootsuite graciously hosted 44 gophers to celebrate the release of 1.8 – it was great to see the interest and growth of Go in the Vancouver tech community. This was one of over 70 release parties world-wide. The group was very welcoming and it was great to see all the local companies using Go and hearing of their experiences.
The conference was organized into two parts: an introduction into the features in Go 1.8 and an “unconference” where everyone brainstormed and then voted on various Go topics to discuss in groups.
Intro to Go 1.8
To kick things off, Mike Sample, Director of Technology at Hootsuite, presented a high-level introduction to Go 1.8. Two key highlights of this release mentioned:
- when using cgo the overhead for these calls has been cut in half for 1.8. This should also benefit some of the database packages that rely on cgo.
- Garbage collection pauses are now down to the microsecond level, which keeps applications running smoothly, and keeps the “stop the world” pauses to a minimum.
I didn’t take notes on all the slides, but there are several overviews on the web, and of those I recommend Dave Cheney’s slides.
The unconference took up the bulk of the meetup. There were four topics and of those four, I attended two sessions that were important to enterprise Go developers. The first was “Go in Production” where local companies shared their experiences and asked questions about using Go in production. Some of these companies included Hootsuite, Mozilla, Koho, Progressa, and Heroku. There were several other companies there that are either experimenting and/or working with Go including Amazon, Picatic, Mediative, and Bench Accounting. It was great to see the diversity of companies and uses where Go is making an impact. It bodes incredibly well for its future stickiness and longevity.
For those using Go in production, it appeared that everyone was using it with Docker. This is interesting because given the statically compiled nature of Go, you could deploy the binary directly without the need for a container. However, it appears that container workflows and orchestration platforms such as Kubernetes are proving highly compelling here. There were differences mentioned in whether companies were deploying one container per server or many, it seems to depend on the load profile. Another issue that was brought up is distributed logging being very hard to do. No one mentioned Kafka as a potential solution, but it fits the bill quite well for log aggregation.
Speaking to some of Go’s strengths, most are using it for its performance characteristics and single binary compilation. A key statistic mentioned by one of the participants was that getting new developers productive on Go was 3-4X faster than with Scala. One other advantage I heard was because it is “Go all the way down” you can dig as deep as you need to figure something out and don’t have to switch to a different language (like C, for example, for many languages). Go is written in Go.
In regards to popular packages, most use the standard library for testing, but there are a few companies using the Testify package (assert in particular). Also, proponents of Behaviour Driven Development are making use of the Ginkgo package. BDD seems to be gaining in popularity as it’s one of the questions I received at the Python webinar I did last month.
The second session I attended was “Dependency Management.” The group was split between gb, glide, govendor and the vendoring functionality provided standard in Go. A strong case was made that gb is the best of the bunch since it’s project-centric, and will nest directories. Others said the thematic Go approach is to just vendor everything. While no resolution was reached, the discussion was lively and helped everyone appreciate the different sides of the issue. There was also some interest in the dep project, the community initiative to solve the dependency problem, and the team here at ActiveState are watching this one with great interest.
I also discussed the upcoming ActiveGo beta release (scheduled to be released in March) with several attendees and got a mostly enthusiastic response. Most understood the value for enterprises and were especially excited by providing packages pre-built with items such as the Caddy web server, the errors package, and other “mandatory” items for Go developers.
I look forward to future meetups where we can share what we are working on in the Go space and supporting the Go community both locally and internationally.
Stay up-to-date about ActiveGo. Check out the latest news.
Gopher Image by Renee French