SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
Una gota de Elixir
Rafael Gutiérrez, @abaddon_gtz, Tunatech, SLP 2017
rgutierrez@nearsoft.com
Un vistazo al ecosistema Erlang y Elixir.
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
Por qué esta plática?
● Aprender programación funcional
● Clojure
○ Demasiados paréntesis
● Aprender Erlang
○ Perdi el interes
● Elixir!
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.
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!
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
A week with Elixir
https://joearms.github.io/2013/05/31/a-week-with-elixir.html
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
OTP
OTP Behaviours (comportamientos)
● Procesos ++
● Servidor Generico: GenServer
● Supervisor de Procesos: Supervisor
GenServer
● Servidor en una relación cliente-servidor
● Proceso que mantiene estado
● Ejecución síncrona y asíncrona
● El programador solo implementa callbacks
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
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
Capas de Phoenix
connection
|> endpoint
|> router
|> pipeline
|> controller
Pipelines con Plug
● Especificación para módulos “armables”
● Plug especifica la conexión
● Plug esta en todo Phoenix
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
Esquemas de Ecto
● Mapean valores de Elixir a la base de datos
Consultas de Ecto
● Validación de sintaxis y tipos
● Seguridad
● Composición
Changesets
● Filtro de datos, tipos, validación y reglas/restricciones de
datos.
● changeset.valid?, changeset.data, changeset.errors
Migraciones
● Modificar la estructura de la base
● Versionamento
Rafael Gutiérrez
abaddon_gtz
rgutierrez@nearsoft.com

Más contenido relacionado

Similar a Una gota de elixir 2017

¡Mejora el Rendimiento de tu Webapp con Elixir!
¡Mejora el Rendimiento de tu Webapp con Elixir!¡Mejora el Rendimiento de tu Webapp con Elixir!
¡Mejora el Rendimiento de tu Webapp con Elixir!Manuel Rubio
 
Erlang/OTP - V Taller de Programación Funcional
Erlang/OTP - V Taller de Programación FuncionalErlang/OTP - V Taller de Programación Funcional
Erlang/OTP - V Taller de Programación FuncionalManuel Rubio
 
Características Java
Características JavaCaracterísticas Java
Características JavaIsabel Gómez
 
Codemotion Madrid 2023 - Testcontainers y Spring Boot
Codemotion Madrid 2023 - Testcontainers y Spring BootCodemotion Madrid 2023 - Testcontainers y Spring Boot
Codemotion Madrid 2023 - Testcontainers y Spring BootIván López Martín
 
Presentacion tryton campus party
Presentacion tryton campus partyPresentacion tryton campus party
Presentacion tryton campus partycampus party
 
2.3 Lenguajes De Programación Del Lado Servidor.pptx
2.3 Lenguajes De Programación Del Lado Servidor.pptx2.3 Lenguajes De Programación Del Lado Servidor.pptx
2.3 Lenguajes De Programación Del Lado Servidor.pptxJulinAguirre8
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Carlos Camacho
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go LangArkhotech
 
10 lenguajes de programacion
10 lenguajes de programacion10 lenguajes de programacion
10 lenguajes de programacionChristian Morales
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true historyidealistacreamcode
 
Conceptos Básicos de Programación
Conceptos Básicos de ProgramaciónConceptos Básicos de Programación
Conceptos Básicos de ProgramaciónMaraIsabel87
 
Inyección de dependencia
Inyección de dependenciaInyección de dependencia
Inyección de dependenciaAdrián Paredes
 
Uso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomlaUso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomlaRoberto Segura
 
Clase2 clasificacion de interpretes
Clase2 clasificacion de interpretesClase2 clasificacion de interpretes
Clase2 clasificacion de interpretesInfomania pro
 
Grails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGrails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGailen Tecnologías
 
VMware - Testcontainers y Spring Boot
VMware - Testcontainers y Spring BootVMware - Testcontainers y Spring Boot
VMware - Testcontainers y Spring BootIván López Martín
 

Similar a Una gota de elixir 2017 (20)

¡Mejora el Rendimiento de tu Webapp con Elixir!
¡Mejora el Rendimiento de tu Webapp con Elixir!¡Mejora el Rendimiento de tu Webapp con Elixir!
¡Mejora el Rendimiento de tu Webapp con Elixir!
 
