SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
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

Más contenido relacionado

Similar a Erlang y elixir

Estructura del internet
Estructura del internetEstructura del internet
Estructura del internetRichar Macías
 
EL MÉTODO RIC (Metodología SEO) - SEOPLUS 2017
EL MÉTODO RIC (Metodología SEO) - SEOPLUS 2017EL MÉTODO RIC (Metodología SEO) - SEOPLUS 2017
EL MÉTODO RIC (Metodología SEO) - SEOPLUS 2017Luis M Villanueva
 
Tipos de sistemas operativos y funcionamiento del sistema operativo
Tipos de sistemas operativos y funcionamiento del sistema operativoTipos de sistemas operativos y funcionamiento del sistema operativo
Tipos de sistemas operativos y funcionamiento del sistema operativoLiz Perez
 
Diccionario informatico
Diccionario informaticoDiccionario informatico
Diccionario informaticozamir199023
 
Pres capacitacionclaro arg_final
Pres capacitacionclaro arg_finalPres capacitacionclaro arg_final
Pres capacitacionclaro arg_finaldlbgroupweb
 

Similar a Erlang y elixir (8)

Estructura del internet
Estructura del internetEstructura del internet
Estructura del internet
 
EL MÉTODO RIC (Metodología SEO) - SEOPLUS 2017
EL MÉTODO RIC (Metodología SEO) - SEOPLUS 2017EL MÉTODO RIC (Metodología SEO) - SEOPLUS 2017
EL MÉTODO RIC (Metodología SEO) - SEOPLUS 2017
 
Tipos de sistemas operativos y funcionamiento del sistema operativo
Tipos de sistemas operativos y funcionamiento del sistema operativoTipos de sistemas operativos y funcionamiento del sistema operativo
Tipos de sistemas operativos y funcionamiento del sistema operativo
 
Diccionario informatico
Diccionario informaticoDiccionario informatico
Diccionario informatico
 
Michelle cueva
Michelle cuevaMichelle cueva
Michelle cueva
 
Folleto cofaso
Folleto cofasoFolleto cofaso
Folleto cofaso
 
Pres capacitacionclaro arg_final
Pres capacitacionclaro arg_finalPres capacitacionclaro arg_final
Pres capacitacionclaro arg_final
 
Trabajo Gupal
Trabajo Gupal Trabajo Gupal
Trabajo Gupal
 

Más de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Más de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Erlang y elixir

  • 1. Alta disponibilidad con Erlang/Elixir Parte 2 Norberto Ortigoza @hiphoox
  • 2. 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
  • 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 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
  • 5. 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
  • 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. 8
  • 9. 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
  • 10. 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. 11
  • 12. 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
  • 13. - 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. 14 E R L A N G O N X E N
  • 15. Elixir on Raspberry Pi 2 15 Elixir on Raspberry Pi 2
  • 20. Client App Super visor Worker Worker Worker Server App Super visor Worker Worker Worker Server App Super visor Worker Worker Worker BEAM
  • 22. 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. 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.
  • 24. Demo
  • 25. 25
  • 26. 26
  • 27. Integración con C, Python, Ruby, Java y .NET
  • 28. 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. 29