1. Una gota de Elixir
Rafael Gutiérrez, @abaddon_gtz, Tunatech, SLP 2017
rgutierrez@nearsoft.com
Un vistazo al ecosistema Erlang y Elixir.
2. About me
● Nearsoft
● IPN
● 16 Muchos años de experiencia
● Java, Groovy, C/C++
● Spring Core/Web Certified Developer
● Gusto por diseñar aplicaciones robustas
● Programación OO y funcional
3. Por qué esta plática?
● Aprender programación funcional
● Clojure
○ Demasiados paréntesis
● Aprender Erlang
○ Perdi el interes
● Elixir!
4. Erlang, la plataforma
● Creado en Ericsson en 1986.
● Liberado como open source en 1988.
● Programación funcional.
● Diseñado para crear aplicaciones escalables, tolerante a
fallos, distribuido, non-stop y soft-realtime.
● Concurrencia ligera.
● Distribucion transparente.
5.
6. Concurrencia ligera y distribuida
● Procesos ligeros
● Independientes del sistema operativo
● Comunicación entre procesos sólo por mensajería
asíncrona.
○ No comparten datos (memoria)
● Cada proceso tiene su buzón de mensajes independiente
● Modelo de Actores
● Filosofia: Let it crash!
7.
8. Elixir, el lenguaje
● Creado por Jose Valim.
● Primera aparición 2011, versión 1.0 en 2014.
● Influencia de Erlang, Ruby & Clojure.
● Compila para la Erlang VM (BEAM).
● Bibliotecas de Erlang pueden ser usadas en Elixir.
○ Y viceversa.
● Programación Funcional ( |> )
● Extensible via meta-programación (DSL’s)
● Ecosistema creciendo
9.
10.
11. A week with Elixir
https://joearms.github.io/2013/05/31/a-week-with-elixir.html
12. OTP, mas que un framework
● Open Telecom Platform
○ Ya no es sobre telecomunicaciones
● Biblioteca
● Framework
● Abstracción de procesos comunes
● Buenas prácticas
● Ambiente de desarrollo para programación concurrente
15. GenServer
● Servidor en una relación cliente-servidor
● Proceso que mantiene estado
● Ejecución síncrona y asíncrona
● El programador solo implementa callbacks
16. Supervisor
● Supervisor de procesos (GenServers)
● Árbol de procesos
● Provee tolerancia a fallos
● Estrategias de Supervision
○ Uno por uno
○ Uno por todos
○ El resto por uno
○ Simple uno por uno
17. Phoenix, el framework web
● Rapido y confiable
● Cada petición es un proceso
● Pipelines
● Interactivo
○ Comandos para controladores, modelos, etc.
● Channels (websockets)
○ Web, iOS, Android
● Productividad de Rails (Ruby)
● Facil de usar
19. Pipelines con Plug
● Especificación para módulos “armables”
● Plug especifica la conexión
● Plug esta en todo Phoenix
20. Ecto, persistencia a lo funcional
● Lenguaje de consulta integrado a Elixir
● Escribir consultas SQL
○ No busca abstraer SQL del usuario
● Migraciones de base de datos
● Se compone de
○ Repo
○ Model
○ Query
○ Changesets