SlideShare una empresa de Scribd logo
Introducci´on a OTP desde Elixir
Oscar Javier Moreno Rey
Febrero de 2017
DevDay Bogot´a
Generalidades
Qu´e es Elixir?
“Lenguage din´amico funcional, dise˜nado para construir
aplicaciones escalables y mantenibles.”
• Ejecutado sobre la m´aquina virtual de Erlang.
• A˜nade caracter´ısticas para agilizar el desarrollo (Mix).
• Interoperable con las funciones nativas de Erlang (NIF, BIF).
2
Qu´e es Erlang/OTP?
• Erlang es un lenguaje de programaci´on funcional creado en
Ericsson hacia 1986.
• El ecosistema ha sido dise˜nado para construir sistemas
tolerantes a fallos, con requerimientos de alta disponibilidad,
escalables, concurrentes y distribuidos.
• Implementa modelo de actores.
• OTP (Open Telecom Platform) Framework escrito en Erlang
dise˜nado para abstraer tareas comunes en el dise˜no e
implementaci´on de dichos sistemas.
3
La Plataforma
Procesos
Unidad computacional que ejecuta c´odigo de forma independiente.
iex(1)> spawn(fn -> IO.puts "Hello" end)
Hello
#PID <0.85.0 >
Se comunican con otros procesos por paso de mensajes.
iex(1)> repl = self ()
#PID <0.83.0 >
iex(2)> spawn(fn -> send(repl , "hola") end)
#PID <0.86.0 >
iex(3)> flush ()
"hola"
:ok 4
Procesos
Recibiendo mensajes
defmodule Receptor do
def answer do
receive do
msg ->
IO.inspect "Received #{msg}"
after 1_000 ->
# Do something
end
end
end
4
Nodos
Cada una de las instancias donde se ejecuta la m´aquina virtual de
erlang.
> iex --sname A
...
iex(A@srnaor )1>
Conectando nodos
iex(A@srnaor )1> Node.connect :B@srnaor
true
iex(A@srnaor )2> Node.list
[:B@srnaor]
5
OTP Behaviours
Define el contrato de implementaci´on para estructuras comunes.
• Servidor gen´erico (GenServer)
• M´aquina de estados (gen statem)
• Manejadores de eventos (gen event, GenStage)
• Supervisor
6
GenServer
defmodule MyServer do
use GenServer
# Client API
def consume(data) do
GenServer.call(@server , :msg)
end
def start_link do
GenServer.start_link(@server , [])
end
# Callbacks
end
6
GenServer Callbacks
• init/1
• handle call/3
• handle cast/2
• handle info/2
• code change/3
• terminate/2
• format status/2
https://hexdocs.pm/elixir/GenServer.html
6
Supervisor
Estructura b´asica de un supervisor
import Supervisor.Spec , warn: false
children = [
worker(Receptor.Worker , []),
]
opts = [strategy: :one_for_one ,
name: Receptor.Supervisor]
Supervisor.start_link(children , opts)
6
Arboles de supervisi´on
Estructura dise˜nada para establecer la estrategia que usar´a la
aplicaci´on para reaccionar ante fallos.
7
En Resumen
Alcanzados los objetivos?
• Alta disponibilidad?
• Tolerante a fallos?
• Concurrencia?
8
Recursos
Libros
• Programming Elixir - Dave Thomas
• Elixir in Action - Saˇsa Juri´c
• Learn you some Erlang for great good - Fred H´ebert
Comunidad
• IRC - #elixir-lang
• http://elixirschool.com
• https://elixirforum.com
• Slack - Elixir
9

Más contenido relacionado

PPTX
QCon - 一次 Clojure Web 编程实战
PDF
PromptWorks Talk Tuesdays: Ray Zane 1/17/17 "Elixir Is Cool"
PDF
Java 与 CPU 高速缓存
PDF
Phoenix demysitify, with fun
PDF
PDF
Elixir introd
PDF
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
PDF
Introducing Elixir the easy way
QCon - 一次 Clojure Web 编程实战
PromptWorks Talk Tuesdays: Ray Zane 1/17/17 "Elixir Is Cool"
Java 与 CPU 高速缓存
Phoenix demysitify, with fun
Elixir introd
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
Introducing Elixir the easy way

Destacado (20)

PDF
Elixir & Phoenix – fast, concurrent and explicit
PDF
Erlang scheduler
PDF
Bottleneck in Elixir Application - Alexey Osipenko
ODP
Elixir basics
PDF
Learn Elixir at Manchester Lambda Lounge
PDF
Catálogo toysrus
PPTX
Nuestra Guajira
PPTX
Presentación dia del amigo
PPT
La Terra
PPTX
Teorías del aprendizaje con tics
PDF
Clases para matrimonio 21
PDF
PPT
Metodos de investigación
PPS
Amigos cactus
PDF
Presentación ascenso
PPTX
El autoestima
PDF
Licencias
PDF
Pagina principal
PDF
Digital LifeStyles da TNS
PPT
Tarea 3. Genetica y Conducta
Elixir & Phoenix – fast, concurrent and explicit
Erlang scheduler
Bottleneck in Elixir Application - Alexey Osipenko
Elixir basics
Learn Elixir at Manchester Lambda Lounge
Catálogo toysrus
Nuestra Guajira
Presentación dia del amigo
La Terra
Teorías del aprendizaje con tics
Clases para matrimonio 21
Metodos de investigación
Amigos cactus
Presentación ascenso
El autoestima
Licencias
Pagina principal
Digital LifeStyles da TNS
Tarea 3. Genetica y Conducta
Publicidad

