Ducksboard - A real-time data oriented webservice architecture

66
Ducksboard a real-time data oriented webservice architecture [email protected] @aitorciki on twitter

description

Talk by @aitorciki at BcnDevCon'11.

Transcript of Ducksboard - A real-time data oriented webservice architecture

Page 1: Ducksboard - A real-time data oriented webservice architecture

Ducksboarda real-time data orientedwebservice architecture

[email protected]@aitorciki on twitter

Page 2: Ducksboard - A real-time data oriented webservice architecture

What is Ducksboard?

Page 3: Ducksboard - A real-time data oriented webservice architecture

● it's a web-based dashboard...

What is Ducksboard?

Page 4: Ducksboard - A real-time data oriented webservice architecture

● it's a web-based dashboard...

● to display SaaS / your own metrics...

What is Ducksboard?

Page 5: Ducksboard - A real-time data oriented webservice architecture

● it's a web-based dashboard...

● to display SaaS / your own metrics...

● with heavy focus on UX...

What is Ducksboard?

Page 6: Ducksboard - A real-time data oriented webservice architecture

● it's a web-based dashboard...

● to display SaaS / your own metrics...

● with heavy focus on UX...

● huge bet on REAL real-time updates...

What is Ducksboard?

Page 7: Ducksboard - A real-time data oriented webservice architecture

● 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!

What is Ducksboard?

Page 8: Ducksboard - A real-time data oriented webservice architecture

Architectural Goals

Page 9: Ducksboard - A real-time data oriented webservice architecture

● data grabber / visualizer independence

Architectural Goals

Page 10: Ducksboard - A real-time data oriented webservice architecture

● data grabber / visualizer independence

● real-time updates (push vs pull)

Architectural Goals

Page 11: Ducksboard - A real-time data oriented webservice architecture

● data grabber / visualizer independence

● real-time updates (push vs pull)

● scalability (web scale, bitches!)

Architectural Goals

Page 12: Ducksboard - A real-time data oriented webservice architecture

● data grabber / visualizer independence

● real-time updates (push vs pull)

● scalability (web scale, bitches!)

● eat your own duck food

Architectural Goals

Page 13: Ducksboard - A real-time data oriented webservice architecture

Architecture Concepts

Page 14: Ducksboard - A real-time data oriented webservice architecture

● Back-end (Twisted)

Architecture Concepts

Page 15: Ducksboard - A real-time data oriented webservice architecture

● Back-end (Twisted)

● Parser: obtains data from external services

Architecture Concepts

Page 16: Ducksboard - A real-time data oriented webservice architecture

● Back-end (Twisted)

● Parser: obtains data from external services

● Gateway: stores data

Architecture Concepts

Page 17: Ducksboard - A real-time data oriented webservice architecture

● Back-end (Twisted)

● Parser: obtains data from external services

● Gateway: stores data

● API: provides read access to stored data

Architecture Concepts

Page 18: Ducksboard - A real-time data oriented webservice architecture

● Front-end

Architecture Concepts

Page 19: Ducksboard - A real-time data oriented webservice architecture

● Front-end

● web application

Architecture Concepts

Page 20: Ducksboard - A real-time data oriented webservice architecture

● Front-end

● web application

● mobile web application (not yet available)

Architecture Concepts

Page 21: Ducksboard - A real-time data oriented webservice architecture

● Front-end

● web application

● mobile web application (not available)

● mobile / desktop apps?

Architecture Concepts

Page 22: Ducksboard - A real-time data oriented webservice architecture

Common Components

Page 23: Ducksboard - A real-time data oriented webservice architecture

● PostgreSQL (the “DB”)

Common Components

Page 24: Ducksboard - A real-time data oriented webservice architecture

● PostgreSQL (the “DB”)

● stores application configuration

Common Components

Page 25: Ducksboard - A real-time data oriented webservice architecture

● PostgreSQL (the “DB”)

● stores application configuration

● stores data for historic queries

Common Components

Page 26: Ducksboard - A real-time data oriented webservice architecture

● PostgreSQL (the “DB”)

● stores application configuration

● stores data for historic queries

● starts / stops components (PL/Python!)

Common Components

Page 27: Ducksboard - A real-time data oriented webservice architecture

● RabbitMQ (the “queue”)

Common Components

Page 28: Ducksboard - A real-time data oriented webservice architecture

● RabbitMQ (the “queue”)

● handles RT updates

Common Components

Page 29: Ducksboard - A real-time data oriented webservice architecture

● RabbitMQ (the “queue”)

● handles RT updates

● simplifies publisher / consumer scenarios

Common Components

Page 30: Ducksboard - A real-time data oriented webservice architecture

Architecture Overview

Page 31: Ducksboard - A real-time data oriented webservice architecture

Backend Components: Parser

Page 32: Ducksboard - A real-time data oriented webservice architecture

● a parser per service and user

Backend Components: Parser

Page 33: Ducksboard - A real-time data oriented webservice architecture

● a parser per service and user

● many API models supported (RT preferred)

