SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
Octubre, 2009
Tuenti Tech Teams

Frontend, Backend, Systems and
     more, working together
Tuenti Tech Teams - Frontend
 Web
Tuenti Tech Teams - Frontend
 Web
Tuenti Tech Teams - Frontend
 Mobile Web
Tuenti Tech Teams - Frontend
 Frameworks
   Javascript
      Client-side Profiling
         Sample perceived load times! This is what
         matters to the users!
   Presentation / UI
   Navigation




                                            Stick
                                          together!
                                          Have fun!
Tuenti Tech Teams - Frontend
 Product teams
    Developers - JS/PHP -
    frontend and backend
    Product managers
    Designers
    Do
       Product development
       Product design
       Software design
       Everybody's input
       matters - it's a team
       effort! Everybody has to
       be proud of the result!
Tuenti Tech Teams - Backend

   Make possible the "web scale"

   20.000.000.000 page views / month

   3.000.000 page views / day in tuenti mobile

   2.500.000 uploaded photos / day

   72 minutes per user per day

   500+ servers
Tuenti Tech Teams - Backend
   DB design ...
                    ... forgetting about the old theory
   Cache, cache, cache
   Change the way you think...
                    ... concurrency, race conditions, failures
   Hard to test scalability
   Every bit counts
   Know your software & work closely with systems
Tuenti Tech Teams - Systems
    Managing our amazing servers:
Tuenti Tech Teams - Systems
   Fundamental, the base of everything!!!
   Network design, systems architecture
   Cope with problems:
      Internal network traffic, latencies, isolate traffic
      Load balancers
      Electricity consumption
      BGP, OSPF, multiple links with providers
      Know how to find problems, know how everything works.
      Deep linux knowledge, know how to optimize servers for
      each task.
   A big challenge to maintain and monitor hundreds of servers
   +500!
A sample case

Developing the Tuenti IM
Overview
 Large scale & cost-effective web-based IM service
    Open source + innovative ideas
    Do not reinvent the wheel
         Delay product launch indefinitely
         Repeat old mistakes
 XMPP is a mature, open, distributed & extensible middle-ware
    Next generation large-scale real-time web applications
    Google Wave!
 1M concurrent chatting users
    ...launching to everybody in a couple of days
 Get a high quality IM platform: ejabberd
    Extend + adapt + optimize
    High performance, clustered & fault-tolerant
    Open source + deployed all over the world
    Implemented in Erlang/OTP
A glimpse at Erlang/OTP
 Designed in Ericsson’s Computer Science Lab
    Ericsson ⇒ AXD301 ATM switch
    Nortel Networks (Alteon) ⇒ SSL accelerator
    CouchDB, RabbitMQ, Yaws, MochiWeb, Tsung, ejabberd...
 Distributed functional paradigm
    Simple and easy to learn
    High level of abstraction
    High productivity
    Built in solid concurrency model
    Explicit or transparent distribution
    Asynchronous message passing
    Soft real time
    Robustness
    Multi-core architectures
The backend/systems side (I)
 The challenge,
    Handle even more concurrent users per server
        Optimize memory & CPU consumption
    Be ready for site/service growth
        Smart partitioning/load balancing strategies
    Integrate in existing backend
        State-less instant messaging service
           Data duplications / additional storage reqs
           API integration
        Monitoring infrastructure
    Self-management when overloaded
    Anti-abuse policies
 Controlled client implementation + not server federation
    Some cheating is allowed
The backend/systems side (and II)
 Our strategy,
    Benchmark
    Optimize
    Monitor
    Dark launch
    Optimize
        Performance bottlenecks
        Bugs
    Launch
 Probably largest Jabber/XMPP deployment in Spain
    > 100M routed messages first week on-line
    Continuous grown
    Average 25M daily routed messages
