SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
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

Mais conteúdo relacionado

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

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 UmbracoWarren Buckley
 
Symfony - A Bird's Eye View
Symfony - A Bird's Eye ViewSymfony - A Bird's Eye View
Symfony - A Bird's Eye Viewcsushil
 
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 TechnologySrinath Perera
 
Running a Megasite on Microsoft Technologies
Running a Megasite on Microsoft TechnologiesRunning a Megasite on Microsoft Technologies
Running a Megasite on Microsoft Technologiesgoodfriday
 
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 interopITCamp
 
.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...Javier García Magna
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technologyEldos Kuriakose
 
Poly Source It Profile
Poly Source It ProfilePoly Source It Profile
Poly Source It Profilemoseskhedi
 
Polysource It Profile
Polysource It ProfilePolysource It Profile
Polysource It Profileelenarys
 
Futura – An Innovative Web Operating System
Futura – An Innovative Web Operating SystemFutura – An Innovative Web Operating System
Futura – An Innovative Web Operating Systemvittalp88
 
Polysource-IT Profile
Polysource-IT ProfilePolysource-IT Profile
Polysource-IT ProfileHelen
 
Polysource-IT Profile
Polysource-IT ProfilePolysource-IT Profile
Polysource-IT ProfileHelen
 
Scaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, GoalsScaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, Goalskamaelian
 
Web 2.0 and LiveQuotes Presentation
Web 2.0 and LiveQuotes PresentationWeb 2.0 and LiveQuotes Presentation
Web 2.0 and LiveQuotes PresentationJamie Thingelstad
 
Collaboration and Grid Technologies
Collaboration and Grid TechnologiesCollaboration and Grid Technologies
Collaboration and Grid TechnologiesVideoguy
 
Voice based web browser
Voice based web browserVoice based web browser
Voice based web browserGowsalyasri
 
Server Monitoring (Scaling while bootstrapped)
Server Monitoring  (Scaling while bootstrapped)Server Monitoring  (Scaling while bootstrapped)
Server Monitoring (Scaling while bootstrapped)Ajibola Aiyedogbon
 

Semelhante a 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)
 

Mais de Tuenti

Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1Tuenti
 
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 2011Tuenti
 
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 webTuenti
 
Tuenti Mobile Development
Tuenti Mobile DevelopmentTuenti Mobile Development
Tuenti Mobile DevelopmentTuenti
 
Tuenti: Web Application Security
Tuenti: Web Application SecurityTuenti: Web Application Security
Tuenti: Web Application SecurityTuenti
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release WorkflowTuenti
 
Tuenti release process
Tuenti release processTuenti release process
Tuenti release processTuenti
 
Tuenti - tu entidad
Tuenti -  tu entidadTuenti -  tu entidad
Tuenti - tu entidadTuenti
 
DTS s03e02 Handling the code
DTS s03e02 Handling the codeDTS s03e02 Handling the code
DTS s03e02 Handling the codeTuenti
 
DTS s03e04 Typing
DTS s03e04 TypingDTS s03e04 Typing
DTS s03e04 TypingTuenti
 
AJAX for Scalability
AJAX for ScalabilityAJAX for Scalability
AJAX for ScalabilityTuenti
 

Mais 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
 

Último

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...Martijn de Jong
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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 Takeoffsammart93
 
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 Processorsdebabhi2
 
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
 
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 DevelopmentsTrustArc
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
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...Enterprise Knowledge
 
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
 
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
 
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 educationjfdjdjcjdnsjd
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
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
 
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
 
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
 

Último (20)

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...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
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
 
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...
 
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
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
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...
 
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
 
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
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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
 
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
 
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...
 

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