Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scaling GraphQL Subscriptions for Real-Time Das...

Scaling GraphQL Subscriptions for Real-Time Dashboards

In this talk, I'm presenting how GraphQL Subscriptions helped to build the real-time dashboards and how we scaled the implementation of GraphQL Subscriptions

Avatar for VimalRaj Selvam

VimalRaj Selvam

June 21, 2019

Other Decks in Technology

Transcript

  1. AGENDA ▸ Real time dashboard? ▸ Grafana and its pull-based

    model ▸ Need for push-based model ▸ GraphQL Subscriptions at rescue ▸ Highly Scalable GraphQL Subscription Architecture
  2. PULL BASED MODEL (CONTD…) Query every 5s ▸ 1 Dashboard

    = 10 Panels ▸ Refresh rate = 5 seconds ▸ 100 users x 10 Panels = 1000 req. per 5s ▸ 1 request = 10 KB => 1000 requests = 10 MB WHAT WE NEED THEN? Push Data to Client => Web Sockets
  3. GRAPHQL SUBSCRIPTIONS ▸ Server sends data to subscribed clients when

    some event occurs ▸ Over the Websockets DEMO
  4. HIGHLY SCALABLE GRAPHQL SUBSCRIPTIONS ARCHITECTURE LOAD BALANCER GraphQL Subscriptions Server

    Query Every 5s Websocket ▸ 1 Dashboard = 10 Panels ▸ 3 servers = 3 req. / 5s ▸ 100 users x 10 Panels = 3 req. / 5s ▸ 1 request = 10 KB => 3 requests = 30 KB Calls to Data sources are redundant
  5. HIGHLY SCALABLE GRAPHQL SUBSCRIPTIONS ARCHITECTURE LOAD BALANCER GraphQL Subscriptions Server

    Query Every 5s Websocket Worker PUBLISH SUBSCRIBE ▸ 1 Dashboard = 10 Panels ▸ 3 servers = 1 req. / 5s ▸ 100 users x 10 Panels = 1 req. / 5s ▸ 1 request = 10 KB
  6. HIGHLY SCALABLE GRAPHQL SUBSCRIPTIONS ARCHITECTURE Worker Master Worker Worker Slave

    Slave Register as a Master with TTL Compete for Master