The frontend side
 Build a rich UI
    Increase user engagement
    Make them use the chat

  Browser issues
    Render time
    CSS constraints

 Technical requirements
    XMPP JS library
    Cross domain XHR
    Fault tolerant client-side engine
    Metrics
Building a rich UI
 Make the chat visible at the very first page load
   Show the buddy list
   One click - start chat


 Unobtrusive interface
   The user must be able to keep browsing the site with
   minimum impact
   Deal with small screen resolutions and multiple
   conversations
   Integrate with the rest of our site (i.e. video player)
Browser issues
 Discard IE6
    SLOW javascript
    Style limitations (position fixed)
       Fake the behavior attaching events is expensive
    Thank god the number of IE6 users is going down

 IE7 render performance
    Save states of the rendered elements
    Reduce DOM manipulation
        Reuse the buddy list module instead of repainting it
    Firebug is your best friend

  Webkit browsers throwing generic errors from the JS library
    Build our own error wrapper
Technical requirements (I)
 Send XMPP requests from the client to the jabber servers
    Pick a JS Jabber library
       Audit the code
       Performance tests
       Adapt and extend

 Cross domain XHR requests
    Can't work with the current iframe approach
    Approaches
       window.name
       cookie transport
    Finally
       iframe controller file
Technical requirements (II)
 Fault tolerant request engine
    Users poor connections
    Multiple connections from different browsers/computers
    Gracefully recover from server errors

 Metrics
   Chat usage patterns
   Detect possible message delivery problems
   Track active chat user engagement
   Browser stats
http://jobs.tuenti.com




                   gracias
                  hr@tuenti.com

Contenu connexe

Similaire à Tuenti Tech Teams. Frontend, Backend, Systems and more, working together

ITCamp 2011 - Mihai Nadas - Windows Azure interop
ITCamp 2011 - Mihai Nadas - Windows Azure interopITCamp 2011 - Mihai Nadas - Windows Azure interop
ITCamp 2011 - Mihai Nadas - Windows Azure interop
ITCamp
 
Collaboration and Grid Technologies
Collaboration and Grid TechnologiesCollaboration and Grid Technologies
Collaboration and Grid Technologies
Videoguy
 
Voice based web browser
Voice based web browserVoice based web browser
Voice based web browser
Gowsalyasri
 

Similaire à Tuenti Tech Teams. Frontend, Backend, Systems and more, working together (20)

Large scale, cloud computing and scalability with Umbraco
Large scale, cloud computing and scalability with UmbracoLarge scale, cloud computing and scalability with Umbraco
Large scale, cloud computing and scalability with Umbraco
 
Symfony - A Bird's Eye View
Symfony - A Bird's Eye ViewSymfony - A Bird's Eye View
Symfony - A Bird's Eye View
 
Introduction To Symfony
Introduction To SymfonyIntroduction To Symfony
Introduction To Symfony
 
SoC Keynote:The State of the Art in Integration Technology
SoC Keynote:The State of the Art in Integration TechnologySoC Keynote:The State of the Art in Integration Technology
SoC Keynote:The State of the Art in Integration Technology
 
Running a Megasite on Microsoft Technologies
Running a Megasite on Microsoft TechnologiesRunning a Megasite on Microsoft Technologies
Running a Megasite on Microsoft Technologies
 
ITCamp 2011 - Mihai Nadas - Windows Azure interop
ITCamp 2011 - Mihai Nadas - Windows Azure interopITCamp 2011 - Mihai Nadas - Windows Azure interop
ITCamp 2011 - Mihai Nadas - Windows Azure interop
 
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20....Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technology
 
Introduction
IntroductionIntroduction
Introduction
 
Poly Source It Profile
Poly Source It ProfilePoly Source It Profile
Poly Source It Profile
 
Polysource It Profile
Polysource It ProfilePolysource It Profile
Polysource It Profile
 
Futura – An Innovative Web Operating System
Futura – An Innovative Web Operating SystemFutura – An Innovative Web Operating System
Futura – An Innovative Web Operating System
 
