SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
Ducksboard - A real-time data oriented webservice architecture
3.
What is Ducksboard?
●
it's a web-based dashboard...
4.
What is Ducksboard?
●
it's a web-based dashboard...
●
to display SaaS / your own metrics...
5.
What is Ducksboard?
●
it's a web-based dashboard...
●
to display SaaS / your own metrics...
●
with heavy focus on UX...
6.
What is Ducksboard?
●
it's a web-based dashboard...
●
to display SaaS / your own metrics...
●
with heavy focus on UX...
●
huge bet on REAL real-time updates...
7.
What is Ducksboard?
●
it's a web-based dashboard...
●
to display SaaS / your own metrics...
●
with heavy focus on UX...
●
huge bet on REAL real-time updates...
●
and much more in the near future!
15.
Architecture Concepts
●
Back-end (Twisted)
●
Parser: obtains data from external services
16.
Architecture Concepts
●
Back-end (Twisted)
●
Parser: obtains data from external services
●
Gateway: stores data
17.
Architecture Concepts
●
Back-end (Twisted)
●
Parser: obtains data from external services
●
Gateway: stores data
●
API: provides read access to stored data
32.
Backend Components: Parser
●
a parser per service and user
33.
Backend Components: Parser
●
a parser per service and user
●
many API models supported (RT preferred)
34.
Backend Components: Parser
●
a parser per service and user
●
many API models supported (RT preferred)
●
configuration stored in the DB
35.
Backend Components: Parser
●
a parser per service and user
●
many API models supported (RT preferred)
●
configuration stored in the DB
●
obtained data sent to the gateway for storage
37.
Backend Components: Gateway
●
stores data in the DB for persistence
38.
Backend Components: Gateway
●
stores data in the DB for persistence
●
pushes data to the queue for RT notifications
39.
Backend Components: Gateway
●
stores data in the DB for persistence
●
pushes data to the queue for RT notifications
●
receives updates from all the parsers
40.
Backend Components: Gateway
●
stores data in the DB for persistence
●
pushes data to the queue for RT notifications
●
receives updates from all the parsers
●
exposes webservice for custom metrics
42.
Backend Components: API
●
gets historic data from the DB and ...
43.
Backend Components: API
●
gets historic data from the DB and ...
●
… RT updates from the queue
44.
Backend Components: API
●
gets historic data from the DB and ...
●
… RT updates from the queue
●
exposes HTTP interface for data retrieval
45.
Backend Components: API
●
gets historic data from the DB and ...
●
… RT updates from the queue
●
exposes HTTP interface for data retrieval
●
exposes Websocket server for RT updates
49.
Frontend Components: WebApp
●
Django application
●
Nginx + uWSGI
●
uses the DB as a normal webapp (SQLAlchemy)
50.
Frontend Components: WebApp
●
Django application
●
Nginx + uWSGI
●
uses the DB as a normal webapp (SQLAlchemy)
●
Celery handles async operations
51.
Frontend Components: WebApp
●
Backbone.js empowers the UI
52.
Frontend Components: WebApp
●
Backbone.js empowers the UI
●
Raphaël draws the widgets
53.
Frontend Components: WebApp
●
Backbone.js empowers the UI
●
Raphaël draws the widgets
●
a little bit of jQuery everywhere :)
54.
Frontend Components: WebApp
●
Backbone.js empowers the UI
●
Raphaël draws the widgets
●
a little bit of jQuery everywhere :)
●
Websocket or Flash fallback for RT updates
57.
Scale (or die trying)
●
every component is standalone (no code deps)
58.
Scale (or die trying)
●
every component is standalone (no code deps)
●
components talk using HTTP (Nginx + DNS win!)
59.
Scale (or die trying)
●
every component is standalone (no code deps)
●
components talk using HTTP (Nginx + DNS win!)
●
RabbitMQ allows m-gateways / n-apis scenarios