Alta disponibilidad con
Erlang/Elixir Parte 2
Norberto Ortigoza
@hiphoox
R E Q U E R I M I E N T O S A C T U A L E S
• Alta disponibilidad
• Bajo consumo de recursos
• Concurrencia
• Multiples procesadores
• Fácil de usar
2
¿ Q U É P L ATA F O R M A H A
R E S U E LT O L A M AY O R Í A
D E E S T O S P R O B L E M A S
D E S D E H A C E M A S D E 2 5
A Ñ O S ?
3
C O N C U R R E N T E
D I S T R I B U I D O
T O L E R A N T E A FA L L O S
E R I C S S O N
4
C A R A C T E R Í S T I C A S
• D I S T R I B U C I Ó N
T R A N S PA R E N T E
• U P T I M E D E 9
N U E V E S ( 3 1 M S /
A Ñ O )
• A C T U A L I Z A C I O N E S
E N C A L I E N T E
• L I G E R O ( 2 K B Y T E S /
P R O C E S O )
• C O L E C T O R D E
B A S U R A
• F U N C I O N A L
5
Compañías usando Erlang
6
La más conocida…
7
• > 50% del tráfico de datos pasa por Erlang
• Sistemas con disponibilidad de 9 nueves (31.5569 ms/año)
• WhatsApp lo usa para manejar 2 millones de conexiones por
servidor
• WhatsApp maneja 30B mensajes diarios (347,222 mensajes x seg.)
8
C R O N O L O G Í A
• Desarrollado por José Valim
• Primera versión Enero de 2011
• Nueva versión compatible con Erlang, Agosto de 2012
• Versión 1.0 septiembre de 2014
• Versión actual 1.0.5
9
C A R A C T E R Í S T I C A S
• Corre en la maquina virtual de erlang
• Tipado dinámico con anotaciones
• Funcional
• Unicode (UTF-8)
• Inmutable
10
11
P R O D U C T I V I D A D
• Documentación (Markdown) -> Python
• Herramientas (ExUnit, IEx, Mix) -> Go, Javascript
• Paquetes (Hex) -> Ruby, Javascript
• REPL -> Varios
• Web Framework (Phoenix) -> Rails
• Releases (exrm) -> Erlang
12
- PA R E C I D O A R A I L S ( T O M A M E J O R E S
I D E A S )
- E C T O - > A C T I V E R E C O R D ( M A S C O M O
L I N Q )
- P L U G - > R A C K
- ¡ E X T R E M A D A M E N T E R Á P I D O !
13
P H O E N I X ( A P L I C A C I O N E S W E B )
14
E R L A N G O N X E N
Elixir on Raspberry Pi 2
15
Elixir on Raspberry Pi 2
Arboles de
Supervisión
Arbol
Supervisor
Worker Worker Worker
Application
App
Supervisor
Worker Worker Worker
Application
App
Supervisor
Worker Worker Worker
Application
App
Supervisor
Worker Worker Worker
Client
App
Super
visor
Worker Worker Worker
Server
App
Super
visor
Worker Worker Worker
Server
App
Super
visor
Worker Worker Worker
BEAM
Aplicación: Recepción
de Documentos Digitales
22
A P L I C A C I O N E S
VA L I D A C I Ó N
S E L L A D O
R E C E P C I Ó N
E R R O R E S
G E N E R A C I Ó N
D E C A D E N A S
H S M
23
R E C E P C I Ó N
R U T E A D O R
W E B
R U T E A D O R D E
D O C U M E N T O S
P R O C E S A R
D O C U M E N T O
/api/v1/documentos/recibir
emitir
validar
etc.
dpiva
cfdi
etc.
Demo
25
26
Integración con C,
Python, Ruby, Java
y .NET
Erlang Factory Mexico
DF
W W W. M E E T U P. C O M / E L I X I R - M E X I C O - C I T Y
@ H I P H O O X
29

Erlang y elixir

  • 1.
    Alta disponibilidad con Erlang/ElixirParte 2 Norberto Ortigoza @hiphoox
  • 2.
    R E QU E R I M I E N T O S A C T U A L E S • Alta disponibilidad • Bajo consumo de recursos • Concurrencia • Multiples procesadores • Fácil de usar 2
  • 3.
    ¿ Q UÉ P L ATA F O R M A H A R E S U E LT O L A M AY O R Í A D E E S T O S P R O B L E M A S D E S D E H A C E M A S D E 2 5 A Ñ O S ? 3
  • 4.
    C O NC U R R E N T E D I S T R I B U I D O T O L E R A N T E A FA L L O S E R I C S S O N 4
  • 5.
    C A RA C T E R Í S T I C A S • D I S T R I B U C I Ó N T R A N S PA R E N T E • U P T I M E D E 9 N U E V E S ( 3 1 M S / A Ñ O ) • A C T U A L I Z A C I O N E S E N C A L I E N T E • L I G E R O ( 2 K B Y T E S / P R O C E S O ) • C O L E C T O R D E B A S U R A • F U N C I O N A L 5
  • 6.
  • 7.
    La más conocida… 7 •> 50% del tráfico de datos pasa por Erlang • Sistemas con disponibilidad de 9 nueves (31.5569 ms/año) • WhatsApp lo usa para manejar 2 millones de conexiones por servidor • WhatsApp maneja 30B mensajes diarios (347,222 mensajes x seg.)
  • 8.
  • 9.
    C R ON O L O G Í A • Desarrollado por José Valim • Primera versión Enero de 2011 • Nueva versión compatible con Erlang, Agosto de 2012 • Versión 1.0 septiembre de 2014 • Versión actual 1.0.5 9
  • 10.
    C A RA C T E R Í S T I C A S • Corre en la maquina virtual de erlang • Tipado dinámico con anotaciones • Funcional • Unicode (UTF-8) • Inmutable 10
  • 11.
  • 12.
    P R OD U C T I V I D A D • Documentación (Markdown) -> Python • Herramientas (ExUnit, IEx, Mix) -> Go, Javascript • Paquetes (Hex) -> Ruby, Javascript • REPL -> Varios • Web Framework (Phoenix) -> Rails • Releases (exrm) -> Erlang 12
  • 13.
    - PA RE C I D O A R A I L S ( T O M A M E J O R E S I D E A S ) - E C T O - > A C T I V E R E C O R D ( M A S C O M O L I N Q ) - P L U G - > R A C K - ¡ E X T R E M A D A M E N T E R Á P I D O ! 13 P H O E N I X ( A P L I C A C I O N E S W E B )
  • 14.
    14 E R LA N G O N X E N
  • 15.
    Elixir on RaspberryPi 2 15 Elixir on Raspberry Pi 2
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    Client App Super visor Worker Worker Worker Server App Super visor WorkerWorker Worker Server App Super visor Worker Worker Worker BEAM
  • 21.
  • 22.
    22 A P LI C A C I O N E S VA L I D A C I Ó N S E L L A D O R E C E P C I Ó N E R R O R E S G E N E R A C I Ó N D E C A D E N A S H S M
  • 23.
    23 R E CE P C I Ó N R U T E A D O R W E B R U T E A D O R D E D O C U M E N T O S P R O C E S A R D O C U M E N T O /api/v1/documentos/recibir emitir validar etc. dpiva cfdi etc.
  • 24.
  • 25.
  • 26.
  • 27.
    Integración con C, Python,Ruby, Java y .NET
  • 28.
    Erlang Factory Mexico DF WW W. M E E T U P. C O M / E L I X I R - M E X I C O - C I T Y @ H I P H O O X
  • 29.