Backend Components: Parser

Page 34: Ducksboard - A real-time data oriented webservice architecture

● a parser per service and user

● many API models supported (RT preferred)

● configuration stored in the DB

Backend Components: Parser

Page 35: Ducksboard - A real-time data oriented webservice architecture

● 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

Backend Components: Parser

Page 36: Ducksboard - A real-time data oriented webservice architecture

Backend Components: Gateway

Page 37: Ducksboard - A real-time data oriented webservice architecture

● stores data in the DB for persistence

Backend Components: Gateway

Page 38: Ducksboard - A real-time data oriented webservice architecture

● stores data in the DB for persistence

● pushes data to the queue for RT notifications

Backend Components: Gateway

Page 39: Ducksboard - A real-time data oriented webservice architecture

● stores data in the DB for persistence

● pushes data to the queue for RT notifications

● receives updates from all the parsers

Backend Components: Gateway

Page 40: Ducksboard - A real-time data oriented webservice architecture

● 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

Backend Components: Gateway

Page 41: Ducksboard - A real-time data oriented webservice architecture

Backend Components: API

Page 42: Ducksboard - A real-time data oriented webservice architecture

● gets historic data from the DB and ...

Backend Components: API

Page 43: Ducksboard - A real-time data oriented webservice architecture

● gets historic data from the DB and ...

● … RT updates from the queue

Backend Components: API

Page 44: Ducksboard - A real-time data oriented webservice architecture

● gets historic data from the DB and ...

● … RT updates from the queue

● exposes HTTP interface for data retrieval

Backend Components: API

Page 45: Ducksboard - A real-time data oriented webservice architecture

● gets historic data from the DB and ...

● … RT updates from the queue

● exposes HTTP interface for data retrieval

● exposes Websocket server for RT updates

Backend Components: API

Page 46: Ducksboard - A real-time data oriented webservice architecture

Frontend Components: WebApp

Page 47: Ducksboard - A real-time data oriented webservice architecture

● Django application

Frontend Components: WebApp

Page 48: Ducksboard - A real-time data oriented webservice architecture

● Django application

● Nginx + uWSGI

Frontend Components: WebApp

Page 49: Ducksboard - A real-time data oriented webservice architecture

● Django application

● Nginx + uWSGI

● uses the DB as a normal webapp (SQLAlchemy)

Frontend Components: WebApp

Page 50: Ducksboard - A real-time data oriented webservice architecture

● Django application

● Nginx + uWSGI

● uses the DB as a normal webapp (SQLAlchemy)

● Celery handles async operations

Frontend Components: WebApp

Page 51: Ducksboard - A real-time data oriented webservice architecture

● Backbone.js empowers the UI

Frontend Components: WebApp

Page 52: Ducksboard - A real-time data oriented webservice architecture

● Backbone.js empowers the UI

● Raphaël draws the widgets

Frontend Components: WebApp

Page 53: Ducksboard - A real-time data oriented webservice architecture

● Backbone.js empowers the UI

● Raphaël draws the widgets

● a little bit of jQuery everywhere :)

Frontend Components: WebApp

Page 54: Ducksboard - A real-time data oriented webservice architecture

● Backbone.js empowers the UI

● Raphaël draws the widgets

● a little bit of jQuery everywhere :)

● Websocket or Flash fallback for RT updates

Frontend Components: WebApp

Page 55: Ducksboard - A real-time data oriented webservice architecture

Architecture Overview

Page 56: Ducksboard - A real-time data oriented webservice architecture

Scale (or die trying)

Page 57: Ducksboard - A real-time data oriented webservice architecture

● every component is standalone (no code deps)

Scale (or die trying)

Page 58: Ducksboard - A real-time data oriented webservice architecture

● every component is standalone (no code deps)

● components talk using HTTP (Nginx + DNS win!)

Scale (or die trying)

Page 59: Ducksboard - A real-time data oriented webservice architecture

● every component is standalone (no code deps)

● components talk using HTTP (Nginx + DNS win!)

● RabbitMQ allows m-gateways / n-apis scenarios

Scale (or die trying)

Page 60: Ducksboard - A real-time data oriented webservice architecture

Security

Page 61: Ducksboard - A real-time data oriented webservice architecture

● HTTPS everywhere

Security

Page 62: Ducksboard - A real-time data oriented webservice architecture

● HTTPS everywhere

● pgcrypto to provide credentials encryption

Security

Page 63: Ducksboard - A real-time data oriented webservice architecture

● HTTPS everywhere

● pgcrypto to provide credentials encryption

● bcrypted webapp passwords

Security

Page 64: Ducksboard - A real-time data oriented webservice architecture

● HTTPS everywhere

● pgcrypto to provide credentials encryption

● bcrypted webapp passwords

● relational integrity ensures data sanity

Security

Page 65: Ducksboard - A real-time data oriented webservice architecture

Well, that's it! Questions?

Page 66: Ducksboard - A real-time data oriented webservice architecture

Thanks for listening!and buying ;)