Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

¡Mejora el Rendimiento de tu Webapp con Elixir!

20 visualizaciones

Publicado el

Charla sobre Elixir para Meetup Erlang/Elixir de Córdoba (España) el 4 de septiembre de 2018

Publicado en: Software
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

¡Mejora el Rendimiento de tu Webapp con Elixir!

  1. 1. ¡Mejora el rendimiento de tu webapp con Elixir! Manuel Ángel Rubio Jiménez
  2. 2. ¿Quién soy? Manuel A. Rubio Fundador de Altenwald Solutions, S.L., especializando la empresa en la consultoría para sitios web y mensajería instantánea enfocándonos en la alta concurrencia, alta disponibilidad y entornos distribuidos. ● Programador de hace más de 20 años ● Desarrollando infraestructuras de alta disponibilidad, alta concurrencia y distribuídas desde 2004 ● Administrador de sistemas desde 2002 / DevOps desde 2012 ● Escrito el primer libro de Erlang/OTP en Castellano en 2012 y pendiente publicación de libro de Elixir para finales de 2018. Twitter: @MRonErlang
  3. 3. Altenwald Solutions S.L. es desde diciembre de 2013 una empresa dedicada a: ➔ Consultoría de Alta Disponibilidad, Concurrencia y Sistemas Distribuidos en especial si están construidos con Erlang/OTP y/o Elixir. ➔ Soporte a la comunidad de Erlang/OTP y Elixir a través de libros, documentación y cursos en castellano. Formamos parte del IEUG (Industrial Erlang Users Group). ➔ Hacer proyectos y productos propios… cosas que están por llegar. Blog: http://altenwald.org ¿Quiénes somos?
  4. 4. ¿Qué es Erlang? ○ Nació en 1986 como una extensión de Prolog en los Ericsson labs. ○ Lenguaje ○ ¿Funcional o no? ... mejor híbrido. ○ Orientado a la Concurrencia... Modelo Actor. ○ Máquina Virtual o Plataforma ○ Programador y Administrador de Procesos (soporta más de 1.000.000 procs) ○ Administración de Memoria ○ Intérprete de línea de comandos (shell) ○ Interfaz transparente para comunicación entre nodos ○ Características ○ Distribuido ○ Tolerante a fallos ○ Escalable ○ Cambio de código en caliente
  5. 5. ¿Por qué Erlang es mejor? Nginx Apache Yaws Uso de CPU 2,5 1,9 0,7 Tiempo Media Respuesta (milisegundos) 1093 1897 4247 Tiempo Máximo Respuesta (segundos) 33 17 8 Tiempo Mínimo Respuesta (milisegundos) 79 157 238 Porcentaje de errores 16,9 16,5 0
  6. 6. ¿Qué es Elixir? ○ Nació en 2012 como un intento de traer Ruby a BEAM.. ○ Funcional (más que Erlang) agrega a BEAM la evaluación perezosa. ○ La Meta-Programación, Documentación y Extensibilidad son sus principales fortalezas. ○ Interoperabilidad con Erlang/OTP (reutiliza el código Erlang)
  7. 7. ¿Qué es Elixir? Jose Valim
  8. 8. ¿Qué es Phoenix Framework? Chris McCord
  9. 9. Stacks y Erlang/Elixir (BEAM) LAMP MEAN LYME / LYCE Phoenix Sistema Operativo Linux (Indiferente) Linux Linux Servidor web Apache Node.js Yaws Cowboy Base de Datos MySQL / MariaDB MongoDB Mnesia / CouchDB / Couchbase PostgreSQL Lenguaje / Framework PHP Express / Angular / JavaScript Erlang/OTP Elixir / Phoenix Framework
  10. 10. Similitudes con Ruby on Rails ○ Enfocados en productividad, desde el cliente hasta el lado del servidor ○ Proporcionan una estructura de directorios, pero Phoenix mantiene los directorios impuestos por Elixir ○ MVC (Modelo-Vista-Controlador)... y plantillas. ○ Proporcionan una sistema abstracto de acceso a base de datos relacionales (ActiveRecord en Rails y Ecto en Phoenix). Rails toma por defecto SQLite y Phoenix PostgreSQL. ○ Se basan en buenas prácticas de seguridad. ○ Poseen un kit para desarrollo de tests.
  11. 11. Diferencias con Ruby on Rails ○ Aplicaciones. Phoenix se basa en Elixir para la creación, ejecución y despliegue de aplicaciones (NO singletons!) ○ Inicio y parada. Cada aplicación Elixir y Phoenix es un servidor que podemos iniciar y parar como una unidad. ○ Monitorización e introspección. ○ Ciclo de vida de una petición diferente. Explícito. Más fácil de entender y testear. ○ Plug está basado en funciones, más fácil integrar contenido y compartir código. ○ Channels. Más rendimiento con menores dependencias que ActionCable.
  12. 12. Rendimiento de Phoenix Framework
  13. 13. Rendimiento de Phoenix Framework
  14. 14. Flujo de una petición connection |> endpoint |> router |> pipelines |> controller
  15. 15. APIs con GraphQL ○ Implementación completa de GraphQL. ○ Idiomático, legible y cómodo para diseño de API para Elixir. ○ Extensible, como Elixir. ○ Mensajes de error detallados y documentación. ○ Enfocado en la robustez y el rendimiento para producción.
  16. 16. Más información...
  17. 17. Libros Erlang/OTP y Elixir en español ○ Erlang/OTP (Volumen I) ○ Erlang/OTP (Volumen II) ○ Elixir (finales de 2018) https://books.altenwald.com
  18. 18. Agradecimientos ○ LaZona CoWorking ○ ¡A todos vosotros por asistir!
  19. 19. ¿Preguntas?

×