Polysource-IT Profile
Polysource-IT ProfilePolysource-IT Profile
Polysource-IT Profile
 
Polysource-IT Profile
Polysource-IT ProfilePolysource-IT Profile
Polysource-IT Profile
 
Modern Web Applications
Modern Web ApplicationsModern Web Applications
Modern Web Applications
 
Scaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, GoalsScaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, Goals
 
Web 2.0 and LiveQuotes Presentation
Web 2.0 and LiveQuotes PresentationWeb 2.0 and LiveQuotes Presentation
Web 2.0 and LiveQuotes Presentation
 
Collaboration and Grid Technologies
Collaboration and Grid TechnologiesCollaboration and Grid Technologies
Collaboration and Grid Technologies
 
Voice based web browser
Voice based web browserVoice based web browser
Voice based web browser
 
Server Monitoring (Scaling while bootstrapped)
Server Monitoring  (Scaling while bootstrapped)Server Monitoring  (Scaling while bootstrapped)
Server Monitoring (Scaling while bootstrapped)
 

Plus de Tuenti

Tuenti - de la idea a la web
Tuenti -  de la idea a la webTuenti -  de la idea a la web
Tuenti - de la idea a la web
Tuenti
 
Tuenti release process
Tuenti release processTuenti release process
Tuenti release process
Tuenti
 
DTS s03e02 Handling the code
DTS s03e02 Handling the codeDTS s03e02 Handling the code
DTS s03e02 Handling the code
Tuenti
 
AJAX for Scalability
AJAX for ScalabilityAJAX for Scalability
AJAX for Scalability
Tuenti
 

Plus de Tuenti (11)

Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1
 
Tu: Telco 2.0 at FICOD 2011
Tu: Telco 2.0 at FICOD 2011Tu: Telco 2.0 at FICOD 2011
Tu: Telco 2.0 at FICOD 2011
 
Tuenti - de la idea a la web
Tuenti -  de la idea a la webTuenti -  de la idea a la web
Tuenti - de la idea a la web
 
Tuenti Mobile Development
Tuenti Mobile DevelopmentTuenti Mobile Development
Tuenti Mobile Development
 
Tuenti: Web Application Security
Tuenti: Web Application SecurityTuenti: Web Application Security
Tuenti: Web Application Security
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
 
Tuenti release process
Tuenti release processTuenti release process
Tuenti release process
 
Tuenti - tu entidad
Tuenti -  tu entidadTuenti -  tu entidad
Tuenti - tu entidad
 
DTS s03e02 Handling the code
DTS s03e02 Handling the codeDTS s03e02 Handling the code
DTS s03e02 Handling the code
 
DTS s03e04 Typing
DTS s03e04 TypingDTS s03e04 Typing
DTS s03e04 Typing
 
AJAX for Scalability
AJAX for ScalabilityAJAX for Scalability
AJAX for Scalability
 

Dernier

