SlideShare une entreprise Scribd logo
1  sur  66
Télécharger pour lire hors ligne
Ducksboard
a real-time data oriented
webservice architecture



             aitor@ducksboard.com
                @aitorciki on twitter
What is Ducksboard?
What is Ducksboard?

●
    it's a web-based dashboard...
What is Ducksboard?

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

●
    to display SaaS / your own metrics...
What is Ducksboard?

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

●
    to display SaaS / your own metrics...

●
    with heavy focus on UX...
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...
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!
Architectural Goals
Architectural Goals

●
    data grabber / visualizer independence
Architectural Goals

●
    data grabber / visualizer independence

●
    real-time updates (push vs pull)
Architectural Goals

●
    data grabber / visualizer independence

●
    real-time updates (push vs pull)

●
    scalability (web scale, bitches!)
Architectural Goals

●
    data grabber / visualizer independence

●
    real-time updates (push vs pull)

●
    scalability (web scale, bitches!)

●
    eat your own duck food
Architecture Concepts
Architecture Concepts

●
    Back-end (Twisted)
Architecture Concepts

●
    Back-end (Twisted)

     ●
         Parser: obtains data from external services
Architecture Concepts

●
    Back-end (Twisted)

     ●
         Parser: obtains data from external services

     ●
         Gateway: stores data
Architecture Concepts

●
    Back-end (Twisted)

     ●
         Parser: obtains data from external services

     ●
         Gateway: stores data

     ●
         API: provides read access to stored data
Architecture Concepts

●
    Front-end
Architecture Concepts

●
    Front-end

     ●
         web application
Architecture Concepts

●
    Front-end

     ●
         web application

     ●
         mobile web application (not yet available)
Architecture Concepts

●
    Front-end

     ●
         web application

     ●
         mobile web application (not available)

     ●
         mobile / desktop apps?
Common Components
Common Components

●
    PostgreSQL (the “DB”)
Common Components

●
    PostgreSQL (the “DB”)

     ●
         stores application configuration
Common Components

●
    PostgreSQL (the “DB”)

     ●
         stores application configuration

     ●
         stores data for historic queries
Common Components

●
    PostgreSQL (the “DB”)

     ●
         stores application configuration

     ●
         stores data for historic queries

     ●
         starts / stops components (PL/Python!)
Common Components

●
    RabbitMQ (the “queue”)
Common Components

●
    RabbitMQ (the “queue”)

     ●
         handles RT updates
Common Components

●
    RabbitMQ (the “queue”)

     ●
         handles RT updates

     ●   simplifies publisher / consumer scenarios
Architecture Overview
Backend Components: Parser
Backend Components: Parser

●
    a parser per service and user
Backend Components: Parser

●
    a parser per service and user

●
    many API models supported (RT preferred)
Backend Components: Parser

●
    a parser per service and user

●
    many API models supported (RT preferred)

●
    configuration stored in the DB
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
Backend Components: Gateway
Backend Components: Gateway

●
    stores data in the DB for persistence
Backend Components: Gateway

●
    stores data in the DB for persistence

●
    pushes data to the queue for RT notifications
Backend Components: Gateway

●
    stores data in the DB for persistence

●
    pushes data to the queue for RT notifications

●
    receives updates from all the parsers
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
Backend Components: API
Backend Components: API

●
    gets historic data from the DB and ...
Backend Components: API

●
    gets historic data from the DB and ...

●
    … RT updates from the queue
Backend Components: API

●
    gets historic data from the DB and ...

●
    … RT updates from the queue

●
    exposes HTTP interface for data retrieval
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
Frontend Components: WebApp
Frontend Components: WebApp

●
    Django application
Frontend Components: WebApp

●
    Django application

●
    Nginx + uWSGI
Frontend Components: WebApp

●
    Django application

●
    Nginx + uWSGI

●
    uses the DB as a normal webapp (SQLAlchemy)
Frontend Components: WebApp

●
    Django application

●
    Nginx + uWSGI

●
    uses the DB as a normal webapp (SQLAlchemy)

●
    Celery handles async operations
Frontend Components: WebApp

●
    Backbone.js empowers the UI
Frontend Components: WebApp

●
    Backbone.js empowers the UI

●
    Raphaël draws the widgets
Frontend Components: WebApp

●
    Backbone.js empowers the UI

●
    Raphaël draws the widgets

●
    a little bit of jQuery everywhere :)
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
Architecture Overview
Scale (or die trying)
Scale (or die trying)

