5. ü 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!
6.
7. 7
February
2013
March
2013
1-‐
Mobile
&
Canvas
Full
Xpla;orm
2-‐
Mobile
&
Canvas
Full
Xpla;orm
Q2
2013
Q3
2013
8.
9. ü 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
11. 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
12. 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
13. 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,
…
14. 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
15. 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.
16. 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).
17. 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
18. 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)
19. 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)
20. 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
21. 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
22. ü 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
23. ü 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
ü …
24. ¿Te gustaría trabajar en el sector de los videojuegos?
Buscamos talento. El talento atrae al talento.
www.socialpoint.es
¡GRACIAS! J