Your SlideShare is downloading. ×
0
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Gripshort
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Gripshort

962

Published on

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

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

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

No Downloads
Views
Total Views
962
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Realtime by proxy Justin Karneges justin@fanout.io @jkarneges
  • 2. About me ● Founder of Fanout.io ● Livefyre, realtime commenting ● Psi IM ● Standards involvements (XSF, IETF) ● Keywords: realtime, network protocols, federation, open standards
  • 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. Today
  • 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. Architecture
  • 7. Address the bottleneck (add proxy nodes, not app nodes)
  • 8. Generic Realtime Intermediary Protocol (GRIP) ● Open standard ● Flexible enough for developing any API ● Works with any web framework
  • 9. GRIP flow
  • 10. GRIP flow
  • 11. GRIP flow
  • 12. GRIP flow
  • 13. GRIP flow
  • 14. GRIP flow
  • 15. GRIP flow
  • 16. GRIP flow
  • 17. GRIP flow
  • 18. GRIP instructions Content-Type: application/grip-instruct { } "hold": { "mode": "response", "channels": [ { "name": "mychannel" } ] }, "response": { "body": "{}n" }
  • 19. GRIP hold modes ● ● response: publish whole HTTP responses stream: specify partial HTTP response, then publish HTTP body fragments
  • 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. Future ● Advanced use-cases, authentication, caching ● More implementations (Nginx? HAProxy?) ● GRIP for Websockets?
  • 22. Realtime by proxy ● Email: justin@fanout.io ● Twitter: @jkarneges ● Pushpin: https://github.com/fanout/pushpin

×