SlideShare a Scribd company logo
1 of 41
Download to read offline
Pascal Alberty 
@zorrobiwan 
CTO Managing Partner
History
RueDuWeb 
More than 50 web specialists 
About 20 companies or independent people
Where ?
Demo
Main Architecture 
● Front (Akimedia) 
○ Public Website 
○ Private Website 
○ Flash Animations 
○ Sessions configuration management 
● Back (Tesial) 
○ Sessions content management
Front - Key components (Akimedia) 
● CMS Akiwi (PHP) & 
MySQL database (MyISAM) 
○ Pubic Website 
○ Private Website (users, eCommerce 
● Flash animations 
○ Displaying messages and other features 
● “Manager” in PHP 
○ Communication between Animations/Front/Back
Back - Key Components (Tesial) 
● Engine 
○ Java web application 
○ API used by Front for data management 
■ sessions, tweets, moderation, tweetos,... 
● Batch 
○ Java web application 
○ Formerly grabbing Tweets 
○ Grabbing pictures (avatars & medias)
Technical Infrastructure 
● Front/Back Server 
● DB Servers 
○ Front / Back 
○ Replication (fail over) 
● Dev Server 
○ dev (front / back) 
○ pré-prod (front / back)
SVN 
● KISS 
● dev = trunk 
● pre-prod = branch 
● prod = tag on branch or trunk 
● front = release by switch 
● back = release by packaging
Back Software Architecture 
Maven 2 
Spring 3.1 
Hibernate 3.2 
ehcache 1.5 
Twitter4J 3 
Maya 0.2 
...
Back Software Architecture 
● DTO & DAO 
○ Data Structure & persistence 
■ session, tweet, tweetos, hashtags, ... 
● Services 
○ Business functionalities 
○ Transaction management 
● Clients 
○ Engine 
○ Batches
Engine 
● Java Web Application 
● API REST 
○ CRUD operations 
● Used by Front for data management 
● Call Services layer
Batches 
● Java Web Application 
● Quartz Jobs 
○ Formerly Tweets Grabbing 
○ Avatars Grabbing 
○ Pictures Grabbing 
● Call Services Layer
Challenges 
● Scalability 
○ SaaS and Agency are growing 
● Twitter 
○ New technical and business constraints 
● Product 
○ Must evolve by integrating other social networks
Twitter API 
● Let’s talk about Twitter API
Twitter APIs 
● APIs 
○ Search API 
○ REST API 
○ Streaming API 
○ https://dev.twitter.com/docs/history-rest-search-api 
● Versions 
○ API version 1 (deprecated) 
○ API version 1.1
Rate limiting 
● Rate limit window duration 
○ 15 minutes 
● Requests allotted 
○ per user 
○ via application-only auth 
● Example 
○ GET statuses/user_timeline 
○ per user: 150 requests per 15 minutes 
○ via app: 300 requests per 15 minutes 
https://dev.twitter.com/docs/rate-limiting/1.1/limits
Other technical limits 
● Direct messages 
○ 250 per day 
● Tweets 
○ 1,000 per day 
○ Retweets are counted as Tweets. 
● Changes to account email 
○ Four per hour 
● Following 
○ 1,000 per day 
● Following (account-based) 
○ up to following 2,000 other users
Platform objects 
● Tweets can be found alone, within user objects, but 
most often within timelines 
● Users can be found tweeting, following, and 
favoriting on Twitter 
● Entities are most often found within Tweets 
● Places can be found throughout the natural universe, 
but typically only appear attached to Tweets on Twitter
Objects type 
● JSON ! 
● XML output will be dropped soon 
○ Only JSON output with API 1.1 
● Be careful with ids (64 bits) 
○ use String version (especially if using Javascript) 
○ Twitpocalypse 
■ https://dev.twitter.com/docs/twitter-ids-json-and-snowflake 
○ Idpocalypse 
■ https://dev.twitter.com/blog/64-bit-twitter-user-idpocalypse
Tweet Example 
https://api.twitter.com/1/statuses/show.json?id=341545927401680897&include_entities=true
User example 
https://api.twitter.com/1/users/show.json?screen_name=zorrobiwan&include_entities=true
Entities / Entity Example 
● Hashtags, Medias, URLs, User mentions, 
Symbols 
● No need to parse 
● Data used for display also (ex: display_url)
Place example 
https://api.twitter.com/1/geo/id/247f43d441defc03.json
Libraries 
● PHP 
○ Twitter-async (https://github.com/jmathai/twitter-async) 
○ tmhOAuth (https://github. 
com/themattharris/tmhOAuth) 
○ Zend Framework (http://framework.zend. 
com/manual/1.12/en/zend.service.twitter.html) 
● Java 
○ Twitter4J (http://twitter4j.org/) 
https://dev.twitter.com/docs/twitter-libraries
Twitter4J 
● Unofficial Java library for the Twitter API 
● 100% Pure Java (5+) 
● Android platform and Google App Engine 
ready 
● Zero dependency : No additional jars 
required 
● Built-in OAuth support 
● Out-of-the-box gzip support 
● 100% Twitter API 1.1 compatible
Tools 
● Twurl 
○ https://github.com/marcel/twurl 
○ "curl" for Twitter API 
○ Manage access tokens (authentication) 
● Apigee Console 
○ https://apigee.com/console 
○ Free console to execute APIs
Search API 
● Similar to http://search.twitter.com 
● Criteria 
○ terms 
○ geocode 
○ language ("Language detection is best-effort") 
○ count, until, since-id, max-id 
○ result type: mixed, recent, popular 
○ include entities 
● Paginated ! 
○ you have to manage this by yourself
REST API 
● Timelines 
● Tweets 
● Direct Messages 
● Friends & Followers 
● Users 
● Suggested Users 
● Favorites 
● Lists 
● Saved Searches 
● Places & Geo 
● Trends 
● Spam Reporting 
● OAuth 
● Help
Streaming API 
● Persistent HTTP connection 
○ until you decide to close it 
● Could be reeeeaaaaaaally huge ! 
○ Think about you architecture (hard and soft) ! 
○ Separate storage and consumption 
● Only one stream opened at a time 
● Could be tricky to managed 
○ Use a library
Streaming API endpoints groups 
● Public Streams 
○ GET statuses/sample 
○ POST statuses/filter 
○ GET statuses/firehose (limited access) 
● User Streams 
○ Data and events for a specific user 
● Site Streams (beta and limited access) 
○ Real time update for large number of users
About the challenges 
● Scalability 
● Twitter constraints 
● Product evolution 
=> Use of Twitter Stream API 
=> Other Social Networks integration 
=> Maya
Maya 
Abstraction layer for feed and 
post 
Used in TWP as the input source 
for media
Maya - General architecture 
Listener 
Listener 
Session 
Session
Maya - concepts 
● Post: content emitted on a (social) network 
by a user 
● Feed: a collection of posts matching a set of 
filters (PostFilter) 
● FeedOperator: the service to register, 
manage stop and restart feeds
Maya twitter plugin 
● Backed by Twitter4J 
● Rely on the live stream twitter API 
● Challenges 
○ Adding new feeds on the fly without losing any 
history 
○ Single channel for all feeds, need to identify to which 
feed(s) a tweet belongs to 
● Demo!
Front Evolutions 
● From Pull to Push 
○ NodeJS 
● Manager from PHP to JS 
○ NodeJS 
● HTML5 Animations
Next Improvements 
● Queuing traitement with SI 
○ Message traitement 
○ Medias grabbing and/or treatment 
● Adding other social networks 
● Better scalability - reliability - performance 
○ load balancing 
○ replication 
○ nginx 
○ ...
Q/A

More Related Content

Viewers also liked

Insight & Inspiration Snapshot
Insight & Inspiration SnapshotInsight & Inspiration Snapshot
Insight & Inspiration SnapshotLHBS
 
Fire Response - products catalogue
Fire Response - products catalogueFire Response - products catalogue
Fire Response - products catalogueNick Foran
 
Uma década da lei americana sarbanes oxley
Uma década da lei americana sarbanes oxleyUma década da lei americana sarbanes oxley
Uma década da lei americana sarbanes oxleyCarlos Ferreira
 
El combustible del futuro , adios al Grifo por Diesel
El combustible del futuro , adios al Grifo por DieselEl combustible del futuro , adios al Grifo por Diesel
El combustible del futuro , adios al Grifo por DieselJose Eulogio Llanos
 
Repositorios de tesis: Capacidad del sistema académico NEA para la generación...
Repositorios de tesis: Capacidad del sistema académico NEA para la generación...Repositorios de tesis: Capacidad del sistema académico NEA para la generación...
Repositorios de tesis: Capacidad del sistema académico NEA para la generación...Belarmina Benitez
 
10 manuales en la red sobre insercion laboral 1
10 manuales en la red sobre insercion laboral 110 manuales en la red sobre insercion laboral 1
10 manuales en la red sobre insercion laboral 1Alfredo Vela Zancada
 
Vuelve La Vida A su Caminito Del Rey
Vuelve La Vida A su Caminito Del Rey
Vuelve La Vida A su Caminito Del Rey
Vuelve La Vida A su Caminito Del Rey synonymouspaint11
 
Recomendaciones de lectura para el verano 2013
Recomendaciones de lectura para el verano 2013Recomendaciones de lectura para el verano 2013
Recomendaciones de lectura para el verano 2013Eduardo Rodríguez Herrera
 
Revista Españoles, número 41 Octubre 2009
Revista Españoles, número 41 Octubre 2009Revista Españoles, número 41 Octubre 2009
Revista Españoles, número 41 Octubre 2009Cext
 
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie."At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.Rahim Blak
 
Clean Energy from Sweden - Introducing InnoVentum
Clean Energy from Sweden - Introducing InnoVentum Clean Energy from Sweden - Introducing InnoVentum
Clean Energy from Sweden - Introducing InnoVentum Jeff Gallagher
 
Preview: The NEW 4-Hour Workweek
Preview: The NEW 4-Hour WorkweekPreview: The NEW 4-Hour Workweek
Preview: The NEW 4-Hour WorkweekTim Ferriss
 

Viewers also liked (17)

Insight & Inspiration Snapshot
Insight & Inspiration SnapshotInsight & Inspiration Snapshot
Insight & Inspiration Snapshot
 
Catalogo #YvesRocher Camp 7/2015 Venta Anual
Catalogo #YvesRocher Camp 7/2015 Venta AnualCatalogo #YvesRocher Camp 7/2015 Venta Anual
Catalogo #YvesRocher Camp 7/2015 Venta Anual
 
Fire Response - products catalogue
Fire Response - products catalogueFire Response - products catalogue
Fire Response - products catalogue
 
Uma década da lei americana sarbanes oxley
Uma década da lei americana sarbanes oxleyUma década da lei americana sarbanes oxley
Uma década da lei americana sarbanes oxley
 
El combustible del futuro , adios al Grifo por Diesel
El combustible del futuro , adios al Grifo por DieselEl combustible del futuro , adios al Grifo por Diesel
El combustible del futuro , adios al Grifo por Diesel
 
Repositorios de tesis: Capacidad del sistema académico NEA para la generación...
Repositorios de tesis: Capacidad del sistema académico NEA para la generación...Repositorios de tesis: Capacidad del sistema académico NEA para la generación...
Repositorios de tesis: Capacidad del sistema académico NEA para la generación...
 
10 manuales en la red sobre insercion laboral 1
10 manuales en la red sobre insercion laboral 110 manuales en la red sobre insercion laboral 1
10 manuales en la red sobre insercion laboral 1
 
W
WW
W
 
Vuelve La Vida A su Caminito Del Rey
Vuelve La Vida A su Caminito Del Rey
Vuelve La Vida A su Caminito Del Rey
Vuelve La Vida A su Caminito Del Rey
 
Intecnor
IntecnorIntecnor
Intecnor
 
Recomendaciones de lectura para el verano 2013
Recomendaciones de lectura para el verano 2013Recomendaciones de lectura para el verano 2013
Recomendaciones de lectura para el verano 2013
 
Revista Españoles, número 41 Octubre 2009
Revista Españoles, número 41 Octubre 2009Revista Españoles, número 41 Octubre 2009
Revista Españoles, número 41 Octubre 2009
 
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie."At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
 
Clean Energy from Sweden - Introducing InnoVentum
Clean Energy from Sweden - Introducing InnoVentum Clean Energy from Sweden - Introducing InnoVentum
Clean Energy from Sweden - Introducing InnoVentum
 
Preview: The NEW 4-Hour Workweek
Preview: The NEW 4-Hour WorkweekPreview: The NEW 4-Hour Workweek
Preview: The NEW 4-Hour Workweek
 
Manual de agencias_iata
Manual de agencias_iataManual de agencias_iata
Manual de agencias_iata
 
Inventos s xxi
Inventos s xxiInventos s xxi
Inventos s xxi
 

Similar to 20131008 - Wajug - TweetWall Pro

20130504 - FeWeb - Twitter API
20130504  - FeWeb - Twitter API20130504  - FeWeb - Twitter API
20130504 - FeWeb - Twitter APIPascal Alberty
 
Machine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systemsMachine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systemsZhenxiao Luo
 
Procella: A fast versatile SQL query engine powering data at Youtube
Procella: A fast versatile SQL query engine powering data at YoutubeProcella: A fast versatile SQL query engine powering data at Youtube
Procella: A fast versatile SQL query engine powering data at YoutubeDataWorks Summit
 
CON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project NashornCON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project NashornMichel Graciano
 
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop Neo4j
 
How QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsHow QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsQing-Cheng Li
 
Moving Beyond WordPress At Tech in Asia
Moving Beyond WordPress At Tech in AsiaMoving Beyond WordPress At Tech in Asia
Moving Beyond WordPress At Tech in AsiaLester Chan
 
Extracting Insights from Data at Twitter
Extracting Insights from Data at TwitterExtracting Insights from Data at Twitter
Extracting Insights from Data at TwitterPrasad Wagle
 
The New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by PythonThe New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by PythonAll Things Open
 
Load testing in Zonky with Gatling
Load testing in Zonky with GatlingLoad testing in Zonky with Gatling
Load testing in Zonky with GatlingPetr Vlček
 
REST API for Joomla
REST API for JoomlaREST API for Joomla
REST API for JoomlaParth Lawate
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleDmytro Semenov
 
Spring 21 Salesforce Release Webinar
Spring 21 Salesforce Release WebinarSpring 21 Salesforce Release Webinar
Spring 21 Salesforce Release Webinarbrightgenss
 
#RADC4L16: An API-First Archives Approach at NPR
#RADC4L16: An API-First Archives Approach at NPR#RADC4L16: An API-First Archives Approach at NPR
#RADC4L16: An API-First Archives Approach at NPRCamille Salas
 
Tensor flow 2.0 what's new
Tensor flow 2.0  what's newTensor flow 2.0  what's new
Tensor flow 2.0 what's newPoo Kuan Hoong
 
淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2Wen-Tien Chang
 
Agile startup company management and operation
Agile startup company management and operationAgile startup company management and operation
Agile startup company management and operationJiang Zhu
 
Big data @ uber vu (1)
Big data @ uber vu (1)Big data @ uber vu (1)
Big data @ uber vu (1)Mihnea Giurgea
 
Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire - RAGE:...
Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire -  RAGE:...Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire -  RAGE:...
Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire - RAGE:...eMadrid network
 

Similar to 20131008 - Wajug - TweetWall Pro (20)

20130504 - FeWeb - Twitter API
20130504  - FeWeb - Twitter API20130504  - FeWeb - Twitter API
20130504 - FeWeb - Twitter API
 
Machine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systemsMachine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systems
 
Procella: A fast versatile SQL query engine powering data at Youtube
Procella: A fast versatile SQL query engine powering data at YoutubeProcella: A fast versatile SQL query engine powering data at Youtube
Procella: A fast versatile SQL query engine powering data at Youtube
 
CON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project NashornCON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project Nashorn
 
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop
 
How QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsHow QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser Extensions
 
Moving Beyond WordPress At Tech in Asia
Moving Beyond WordPress At Tech in AsiaMoving Beyond WordPress At Tech in Asia
Moving Beyond WordPress At Tech in Asia
 
Extracting Insights from Data at Twitter
Extracting Insights from Data at TwitterExtracting Insights from Data at Twitter
Extracting Insights from Data at Twitter
 
The New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by PythonThe New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by Python
 
Load testing in Zonky with Gatling
Load testing in Zonky with GatlingLoad testing in Zonky with Gatling
Load testing in Zonky with Gatling
 
REST API for Joomla
REST API for JoomlaREST API for Joomla
REST API for Joomla
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
Spring 21 Salesforce Release Webinar
Spring 21 Salesforce Release WebinarSpring 21 Salesforce Release Webinar
Spring 21 Salesforce Release Webinar
 
#RADC4L16: An API-First Archives Approach at NPR
#RADC4L16: An API-First Archives Approach at NPR#RADC4L16: An API-First Archives Approach at NPR
#RADC4L16: An API-First Archives Approach at NPR
 
Tensor flow 2.0 what's new
Tensor flow 2.0  what's newTensor flow 2.0  what's new
Tensor flow 2.0 what's new
 
淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2
 
Agile startup company management and operation
Agile startup company management and operationAgile startup company management and operation
Agile startup company management and operation
 
Sprint 53
Sprint 53Sprint 53
Sprint 53
 
Big data @ uber vu (1)
Big data @ uber vu (1)Big data @ uber vu (1)
Big data @ uber vu (1)
 
Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire - RAGE:...
Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire -  RAGE:...Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire -  RAGE:...
Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire - RAGE:...
 

Recently uploaded

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 WorkerThousandEyes
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
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.pptxEarley Information Science
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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 MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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 RobisonAnna Loughnan Colquhoun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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 productivityPrincipled Technologies
 

Recently uploaded (20)

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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 

20131008 - Wajug - TweetWall Pro

  • 1.
  • 2. Pascal Alberty @zorrobiwan CTO Managing Partner
  • 4. RueDuWeb More than 50 web specialists About 20 companies or independent people
  • 7. Main Architecture ● Front (Akimedia) ○ Public Website ○ Private Website ○ Flash Animations ○ Sessions configuration management ● Back (Tesial) ○ Sessions content management
  • 8. Front - Key components (Akimedia) ● CMS Akiwi (PHP) & MySQL database (MyISAM) ○ Pubic Website ○ Private Website (users, eCommerce ● Flash animations ○ Displaying messages and other features ● “Manager” in PHP ○ Communication between Animations/Front/Back
  • 9. Back - Key Components (Tesial) ● Engine ○ Java web application ○ API used by Front for data management ■ sessions, tweets, moderation, tweetos,... ● Batch ○ Java web application ○ Formerly grabbing Tweets ○ Grabbing pictures (avatars & medias)
  • 10. Technical Infrastructure ● Front/Back Server ● DB Servers ○ Front / Back ○ Replication (fail over) ● Dev Server ○ dev (front / back) ○ pré-prod (front / back)
  • 11. SVN ● KISS ● dev = trunk ● pre-prod = branch ● prod = tag on branch or trunk ● front = release by switch ● back = release by packaging
  • 12. Back Software Architecture Maven 2 Spring 3.1 Hibernate 3.2 ehcache 1.5 Twitter4J 3 Maya 0.2 ...
  • 13. Back Software Architecture ● DTO & DAO ○ Data Structure & persistence ■ session, tweet, tweetos, hashtags, ... ● Services ○ Business functionalities ○ Transaction management ● Clients ○ Engine ○ Batches
  • 14. Engine ● Java Web Application ● API REST ○ CRUD operations ● Used by Front for data management ● Call Services layer
  • 15. Batches ● Java Web Application ● Quartz Jobs ○ Formerly Tweets Grabbing ○ Avatars Grabbing ○ Pictures Grabbing ● Call Services Layer
  • 16. Challenges ● Scalability ○ SaaS and Agency are growing ● Twitter ○ New technical and business constraints ● Product ○ Must evolve by integrating other social networks
  • 17. Twitter API ● Let’s talk about Twitter API
  • 18. Twitter APIs ● APIs ○ Search API ○ REST API ○ Streaming API ○ https://dev.twitter.com/docs/history-rest-search-api ● Versions ○ API version 1 (deprecated) ○ API version 1.1
  • 19. Rate limiting ● Rate limit window duration ○ 15 minutes ● Requests allotted ○ per user ○ via application-only auth ● Example ○ GET statuses/user_timeline ○ per user: 150 requests per 15 minutes ○ via app: 300 requests per 15 minutes https://dev.twitter.com/docs/rate-limiting/1.1/limits
  • 20. Other technical limits ● Direct messages ○ 250 per day ● Tweets ○ 1,000 per day ○ Retweets are counted as Tweets. ● Changes to account email ○ Four per hour ● Following ○ 1,000 per day ● Following (account-based) ○ up to following 2,000 other users
  • 21. Platform objects ● Tweets can be found alone, within user objects, but most often within timelines ● Users can be found tweeting, following, and favoriting on Twitter ● Entities are most often found within Tweets ● Places can be found throughout the natural universe, but typically only appear attached to Tweets on Twitter
  • 22. Objects type ● JSON ! ● XML output will be dropped soon ○ Only JSON output with API 1.1 ● Be careful with ids (64 bits) ○ use String version (especially if using Javascript) ○ Twitpocalypse ■ https://dev.twitter.com/docs/twitter-ids-json-and-snowflake ○ Idpocalypse ■ https://dev.twitter.com/blog/64-bit-twitter-user-idpocalypse
  • 25. Entities / Entity Example ● Hashtags, Medias, URLs, User mentions, Symbols ● No need to parse ● Data used for display also (ex: display_url)
  • 27. Libraries ● PHP ○ Twitter-async (https://github.com/jmathai/twitter-async) ○ tmhOAuth (https://github. com/themattharris/tmhOAuth) ○ Zend Framework (http://framework.zend. com/manual/1.12/en/zend.service.twitter.html) ● Java ○ Twitter4J (http://twitter4j.org/) https://dev.twitter.com/docs/twitter-libraries
  • 28. Twitter4J ● Unofficial Java library for the Twitter API ● 100% Pure Java (5+) ● Android platform and Google App Engine ready ● Zero dependency : No additional jars required ● Built-in OAuth support ● Out-of-the-box gzip support ● 100% Twitter API 1.1 compatible
  • 29. Tools ● Twurl ○ https://github.com/marcel/twurl ○ "curl" for Twitter API ○ Manage access tokens (authentication) ● Apigee Console ○ https://apigee.com/console ○ Free console to execute APIs
  • 30. Search API ● Similar to http://search.twitter.com ● Criteria ○ terms ○ geocode ○ language ("Language detection is best-effort") ○ count, until, since-id, max-id ○ result type: mixed, recent, popular ○ include entities ● Paginated ! ○ you have to manage this by yourself
  • 31. REST API ● Timelines ● Tweets ● Direct Messages ● Friends & Followers ● Users ● Suggested Users ● Favorites ● Lists ● Saved Searches ● Places & Geo ● Trends ● Spam Reporting ● OAuth ● Help
  • 32. Streaming API ● Persistent HTTP connection ○ until you decide to close it ● Could be reeeeaaaaaaally huge ! ○ Think about you architecture (hard and soft) ! ○ Separate storage and consumption ● Only one stream opened at a time ● Could be tricky to managed ○ Use a library
  • 33. Streaming API endpoints groups ● Public Streams ○ GET statuses/sample ○ POST statuses/filter ○ GET statuses/firehose (limited access) ● User Streams ○ Data and events for a specific user ● Site Streams (beta and limited access) ○ Real time update for large number of users
  • 34. About the challenges ● Scalability ● Twitter constraints ● Product evolution => Use of Twitter Stream API => Other Social Networks integration => Maya
  • 35. Maya Abstraction layer for feed and post Used in TWP as the input source for media
  • 36. Maya - General architecture Listener Listener Session Session
  • 37. Maya - concepts ● Post: content emitted on a (social) network by a user ● Feed: a collection of posts matching a set of filters (PostFilter) ● FeedOperator: the service to register, manage stop and restart feeds
  • 38. Maya twitter plugin ● Backed by Twitter4J ● Rely on the live stream twitter API ● Challenges ○ Adding new feeds on the fly without losing any history ○ Single channel for all feeds, need to identify to which feed(s) a tweet belongs to ● Demo!
  • 39. Front Evolutions ● From Pull to Push ○ NodeJS ● Manager from PHP to JS ○ NodeJS ● HTML5 Animations
  • 40. Next Improvements ● Queuing traitement with SI ○ Message traitement ○ Medias grabbing and/or treatment ● Adding other social networks ● Better scalability - reliability - performance ○ load balancing ○ replication ○ nginx ○ ...
  • 41. Q/A