8. SSP
AdExchange
Subasta
DSP
Bidder
SDK
1.
Dame
anuncios
2.
Hay
un
escaparate
disponible,
¿cuánto
me
dais?
9. • ¿Qué
campaña
ponemos?
• ¿Cuánto
pagamos
por
ella?
• Necesitamos
muchísimas
pe1ciones
Problemas
• Tiempo
de
respuesta
<
100ms
• Siempre
hay
que
dar
una
respuesta
válida
• Almacenamos
todas
las
pe1ciones
• No
podemos
precalcular
el
resultado
Restricciones
19. • Paralelizar
Iene
un
sobre-‐coste
• La
serialización
es
cara
y
aburrida
de
programar
• No
sabemos
que
pasa
por
dentro
• “Real1me
processing”
!=
comunicación
sincrona
Lecciones
aprendidas
20. • Paralelizar
1ene
un
sobre-‐coste
• La
serialización
es
cara
y
aburrida
de
programar
Round
1
DRPCSpout
CojoBolt
RequestLog
ResponseLog
22. • Paralelizar
1ene
un
sobre-‐coste
• La
serialización
es
cara
y
aburrida
de
programar
• No
sabemos
que
pasa
por
dentro
• “Real1me
processing”
!=
comunicación
sincrona
• Redis
no
nos
sirve
como
Storage
principal
Lecciones
aprendidas
27. • Paralelizar
1ene
un
sobre-‐coste
• La
serialización
es
cara
y
aburrida
de
programar
• No
sabemos
que
pasa
por
dentro
• “RealIme
processing”
!=
comunicación
sincrona
• Redis
no
nos
sirve
como
Storage
principal
Lecciones
aprendidas
42. • En
cuanto
solucionas
un
cuello
de
botella
aparecerá
el
siguiente.
• Por
mucho
que
lo
intentemos
tendemos
a
la
op1mización
prematura.
• La
algoritmia
no
nos
ha
resuelto
el
problema.
• Busca
una
librería
de
métricas
para
tu
stack.
• Un
entorno
de
trabajo
higiénico
es
imprescindible.
Lecciones
aprendidas
43.
44. Entre
175
y
250
GB
diarios
de
datos
comprimidos
(1,6TB
en
crudo)
• Escritura
en
disco
en
diferido
• Discos
SSD
• Envío
por
lotes
a
S3
Problemas
de
almacenamiento
45. “Si
devuelve
void,
puede
esperar”
public void log(!
final RTBImplementationBean request,!
final AdExchange adExchange) {!
FutureTask futureLog = new FutureTask(new Callable() {!
@Override!
public Object call() throws Exception {!
" synchLog(request, adExchange);!
" " "return null;!
" }!
" );!
futureLog.run();!
}
Rest
Server
Worker
PubSub
DB
A
nivel
de
código
A
nivel
arquitectónico
46. • Si
necesitas
backups,
ten
en
cuenta
que
necesita
el
doble
de
memoria
de
la
que
vas
a
usar.
Redis
va
como
un
1ro
pero…
Backup
instance
48. • De
dicas
más
1empo
a:
– Programar
vs
Despelgar?
– Diagnos1car
vs
Corregir?
– Bugs
vs
Features?
• Opacidad
• Pérdida
del
control
Cuida
tu
entorno
de
trabajo
49. Cada
pieza
del
puzzle
es
mo1vo
de
preocupaciones.
Sobreingenieria
es
evil
50. • Miedo
al
cambio.
• Sen1miento
de
pertenencia.
• Ser
exesivamente
conservador.
• Fíate
de
tus
ins1ntos.
“La
inercia
te
frena
¿WTF?”