erlang y elixir

29
Alta disponibilidad con Erlang/Elixir Parte 2 Norberto Ortigoza @hiphoox

Upload: software-guru

Post on 14-Aug-2015

141 views

Category:

Software


0 download

TRANSCRIPT

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

ER ICSSON

4

CARACTER Í ST ICAS

• 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

Supervisor

Worker Worker Worker

Server

App

Supervisor

Worker Worker Worker

Server

App

Supervisor

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