- Priyanka Sharma
The GoSF meetup at Heavybit on June 20, 2016 had a diverse set of talks showcasing the strength of Go for early development efforts as well as building and maintaining complex distributed systems. There were three talks. Arun Thampi described building scalable Slack bots with Go, Greg Poirer talked about Taming Dependencies, and finally Ben Sigelman, who built Dapper, talked about standardizing distributed tracing instrumentation with OpenTracing. In this post I will give a brief recap of the talks along with full videos for those who want more details.
Building Scalable Slack Bots with Go
Arun’s talk about building Slack bots using Go provided a helpful contrast between Ruby and Go. Arun discussed how he made the choice to utilize the two languages together for his product. As a Ruby developer he wanted to maintain the main app in it. But when you are maintaining thousands of concurrent connections to Slack teams that have installed your bot (a good problem to have :-)), Ruby and many other options like Python, Node.js get expensive. So he used Go to do the plumbing behind connecting to Slack and relaying the messages across and let the app be Ruby. Now he does not have to worry about the infrastructure costs and can focus on building out his business.
The taming dependencies talk focused on how the Opsee team handles internal communication around gRPC and protobuf. Greg discussed how they are now gRPC interface version independent by breaking up where the protobuf spec files are saved. An interesting side topic of the discussion was how Opsee is strongly committed to Go. The product is built almost entirely in it. While this may seem extreme, being focused has made them incredibly proficient and effective with the language. Their Go skills makes them lightening fast, as a startup needs to be.
Turnkey Distrubuted Tracing: OpenTracing & Go
The final talk was on the distributed tracing standard, OpenTracing. Ben Sigelman created Dapper at Google and is now a proponent of OpenTracing, a set of vendor-neutral APIs for context propagation. The talk discussed the reason why distributed tracing is not ubiquitous despite being the only solution for visibility into highly concurrent, microservices based architectures. It’s because there is no standardization for instrumentation.
He discussed further how Go was such a great language for OpenTracing because concurrency was the rule, not the exception. That means you need to care about visibility into complex request journeys very quickly. With Go, it is essential to have a good story on tracing to get a decent signal to noise ratio at the process level. Culturally as well, people tend to develop Go applications in the context of decoupled architectures. The OpenTracing-Go demo displayed real-time traces using Appdash, Sourcegraph’s open source tracer.
The meetup was time extremely well spent, and if you find these videos useful, please share them so others can benefit. Sign up here to attend the next GoSF Meetup, and check out the Heavybit Events page for a full calendar of developer-focused events.