●
    every component is standalone (no code deps)
Scale (or die trying)

●
    every component is standalone (no code deps)

●
    components talk using HTTP (Nginx + DNS win!)
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
Security
Security

●
    HTTPS everywhere
Security

●
    HTTPS everywhere

●
    pgcrypto to provide credentials encryption
Security

●
    HTTPS everywhere

●
    pgcrypto to provide credentials encryption

●
    bcrypted webapp passwords
Security

●
    HTTPS everywhere

●
    pgcrypto to provide credentials encryption

●
    bcrypted webapp passwords

●
    relational integrity ensures data sanity
Well, that's it! Questions?
Thanks for listening!
     and buying ;)

Contenu connexe

Tendances

Hw09 Next Steps For Hadoop
Hw09   Next Steps For HadoopHw09   Next Steps For Hadoop
Hw09 Next Steps For Hadoop
Cloudera, Inc.
 

Tendances (19)

Building distributed processing system from scratch - Part 2
Building distributed processing system from scratch - Part 2Building distributed processing system from scratch - Part 2
Building distributed processing system from scratch - Part 2
 
Understanding time in structured streaming
Understanding time in structured streamingUnderstanding time in structured streaming
Understanding time in structured streaming
 
Laskar: High-Velocity GraphQL & Lambda-based Software Development Model
Laskar: High-Velocity GraphQL & Lambda-based Software Development ModelLaskar: High-Velocity GraphQL & Lambda-based Software Development Model
Laskar: High-Velocity GraphQL & Lambda-based Software Development Model
 
RealTime Recommendations @Netflix - Spark
RealTime Recommendations @Netflix - SparkRealTime Recommendations @Netflix - Spark
RealTime Recommendations @Netflix - Spark
 
Automating using Ansible
Automating using AnsibleAutomating using Ansible
Automating using Ansible
 
[WSO2Con USA 2018] Deploying Applications in K8S and Docker
[WSO2Con USA 2018] Deploying Applications in K8S and Docker[WSO2Con USA 2018] Deploying Applications in K8S and Docker
[WSO2Con USA 2018] Deploying Applications in K8S and Docker
 
Balkan - data eng meetup - data fusion
Balkan - data eng meetup - data fusionBalkan - data eng meetup - data fusion
Balkan - data eng meetup - data fusion
 
SAIS2018 - Fact Store At Netflix Scale
SAIS2018 - Fact Store At Netflix ScaleSAIS2018 - Fact Store At Netflix Scale
SAIS2018 - Fact Store At Netflix Scale
 
Kotlin REST & GraphQL API
Kotlin REST & GraphQL APIKotlin REST & GraphQL API
Kotlin REST & GraphQL API
 
GraphQL is actually rest
GraphQL is actually restGraphQL is actually rest
GraphQL is actually rest
 
