Break it down • Human Readable/Writable (Well certain humans) • Parsers/Clients for every Language • Relatively Fast • Has a few explicit types (String, #, Bool) • Compared to XML/SOAP, Relatively Compact
Downsides • Encoded output is not human readable (does that matter?) • Ruby encoding/decoding is not fast (it’s not that slow - wire matters more) • Ruby libraries are not the best (Support for other languages is great, though)
The simplest thing I could possibly think of within the bounds of NIH syndrome. TCPEZ http://github.com/paperlesspost/tcpez http://github.com/paperlesspost/tcpez-client
TCPEZ • Client -> Server (Req/Resp) • So far Go server + Ruby client • Client is the load balancer • Request and Response encoding/decoding are not part of the protocol. • Each tcpez based project defines its own Request/ Response and these can be in any format • Built in by default: Good logging, Statsd, Protocol Buffers, Pipelined requests!