• Conversations synced across devices • Simple, powerful native apps • Integrated with Salesforce • Send files, photos, video Cotap: mobile messaging for business
as transmitting the data • Latency between sending and receiving message as low as sending text • Delivery time should remain constant as number of recipients grows • One-to-many delivery with dozens of resolutions (phone, tablet, web, desktop)
of configurable size • Data is cached and transmitted using Protocol Buffers • No `set` or `expire`: once filled, data is immutable • If remote node can’t be reached, key is filled locally
// ... http.ServeContent(w, r, “original-sm.jpg”, modTime, bytes.NewReader(data)) • local memory cache • peer's memory cache • local computed value • peer’s computed value Filled from one of:
“cold storage” • Small groupcache group in front of originals • Images resized in-process using OpenCV (w/ cgo) • Larger groupcache in front of resized images • Finally: CDN in front of outermost groupcache
is included in peer list, update peer lists as quickly as possible • Getter function inconsistency • Cache memory usage: leave enough headroom • Deadlocks: strict timeouts on cache getter functions • Cold cluster: use rolling restarts when upgrading