Social Point
description
Transcript of Social Point
4
ü 1 Million Daily Active Users
ü 39 million people have played it!!
ü 50 million dragons sold!
ü 0.8 M Daily Active Users ü 300.000 attacks per
hour!! ü 8 languages
ü 6M Daily Active Users ü 16 Billion of requests
sent! ü 20 Billion of
dragon bred!
7
February 2013 March 2013 1-‐ Mobile & Canvas Full Xpla;orm
2-‐ Mobile & Canvas Full Xpla;orm
Q2 2013 Q3 2013
ü Tráfico muy elevado: 7M+ DAU, 250K concurrentes
ü Ra>o R/W en DB muy bajo
ü Tráfico worldwide 24x365 sin down>me
ü Análisis de datos diario + análisis realKme
ü Frontend: Tiene que rendir bien con pcs an>guos
Facebook Client Adobe Flash
iOS Client C++
Analy>cs / Backoffice Tools PHP/Symfony2
Object DB Percona Shards
Sessions, Locks Redis Shards
Logs Queues Redis Shards
Async Queues Redis Shards
Log Consumers Python
Async Processors Python
User logs Cassandra
Logs Database Amazon S3
Analy>cs Database Amazon RedshiS
Backend PHP/Symfony2
TOTAL: + 300 AWS EC2 Servers
Real Time Metrics Redis Shards
Cómo escalamos las bases de datos? Depende.. ü Percona y Redis: sharding = repar>r objetos horizontalmente
ü Cassandra y AWS Redshi[: Escalado “automáKco” J
Las caches solo escalan las lecturas
Como escalamos la capa de aplicación?
ü Añadiendo nodos a un Load Balancer, a un worker group, …
ü AWS Auto Scaling se encarga de añadir y quitar sevidores, monitorizando la carga, el tamaño de la cola, …
Load Balancer
Queue
Server Server Server …
AWS AUTO SCALING
requests
Server Server Server …
messages
AWS AUTO SCALING
Facebook canvas: Flash -‐ máximo equilibrio entre compa>bilidad y potencia
iOS & Android: C++ -‐ para poder reusar código Principal reto: PERFORMANCE -‐ El juego >ene que funcionar con fluidez en máquinas/disposi>vos poco potentes. La AI y las animaciones consumen muchos recursos. Técnicas aplicadas: Movieclips, VertexBuffers, QuadBatches, algoritmos de pathfinding, …
PHP/Symfony2:
ü Muy flexible: Conjunto de componentes reusables ü Buen performance, poco overhead: uso de cache en muchos niveles: container, configuración, …
ü Standards: Cómo hacer las cosas. Muy bueno para los equipos.
ü Uso de composer: código estructurado en dis>ntos proyectos (bundles, componentes, …), uso de librerías,…
ü Backend de los juegos basado en Symfony2
Python ü Lenguaje dinámico, muy potente
ü MulKprocessing, mulKthreading, …
ü Librerías para sistemas: boto, ssh
ü La usamos para los procesos asíncronos, análisis, y para herramientas de sistemas
ü Herramienta propia para ges>onar la infraestructura en cloud (AWS): Mico, próximamente open source.
Percona ü Fork de MySQL
ü DB muy robusta, fiable y predecible (rendimiento bastante lineal)
ü No escala: hay que hacer sharding
ü Uso en SP: objetos de los usuarios (datos más críKcos) guardados en JSON serializados (sin esquema para no tener que hacer nunca ALTER TABLES).
Redis ü Key-‐value DB en memoria (el tamaño máximo es la memoria de la máquina)
ü Performance insuperable y predecible
ü Complex data types: sorted sets, hashes, …
ü Operaciones atómicas, incluso scripts LUA atómicos! ü No escala (aún): hay que hacer sharding
ü Uso en SP: rankings, locking, sesiones, colas
Cassandra ü Base de datos NoSQL 100% escalable ü Estructura column families & super column families adecuada para algunos casos
ü Consistencia eventual
ü Op>mizada para escritura ü Ejemplo: user logs (siempre append, pocas lecturas)
Redshi[ ü Columnar database de AWS
ü Necesidad de cargar datos en bloques
ü Lecturas y queries analíKcas muy rápidas gracias a la estructura columnar
ü Escalable automáKcamente (pero hay que pausar las escrituras)
ü Tamaño máximo: 100x 8XL nodes (12 Tb Ram, 1.6 Pb storage)
Amazon Web Services
ü No mantener ni planificar hardware: aumenta la velocidad del negocio
ü Pago por uso
ü Auto Scaling
ü Múl>ples availability zones
ü Managed components: Load Balancers, DBs, …
ü Muy importante tenerlo todo replicado y automaKzado: Los servidores EC2 pueden fallar J
Puppet ü Repositorio con la configuración de todos los servidores:
ü Paquetes/aplicaciones a instalar ü Archivos de configuración ü Usuarios
ü Lenguage propio formado por clases, resources, parametrizables y reusables. Extensible en ruby.
ü Los sysadmins cada vez se dedican más a programar sistemas (filosofia DevOps)
ü Permite arrancar y configurar nuevos servidores desatendidamente
ü AutomaKzación: developers más felices J
ü Vagrant: Automa>za entornos de desarrollo virtuales (locales)
ü Jenkins: Integración conKnua (automa>za el tes>ng, integración, …)
ü TesKng: PHPUnit, Selenium, Mockery, Guzzle, …
ü Github & Git Flow, pull requests, code reviews
ü Mejorando convnuamente: + performance, + nuevas tecnologías, refactors para mejorar el código, formaciones internas…
ü Open Source: liberación de varios proyectos próximamente
ü Par>cipación en la comunidad:
ü Patrocinadores de betabeers ü Pla>num sponsors de deSymfony 2013 ü Sponsors de BarcelonaJS ü …
¿Te gustaría trabajar en el sector de los videojuegos?
Buscamos talento. El talento atrae al talento.
www.socialpoint.es
¡GRACIAS! J