minutos de media de uso diario • +200.000.000 mensajes de chat / dia • +4.000.000 fotos subidas al dia en picos • +30.000.000.000 page views / mes • +35.000 peticiones web / seg. en picos • Picos de 12 Gbps CDNs incluidos • 4 Gbps desde el datacenter • +1.000 servidores • +250 empleados (de +15 nacionalidades)
de Frontend • 1+ Ingeniero de Backend • 1 Diseñador • 1 QA engineer • 1 Team Lead • 1 Product Manager • Algunos equipos funcionan más como un pool de recursos
Ejemplos: • Desde las páginas de la web a un cliente de chat en Javascript o el videoplayer… • Grupos, Tuenti Sitios… • Plataforma para juegos: Highscores, juegos recientes, invitar a amigos a juegos… • Diferentes componentes dentro de una página
empleamos componentes creados por backend • Trabajo en equipo • PHP, Javascript, Flash… • Tuenti usa AJAX en todas las páginas • Sensación multitarea (navegar + chat + videoplayer, todo a la vez) • Carga de páginas mas rápida • Pero… cada navegador tiene diferencias • Sub-equipos: Interactive, Core, Local, Cashmoney, Community, …
es más complejo de lo que parece • Markup compatible, y sin Javascript • Versión con Javascript muy limitado para teléfonos modernos • Subida de fotos via web móvil*, sin aplicación • Cada aplicación nativa presenta diferentes problemas y retos a solventar • Frecuentes actualizaciones añadiendo nuevas funcionalidades de su hermana mayor (la web) * Depende del modelo de teléfono
una simple tabla de base de datos… Solución: Particionado (dividir datos según un algoritmo) • Proporcionar a los equipos de Frontend componentes que esconden la complejidad de acceder a granjas de servidores • Cacheo de datos: Leer de memoria es más rápido que de DB • Diseño de complejos algoritmos, como por ejemplo sugerencias de amigos
y/o VMs • Entornos de pruebas • Entornos de pre-producción • Despliegue a producción • Herramientas de localización, chequeo de estilo y normas de codificación, comprobación de errores, minimización de código HTML, Javascript y hojas CSS…
error en producción puede quedar en un susto, pero también puede ser catastrófico • Permitir a los desarrolladores saber si su nuevo código rompe algo del resto del site