Arquitectura de servicios con alta disponibilidad y escalables en Erlang/Elixir

Conferencista(s)

Erlang es famoso por permitir crear sistemas que pueden ser actualizados sin tener que darlos de baja y con eso lograr alta disponibilidad (9 nueves o 31 ms abajo al año). En esta platica les mostrare como Erlang logra hacer esto. Mostraré algunas demos, veremos como es el proceso de generar un release para producción y mostraré un sistema real que tenemos en producción que trabaja de esta forma, donde el front está construido en Ruby/Rails y los servicios en Erlang/Elixir/Phoenix.

En Diverza llevamos trabajando con Erlang/Elixir un poco mas de dos años. En este tiempo hemos desarrollado varios sistemas de misión critica que actualmente están en producción y que reemplazaron los anteriores hechos en java. Por esta experiencia sabemos que una de las partes mas difíciles de entender es como generar un release para producción y como hacer el proceso de upgrade y downgrade del sistema sin darlo de baja. Durante la presentación también mostraré las ventajas que se obtuvieron en disminución de uso de memoria y mejor uso de procesadores, conceptos de programación funcional, como interactuar con código en Java y en C. Finalmente, como tener una arquitectura donde el front esta hecho en Ruby/Rails y los servicios en Erlang/Elixir/Phoenix.

Esta plática es una continuación de la introducción que se dio en SG Conference & Expo 2014 ("Alta disponibilidad en Erlang/Elixir").

Acerca del conferencista

Norberto Ortigoza es instructor para América Latina por parte de Big Nerd Ranch, la empresa de cursos para iOS más importante del mundo. Es Director de Desarrollo en Diverza y co-fundador del grupo Cocoaheads en el Distrito Federal dirigido a desarrolladores en OSX y iOS. También es instructor oficial de Rubymotion. Ha sido programador por más de 20 años, donde ha empleado Sistemas operativos y lenguajes como NeXT, OSX, Solaris, Windows, Smalltalk, Objective-C, C, Java, C#, Ruby, PHP, Python, Perl y en los últimos días Elixir y Go. Ha impartido cursos de desarrollo en India, USA, Colombia, Bélgica y México. Es Ingeniero en Computación por parte de la Facultad de Ingeniería de la UNAM. Tiene estudios de Maestría en Ciencias de la Computación por la UNAM. Diplomado en Procesos y Arquitectura de Software por parte del SEI - Carnegie Mellon University.