Gripshort

1,398 views

Published on

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

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,398
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

×