Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Gripshort

1,439 views

Published on

Justin Karneges' presentation at http://www.meetup.com/SF-Bay-Area-Large-Scale-Production-Engineering/events/137185282/

Published in: Technology
  • Be the first to comment

Gripshort

  1. 1. Realtime by proxy Justin Karneges justin@fanout.io @jkarneges
  2. 2. About me ● Founder of Fanout.io ● Livefyre, realtime commenting ● Psi IM ● Standards involvements (XSF, IETF) ● Keywords: realtime, network protocols, federation, open standards
  3. 3. Realtime HTTP APIs today ● Long-polling or streaming ● Written “by hand” (for full control) ● Possibly separate from non-realtime parts ● Backed by publish-subscribe ● Specific to vendor/application
  4. 4. Today
  5. 5. Pushpin ● HTTP proxy server with realtime magic ● Mongrel2 and ZeroMQ under the hood ● REST interface for controlling ● On GitHub: https://github.com/fanout/pushpin
  6. 6. Architecture
  7. 7. Address the bottleneck (add proxy nodes, not app nodes)
  8. 8. Generic Realtime Intermediary Protocol (GRIP) ● Open standard ● Flexible enough for developing any API ● Works with any web framework
  9. 9. GRIP flow
  10. 10. GRIP flow
  11. 11. GRIP flow
  12. 12. GRIP flow
  13. 13. GRIP flow
  14. 14. GRIP flow
  15. 15. GRIP flow
  16. 16. GRIP flow
  17. 17. GRIP flow
  18. 18. GRIP instructions Content-Type: application/grip-instruct { } "hold": { "mode": "response", "channels": [ { "name": "mychannel" } ] }, "response": { "body": "{}n" }
  19. 19. GRIP hold modes ● ● response: publish whole HTTP responses stream: specify partial HTTP response, then publish HTTP body fragments
  20. 20. Realtime is no longer “special” ● Any web framework ● Any endpoints ● No need to split realtime/non-realtime ● Existing facilities continue to work within a realtime context (e.g. lovely Django error pages).
  21. 21. Future ● Advanced use-cases, authentication, caching ● More implementations (Nginx? HAProxy?) ● GRIP for Websockets?
  22. 22. Realtime by proxy ● Email: justin@fanout.io ● Twitter: @jkarneges ● Pushpin: https://github.com/fanout/pushpin

×