Last Friday – coincidentally pi day – we attended the Golang User Group meetup at the Hub:raum in Berlin. The Hub:raum cafe, which is a beautiful space filled with an eclectic mix of seventies inspired design, hosted us bunch, a little over 20 attendees.
After a 5 minutes presentation of the sponsor of the evening; Spiffy, ‘incubating’ a number of projects written in Go, Alexander Surma (@surmair) presented, GoPin – a tool-less version pinning for Go. Alexander described his package manager like a man in the middle between your app and Github, Bitbucket, et al. In the end, GoPin made way for gopkg, written by Gustave Niemeyer.
Table of Contents
Using IDEs for Go
Florin Patan (devops at motain GmbH) talked about the IntelliJ IDEA – a polyglot IDE – next and how to use for developing in Go. The arguments for using an IDE are apparent, says Florin. Smart Code completion, on-the-fly code analysis, advanced refactoring and version control tools.
The Go plugin for IntelliJ IDEA (written in Java) sports language parsing and highlighting, auto completion, documentation for functions, methods, variable, constants and types. Plus function parameter information, GoTo navigation, live code templates, code inspections, code folding and brace matching. And supports go get/fmt/run/build integration, go vet, code templates and file templates.
Go AppEngine integration is (better) supported in the upcoming release of IntelliJ’s Go plugin. The initial idea was to prepackage the plugin with a build of IntelliJ Community into a complete Go IDE. To stay up-to-date on ths topic, Florin recommends following go-ide.com.
Go and soccer
Motain started in 2008 and now employs 45 people and have over 13 million downloads over all platforms. They cover 100+ leagues in 9 languages and currently serve roughly 200 million requests on a weekend day. The challenges they face? Well, how about delivering 150+ feeds in 9 languages, 100+ incoming feeds to be processed as fast a possible and more languages and competitions coming up?!
Motain’s old stack consisted of plain PHP, symfony2, cron jobs, dedicated servers and sequential incoming feed processing (hence the cron jobs). Since they started migrating their code base to Go, Dirk claims much better results in less time and less resources needed. “The code quality increased and time needed for testing decreased. Plus, it’s very, very fast.”
For those of you interested in motain’s current stack, they use:
– seraph: client-like monitoring tools
– logalyzer: a cloudfront log parser
– eros (entity repository on steroids): high performance call cache
– terminator – test loading tool
… and various internal tools.
In the upcoming version of their scores backend they’ll migrate further away from their POP legacy code, they’ll start using gorp and read incoming fees from AMQP amongst other changes.
I loved the discussion after Dirk’s talk, between Go, Python, PHP, Java and Ruby developers on the merits and cons of switching to Go with your existing app and legacy code. I’m excited to see that discussion continued next month.