What Your Tech Lead Thinks You Know (But Didn't Teach You)
What Your Tech Lead Thinks You Know (But Didn't Teach You)What Your Tech Lead Thinks You Know (But Didn't Teach You)
What Your Tech Lead Thinks You Know (But Didn't Teach You)
 
CNCF opa
CNCF opaCNCF opa
CNCF opa
 
Putting the Spark into Functional Fashion Tech Analystics
Putting the Spark into Functional Fashion Tech AnalysticsPutting the Spark into Functional Fashion Tech Analystics
Putting the Spark into Functional Fashion Tech Analystics
 
2020 07-30 elastic agent + ingest management
2020 07-30 elastic agent + ingest management2020 07-30 elastic agent + ingest management
2020 07-30 elastic agent + ingest management
 
The magic behind your Lyft ride prices: A case study on machine learning and ...
The magic behind your Lyft ride prices: A case study on machine learning and ...The magic behind your Lyft ride prices: A case study on machine learning and ...
The magic behind your Lyft ride prices: A case study on machine learning and ...
 
Putting the Spark into Functional Fashion Tech Analystics
Putting the Spark into Functional Fashion Tech AnalysticsPutting the Spark into Functional Fashion Tech Analystics
Putting the Spark into Functional Fashion Tech Analystics
 
Hw09 Next Steps For Hadoop
Hw09   Next Steps For HadoopHw09   Next Steps For Hadoop
Hw09 Next Steps For Hadoop
 
Implementing GraphQL API in Elixir – Victor Deryagin
Implementing GraphQL API in Elixir – Victor DeryaginImplementing GraphQL API in Elixir – Victor Deryagin
Implementing GraphQL API in Elixir – Victor Deryagin
 
Building a custom time series db - Colin Hemmings at #DOXLON
Building a custom time series db - Colin Hemmings at #DOXLONBuilding a custom time series db - Colin Hemmings at #DOXLON
Building a custom time series db - Colin Hemmings at #DOXLON
 

Similaire à Ducksboard - A real-time data oriented webservice architecture

Similaire à Ducksboard - A real-time data oriented webservice architecture (20)

Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
Monitoring Big Data Systems Done "The Simple Way" - Codemotion Berlin 2017
Monitoring Big Data Systems Done "The Simple Way" - Codemotion Berlin 2017Monitoring Big Data Systems Done "The Simple Way" - Codemotion Berlin 2017
Monitoring Big Data Systems Done "The Simple Way" - Codemotion Berlin 2017
 
Using Event Streams in Serverless Applications
Using Event Streams in Serverless ApplicationsUsing Event Streams in Serverless Applications
Using Event Streams in Serverless Applications
 
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
 
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...
 
[WSO2Con EU 2018] The Rise of Streaming SQL
[WSO2Con EU 2018] The Rise of Streaming SQL[WSO2Con EU 2018] The Rise of Streaming SQL
[WSO2Con EU 2018] The Rise of Streaming SQL
 
Introduction to Data Engineer and Data Pipeline at Credit OK
Introduction to Data Engineer and Data Pipeline at Credit OKIntroduction to Data Engineer and Data Pipeline at Credit OK
Introduction to Data Engineer and Data Pipeline at Credit OK
 
Monitoring Big Data Systems Done "The Simple Way" - Codemotion Milan 2017 - D...
Monitoring Big Data Systems Done "The Simple Way" - Codemotion Milan 2017 - D...Monitoring Big Data Systems Done "The Simple Way" - Codemotion Milan 2017 - D...
Monitoring Big Data Systems Done "The Simple Way" - Codemotion Milan 2017 - D...
 
Demi Ben-Ari - Monitoring Big Data Systems Done "The Simple Way" - Codemotion...
Demi Ben-Ari - Monitoring Big Data Systems Done "The Simple Way" - Codemotion...Demi Ben-Ari - Monitoring Big Data Systems Done "The Simple Way" - Codemotion...
Demi Ben-Ari - Monitoring Big Data Systems Done "The Simple Way" - Codemotion...
 
Raising ux bar with offline first design
Raising ux bar with offline first designRaising ux bar with offline first design
Raising ux bar with offline first design
 
Sprint 78
Sprint 78Sprint 78
Sprint 78
 
IoT databases - review and challenges - IoT, Hardware & Robotics meetup - onl...
IoT databases - review and challenges - IoT, Hardware & Robotics meetup - onl...IoT databases - review and challenges - IoT, Hardware & Robotics meetup - onl...
IoT databases - review and challenges - IoT, Hardware & Robotics meetup - onl...
 
Creating PostgreSQL-as-a-Service at Scale
Creating PostgreSQL-as-a-Service at ScaleCreating PostgreSQL-as-a-Service at Scale
Creating PostgreSQL-as-a-Service at Scale
 
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKBigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
 
Dynomite @ RedisConf 2017
Dynomite @ RedisConf 2017Dynomite @ RedisConf 2017
Dynomite @ RedisConf 2017
 
Conquering the Lambda architecture in LinkedIn metrics platform with Apache C...
Conquering the Lambda architecture in LinkedIn metrics platform with Apache C...Conquering the Lambda architecture in LinkedIn metrics platform with Apache C...
Conquering the Lambda architecture in LinkedIn metrics platform with Apache C...
 
New enhancements for security and usability in EDB 13
New enhancements for security and usability in EDB 13New enhancements for security and usability in EDB 13
New enhancements for security and usability in EDB 13
 
Thinking DevOps in the era of the Cloud - Demi Ben-Ari
Thinking DevOps in the era of the Cloud - Demi Ben-AriThinking DevOps in the era of the Cloud - Demi Ben-Ari
Thinking DevOps in the era of the Cloud - Demi Ben-Ari
 
Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019
 
OSDC 2014: Devdas Bhagat - Graphite: Graphs for the modern age
OSDC 2014: Devdas Bhagat - Graphite: Graphs for the modern age OSDC 2014: Devdas Bhagat - Graphite: Graphs for the modern age
OSDC 2014: Devdas Bhagat - Graphite: Graphs for the modern age
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Dernier (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Ducksboard - A real-time data oriented webservice architecture