chicago boss - altenwald - betabeers x córdoba

Post on 09-Jul-2015

370 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Charla sobre ChicagoBoss y Erlang/OTP dada en el Betabeers número 10 de Córdoba.

TRANSCRIPT

ChicagoBossManuel Ángel Rubio Jiménez

¿Quién soy?

○ Programador desde los 12 años... unos 20 años programando en: Perl, Python, Ruby, PHP, Java, C/C++, JavaScript, Pascal, Modula-2, Basic y Erlang.

○ Administrador de sistemas desde los 22 años... unos 10 años administrando Windows, GNU/Linux y BSD.

○ En definitiva... DevOps.

○ Fundador de Altenwald y Freelance.

○ Contacto:

○ Blog: http://bosqueviejo.net

○ Twitter: @MRonErlang

Desarrollo web

¿Qué es Erlang?

¿Qué es Erlang?

○ Nació en 1986 como una extensión de Prolog en los laboratorios Ericsson.

○ Lenguaje○ ¿Funcional o no? ... mejor híbrido.○ Orientado a la Concurrencia... Modelo Actor

○ Máquina Virtual o Plataforma○ Gestión y Planificador de Procesos (soporta más de 1.000.000 procs)○ Gestor de Memoria○ Intérprete de comandos (shell)○ Interfaz transparente para comunicación entre nodos

○ Características○ Distribuido○ Tolerante a fallos○ Escalable○ Cambio de código en caliente

¿Quién usa Erlang?

Progresión Informática

○ Carrera de los Hertzios vs Cores

Cuando estás en un atasco de tráfico con un Porsche, todo lo que puedes hacer es consumir más combustible que el resto estando parado. La escalabilidad va de construir

carreteras más anchas, no coches más rápidos.-- Steve Swartz

○ Programación Orientada a Objetos se atribuye a Alan Kay (Smalltalk)

○ Modelo Actor se atribuye a Carl Hewitt por un estudio de 1977.

OOP vs Actor Model

OOP vs Actor Model

Apache vs Yaws

Comportamientos - OTP

○ gen_server: servidores genéricos, actores base.

○ gen_fsm: máquinas de estados finitos.

○ gen_event: manejadores de eventos.

○ supervisor: supervisión de procesos.

○ application: estructura de aplicación.

Sup

Sup Srv FSM

Srv

App

-module(ascensor).-behaviour(gen_fsm).-compile([export_all]). % para simplificar, cambiar por -export(). start_link() -> gen_fsm:start_link({local, ?MODULE}, ?MODULE, [], []). init([]) -> {ok, planta_baja, []}. planta_baja(bajar, State) -> io:format("Beeep!, opcion incorrecta~n", []), {next_state, planta_baja, State};planta_baja(subir, State) -> io:format("Subiendo a la planta primera~n", []), {next_state, planta_primera, State}. planta_primera(bajar, State) -> io:format("Bajando a la planta baja~n", []), {next_state, planta_baja, State};planta_primera(subir, State) -> io:format("Subiendo a la planta segunda~n", []), {next_state, planta_segunda, State}. planta_segunda(bajar, State) -> io:format("Bajando a la planta primera~n", []), {next_state, planta_primera, State};planta_segunda(subir, State) -> io:format("Beeep!, opcion incorrecta~n", []), {next_state, planta_segunda, State}. % agregamos funciones para facilitar las llamadas% estas son opcionales: boton_subir() -> gen_fsm:send_event(?MODULE, subir). boton_bajar() -> gen_fsm:send_event(?MODULE, bajar).

EjemploFiniteStateMachine

Modelos

○ Soporte base de datos SQL y NoSQL:○

❖ Riak❖ DynamoDB❖ Mnesia❖ MongoDB❖ Tokyo Tyrant❖ MySQL❖ PostgreSQL

○ Código muy simple:

-module(users,[Id,Name,Password,Email]).-compile([export_all]).

Rutas

➔ Basado en Rails y Django:

% Front page{“/”, [{controller, “users”}, {action, “index”}]}.

% Error pages{404, [{controller, “error”}, {action, “err404”}]}.

% Other examples:{“/login”, [{controller, “users”}, {action, “login”}]}.

{“/reset/(?<code>[0-9a-f]+)”, [ {controller, “user”}, {action, “reset”}]}.

Controlador

➔ Basado en REST

➔ Salidas disponibles

◆ Template (vista)◆ JSON◆ JSONP◆ Plain Text◆ Stream

➔ Código

-module(myapp_users_controller,[Req,SessionID]).-compile([export_all]).

index(‘GET’, []) -> {ok, []}.

Vista

➔ Basado en DTL (Django Template Library) Compatible al 99%

<html><head> <title>{{ webtitle }}</title></head><body> <table> {% for user in users %} <tr> <td>{{ user.name }}</td> <td>{{ user.email }}</td> </tr> {% endfor %}</body></html>

Rendimiento

➔ 10 veces más rápido que PHP

➔ PHP renderiza a 150-600ms

➔ ChicagoBoss renderiza a 10ms o menos

Libros en inglés

Libro en castellano

Descarga PDF gratuita

http://erlang.bosqueviejo.net

Compra en Papel

¿Preguntas?

Agradecimientos

○ Organización de BetaBeers Córdoba

○ ¡A todos vosotros por asistir!

top related