Similar a Elixir OTP (20)

PDF
Modelos de Concurrencia
PPT
1 introduccion microsoft .net
PDF
Una gota de elixir 2017
PPTX
PPTX
Conceptos básicos y metodología de la programación
PPTX
Unidad 2. Lenguaje orientado a objetos
PPT
1 introduccion a_java_1er_parte
PPT
Software
PPTX
Introducción a Java
PDF
¡Mejora el Rendimiento de tu Webapp con Elixir!
PPTX
Conceptos básicos y metodología de la programación
PPTX
Vuelven los "Pelochos"
PDF
Conceptos Básicos de Programación
DOCX
michael ascanio
PPT
Vbnetclass
PPT
Módulo 01 Introducción a la Tecnología Java
PDF
Java basico
PPTX
todo sobre java
PPTX
Plataforma XOne
Modelos de Concurrencia
1 introduccion microsoft .net
Una gota de elixir 2017
Conceptos básicos y metodología de la programación
Unidad 2. Lenguaje orientado a objetos
1 introduccion a_java_1er_parte
Software
Introducción a Java
¡Mejora el Rendimiento de tu Webapp con Elixir!
Conceptos básicos y metodología de la programación
Vuelven los "Pelochos"
Conceptos Básicos de Programación
michael ascanio
Vbnetclass
Módulo 01 Introducción a la Tecnología Java
Java basico
todo sobre java
Plataforma XOne
Publicidad

Último (6)

DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
sistemas de informacion.................
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Su punto de partida en la IA: Microsoft 365 Copilot Chat
AutoCAD Herramientas para el futuro, Juan Fandiño
sistemas de informacion.................
Conceptos basicos de Base de Datos y sus propiedades
Derechos_de_Autor_y_Creative_Commons.pptx

Elixir OTP

  • 1. Introducci´on a OTP desde Elixir Oscar Javier Moreno Rey Febrero de 2017 DevDay Bogot´a
  • 3. Qu´e es Elixir? “Lenguage din´amico funcional, dise˜nado para construir aplicaciones escalables y mantenibles.” • Ejecutado sobre la m´aquina virtual de Erlang. • A˜nade caracter´ısticas para agilizar el desarrollo (Mix). • Interoperable con las funciones nativas de Erlang (NIF, BIF). 2
  • 4. Qu´e es Erlang/OTP? • Erlang es un lenguaje de programaci´on funcional creado en Ericsson hacia 1986. • El ecosistema ha sido dise˜nado para construir sistemas tolerantes a fallos, con requerimientos de alta disponibilidad, escalables, concurrentes y distribuidos. • Implementa modelo de actores. • OTP (Open Telecom Platform) Framework escrito en Erlang dise˜nado para abstraer tareas comunes en el dise˜no e implementaci´on de dichos sistemas. 3
  • 6. Procesos Unidad computacional que ejecuta c´odigo de forma independiente. iex(1)> spawn(fn -> IO.puts "Hello" end) Hello #PID <0.85.0 > Se comunican con otros procesos por paso de mensajes. iex(1)> repl = self () #PID <0.83.0 > iex(2)> spawn(fn -> send(repl , "hola") end) #PID <0.86.0 > iex(3)> flush () "hola" :ok 4
  • 7. Procesos Recibiendo mensajes defmodule Receptor do def answer do receive do msg -> IO.inspect "Received #{msg}" after 1_000 -> # Do something end end end 4
  • 8. Nodos Cada una de las instancias donde se ejecuta la m´aquina virtual de erlang. > iex --sname A ... iex(A@srnaor )1> Conectando nodos iex(A@srnaor )1> Node.connect :B@srnaor true iex(A@srnaor )2> Node.list [:B@srnaor] 5
  • 9. OTP Behaviours Define el contrato de implementaci´on para estructuras comunes. • Servidor gen´erico (GenServer) • M´aquina de estados (gen statem) • Manejadores de eventos (gen event, GenStage) • Supervisor 6
  • 10. GenServer defmodule MyServer do use GenServer # Client API def consume(data) do GenServer.call(@server , :msg) end def start_link do GenServer.start_link(@server , []) end # Callbacks end 6
  • 11. GenServer Callbacks • init/1 • handle call/3 • handle cast/2 • handle info/2 • code change/3 • terminate/2 • format status/2 https://hexdocs.pm/elixir/GenServer.html 6
  • 12. Supervisor Estructura b´asica de un supervisor import Supervisor.Spec , warn: false children = [ worker(Receptor.Worker , []), ] opts = [strategy: :one_for_one , name: Receptor.Supervisor] Supervisor.start_link(children , opts) 6
  • 13. Arboles de supervisi´on Estructura dise˜nada para establecer la estrategia que usar´a la aplicaci´on para reaccionar ante fallos. 7
  • 15. Alcanzados los objetivos? • Alta disponibilidad? • Tolerante a fallos? • Concurrencia? 8
  • 16. Recursos Libros • Programming Elixir - Dave Thomas • Elixir in Action - Saˇsa Juri´c • Learn you some Erlang for great good - Fred H´ebert Comunidad • IRC - #elixir-lang • http://elixirschool.com • https://elixirforum.com • Slack - Elixir 9