Comments:"devHell: The Reliability of Go"
URL:http://andrewwdeane.blogspot.com/2013/05/the-reliability-of-go.html
After the talk an audience member asked if Go was reliable. Having used Go in production for coming up to three years now, without incident, this came as a bit of a surprise to me. Prior to moving to Canonical I worked for one of the UK's largest market makers. A market maker is basically a wholesaler for institutional share traders and stock brokers. During my time there I replaced several key systems components with Go.
System monitoring.
The services within the system were
monitored by a python script, pinging each node, discovering
services, connecting the networking dots, checking health etc. Due to
the complex nature of the system this script could take up to three
minutes to scan nodes and process the results. The script would often
stall whilst processing the vast amounts of data produced. After
porting the script to Go the runtime was reduced to under one second,
and we never saw a single stall when processing.
Data store.
A
legacy relational database was replaced with a Go based key/value
store to remove bottlenecks at market open. This service is now the
key piece of architecture in the system, processing all inbound and
outbound quotes/orders to and from the London Stock Exchange, the
Multi-lateral Trading Facilities, and key exchanges across Europe.
This service processes instructions at an average of 7 microseconds
(actually, 6 under Go1.1), and never once failed, even at peaks,
processing tens of thousands of instructions per second. Go is
currently providing key infrastructure components within the finance
industry.
As I left my old position I was in the process of swapping the messaging middleware and the third-party price feeds with services written in Go.