Principios de diseño
Principios de diseñoPrincipios de diseño
Principios de diseño
 
Erlang/OTP - V Taller de Programación Funcional
Erlang/OTP - V Taller de Programación FuncionalErlang/OTP - V Taller de Programación Funcional
Erlang/OTP - V Taller de Programación Funcional
 
Características Java
Características JavaCaracterísticas Java
Características Java
 
Codemotion Madrid 2023 - Testcontainers y Spring Boot
Codemotion Madrid 2023 - Testcontainers y Spring BootCodemotion Madrid 2023 - Testcontainers y Spring Boot
Codemotion Madrid 2023 - Testcontainers y Spring Boot
 
Presentacion tryton campus party
Presentacion tryton campus partyPresentacion tryton campus party
Presentacion tryton campus party
 
20170405 - Ecosistema Javascript
20170405 - Ecosistema Javascript20170405 - Ecosistema Javascript
20170405 - Ecosistema Javascript
 
2.3 Lenguajes De Programación Del Lado Servidor.pptx
2.3 Lenguajes De Programación Del Lado Servidor.pptx2.3 Lenguajes De Programación Del Lado Servidor.pptx
2.3 Lenguajes De Programación Del Lado Servidor.pptx
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go Lang
 
10 lenguajes de programacion
10 lenguajes de programacion10 lenguajes de programacion
10 lenguajes de programacion
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true history
 
Conceptos Básicos de Programación
Conceptos Básicos de ProgramaciónConceptos Básicos de Programación
Conceptos Básicos de Programación
 
Openwolf
OpenwolfOpenwolf
Openwolf
 
Inyección de dependencia
Inyección de dependenciaInyección de dependencia
Inyección de dependencia
 
Uso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomlaUso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomla
 
Clase2 clasificacion de interpretes
Clase2 clasificacion de interpretesClase2 clasificacion de interpretes
Clase2 clasificacion de interpretes
 
Grails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGrails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacional
 
Lenguaje de programación Java
Lenguaje de programación Java Lenguaje de programación Java
Lenguaje de programación Java
 
VMware - Testcontainers y Spring Boot
VMware - Testcontainers y Spring BootVMware - Testcontainers y Spring Boot
VMware - Testcontainers y Spring Boot
 

Más de Rafael Antonio Gutiérrez Turullols (7)

Java Collection Framework: lo que todo Java Dev debe conocer
Java Collection Framework: lo que todo Java Dev debe conocerJava Collection Framework: lo que todo Java Dev debe conocer
Java Collection Framework: lo que todo Java Dev debe conocer
 
De Threads a CompletableFutures
De Threads a CompletableFuturesDe Threads a CompletableFutures
De Threads a CompletableFutures
 
Building a Slack Bot Workshop @ Nearsoft OctoberTalks 2017
Building a Slack Bot Workshop @ Nearsoft OctoberTalks 2017Building a Slack Bot Workshop @ Nearsoft OctoberTalks 2017
Building a Slack Bot Workshop @ Nearsoft OctoberTalks 2017
 
Elixir concurrency 101
Elixir concurrency 101Elixir concurrency 101
Elixir concurrency 101
 
Test doubles and EasyMock
Test doubles and EasyMockTest doubles and EasyMock
Test doubles and EasyMock
 
Capa de persistencia con ecto
Capa de persistencia con ectoCapa de persistencia con ecto
Capa de persistencia con ecto
 
Dando saltos con Spring Roo
Dando saltos con Spring RooDando saltos con Spring Roo
Dando saltos con Spring Roo
 

Una gota de elixir 2017

  • 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
  • 13. OTP
  • 14. OTP Behaviours (comportamientos) ● Procesos ++ ● Servidor Generico: GenServer ● Supervisor de Procesos: Supervisor
  • 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
  • 18. Capas de Phoenix connection |> endpoint |> router |> pipeline |> controller
  • 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
  • 21. Esquemas de Ecto ● Mapean valores de Elixir a la base de datos
  • 22. Consultas de Ecto ● Validación de sintaxis y tipos ● Seguridad ● Composición
  • 23. Changesets ● Filtro de datos, tipos, validación y reglas/restricciones de datos. ● changeset.valid?, changeset.data, changeset.errors
  • 24. Migraciones ● Modificar la estructura de la base ● Versionamento