Feb 29, 2012

Go usage at Google

Go is an interesting language moving towards its first release Go 1. And it's really exciting to see how it gets better each weekly release. But so far there are only few projects known where Go is used for real productive software (here is a first list containing also my employer Canonical). And it would be helpful to know that Google itself trusts in Go for their systems.

One first step has been the adding of Go to the Google App Engine, another one the usage of Go for the code search. Sadly that service has been shut down. But now they presented vitess, a project for the scaling of MySQL. And it's no theoretical project, it's used at YouTube.

There are also two interesting quotes by the developers why they've chosen Go:
"Go is miles ahead of C++ and Java in terms of expressibility and close in terms of performance. It is also relatively simple and has a straightforward interaction with Linux system calls."
It's the same experience I made using Go in professional and personal projects. But the next quote shows the importance of the improvement of the garbage collector:
"The main drawback is also its strength - the garbage collector. vtocc has made spot optimizations to minimize most of the adverse effects of Go’s stop-the-world gc. At this point, we are trading some amount of performance for greater creativity and efficiency at lower layers. unless you’re trying to max out on qps for your servers, you should see acceptable performance from vtocc. Also, go’s garbage collector is being improved. So, this should only get better over time. Go’s existing mark-and-sweep garbage collector is sub-optimal for systems that use large amounts of static memory (like caches). In the case of vtocc, this would be the row cache. To alleviate this, we intend to use memcache for the time being. If the gc ends up addressing this, it should be fairly trivial to switch to an in-memory row cache. Note that the row cache functionality is not fully ready yet."
Here I'm really looking forward to the next releases.

No comments:

Post a Comment