Dernier (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 

Tuenti Tech Teams. Frontend, Backend, Systems and more, working together

  • 2. Tuenti Tech Teams Frontend, Backend, Systems and more, working together
  • 3. Tuenti Tech Teams - Frontend Web
  • 4. Tuenti Tech Teams - Frontend Web
  • 5. Tuenti Tech Teams - Frontend Mobile Web
  • 6. Tuenti Tech Teams - Frontend Frameworks Javascript Client-side Profiling Sample perceived load times! This is what matters to the users! Presentation / UI Navigation Stick together! Have fun!
  • 7. Tuenti Tech Teams - Frontend Product teams Developers - JS/PHP - frontend and backend Product managers Designers Do Product development Product design Software design Everybody's input matters - it's a team effort! Everybody has to be proud of the result!
  • 8. Tuenti Tech Teams - Backend Make possible the "web scale" 20.000.000.000 page views / month 3.000.000 page views / day in tuenti mobile 2.500.000 uploaded photos / day 72 minutes per user per day 500+ servers
  • 9. Tuenti Tech Teams - Backend DB design ... ... forgetting about the old theory Cache, cache, cache Change the way you think... ... concurrency, race conditions, failures Hard to test scalability Every bit counts Know your software & work closely with systems
  • 10. Tuenti Tech Teams - Systems Managing our amazing servers:
  • 11. Tuenti Tech Teams - Systems Fundamental, the base of everything!!! Network design, systems architecture Cope with problems: Internal network traffic, latencies, isolate traffic Load balancers Electricity consumption BGP, OSPF, multiple links with providers Know how to find problems, know how everything works. Deep linux knowledge, know how to optimize servers for each task. A big challenge to maintain and monitor hundreds of servers +500!
  • 12. A sample case Developing the Tuenti IM
  • 13. Overview Large scale & cost-effective web-based IM service Open source + innovative ideas Do not reinvent the wheel Delay product launch indefinitely Repeat old mistakes XMPP is a mature, open, distributed & extensible middle-ware Next generation large-scale real-time web applications Google Wave! 1M concurrent chatting users ...launching to everybody in a couple of days Get a high quality IM platform: ejabberd Extend + adapt + optimize High performance, clustered & fault-tolerant Open source + deployed all over the world Implemented in Erlang/OTP
  • 14. A glimpse at Erlang/OTP Designed in Ericsson’s Computer Science Lab Ericsson ⇒ AXD301 ATM switch Nortel Networks (Alteon) ⇒ SSL accelerator CouchDB, RabbitMQ, Yaws, MochiWeb, Tsung, ejabberd... Distributed functional paradigm Simple and easy to learn High level of abstraction High productivity Built in solid concurrency model Explicit or transparent distribution Asynchronous message passing Soft real time Robustness Multi-core architectures
  • 15. The backend/systems side (I) The challenge, Handle even more concurrent users per server Optimize memory & CPU consumption Be ready for site/service growth Smart partitioning/load balancing strategies Integrate in existing backend State-less instant messaging service Data duplications / additional storage reqs API integration Monitoring infrastructure Self-management when overloaded Anti-abuse policies Controlled client implementation + not server federation Some cheating is allowed
  • 16. The backend/systems side (and II) Our strategy, Benchmark Optimize Monitor Dark launch Optimize Performance bottlenecks Bugs Launch Probably largest Jabber/XMPP deployment in Spain > 100M routed messages first week on-line Continuous grown Average 25M daily routed messages
  • 17. The frontend side Build a rich UI Increase user engagement Make them use the chat Browser issues Render time CSS constraints Technical requirements XMPP JS library Cross domain XHR Fault tolerant client-side engine Metrics
  • 18.
  • 19. Building a rich UI Make the chat visible at the very first page load Show the buddy list One click - start chat Unobtrusive interface The user must be able to keep browsing the site with minimum impact Deal with small screen resolutions and multiple conversations Integrate with the rest of our site (i.e. video player)
  • 20.
  • 21. Browser issues Discard IE6 SLOW javascript Style limitations (position fixed) Fake the behavior attaching events is expensive Thank god the number of IE6 users is going down IE7 render performance Save states of the rendered elements Reduce DOM manipulation Reuse the buddy list module instead of repainting it Firebug is your best friend Webkit browsers throwing generic errors from the JS library Build our own error wrapper
  • 22. Technical requirements (I) Send XMPP requests from the client to the jabber servers Pick a JS Jabber library Audit the code Performance tests Adapt and extend Cross domain XHR requests Can't work with the current iframe approach Approaches window.name cookie transport Finally iframe controller file
  • 23. Technical requirements (II) Fault tolerant request engine Users poor connections Multiple connections from different browsers/computers Gracefully recover from server errors Metrics Chat usage patterns Detect possible message delivery problems Track active chat user engagement Browser stats
  • 24. http://jobs.tuenti.com gracias hr@tuenti.com