Modelo de Actores en Scala: Akka y Erlang
Clase 26 de 36 • Curso de Scala básico
Hablamos de Akka como una implementación del Modelo por actores en Scala, pero, ¿qué es y por qué es importante?, para responder esto, debemos ir a la historia de otro lenguaje de programación funcional que influenció a Scala, esto es, Erlang.
Erlang es un lenguaje creado como un proyecto interno de la empresa de telecomunicaciones Ericsson en 1986. La intención era tener un lenguaje que ayudara a generar más fácilmente sistemas concurrentes y distribuidos, es decir, que pudieran funcionar en muchas máquinas de manera coordinada.
El objetivo, por supuesto, era el de hacer más fácil la construcción de sistemas que fueran resistentes a los fallos. Los investigadores de Ericsson decidieron implementar el modelo por actores, y los resultados han sido, a lo largo de los años, bastante dicientes, puesto que mucha de la infraestructura de comunicación celular, hace uso de este lenguaje.
Base del modelo
La base de este modelo son los actores. Cada actor tiene una bandeja de entrada que puede recibir mensajes para actuar con base en ellos, y los actores tienen la capacidad de enviar mensajes a otros actores.
Este modelo tan simple es bastante poderoso, porque permite coordinar distintas funcionalidades entre los diferentes tipos de actor (donde se entiende que un tipo de actor tiene cierto comportamiento y responsabilidades) y pueden haber múltiples actores del mismo tipo. Existe un coordinador de actores principal (que por supuesto es también un actor), que distribuye el trabajo según el tipo de actor.
Si por alguna razón un actor falla, su coordinador se dará cuenta y puede redirigir el trabajo que falló a un nuevo actor. Si un actor tiene demasiados mensajes y no puede con todos, puede avisar a su coordinador para crear un nuevo actor del mismo tipo que le ayude, y cuando el coordinador detecta que no necesita más algún actor, puede eliminarlo para administrar mejor los recursos.
Todo esto en un contexto donde los actores no necesariamente están en el mismo equipo. Aunque programar directamente con actores no es el objetivo de este curso, vamos a usar Play Framework, que internamente los usa.
Cuando a Play le llega una petición HTTP, un coordinador de actores crea un actor basado en la lógica que escribimos, si llegan muchas peticiones el sistema de actores crece o decrece según la necesidad, todo esto permite que sin muchas complicaciones de nuestra parte, escribamos aplicaciones web que son altamente resistentes.
Si te interesa este tipo de temas, más que un libro o un link, voy a recomendarte una persona: Joe Armstrong, quien fue uno de los co-autores de lenguaje Erlang. El conocimiento que dejó ha contribuido al avance tecnológico que vivimos hoy. Antes de su muerte dejó muchos libros, blogs, conferencias y artículos de investigación, todos ellos muy interesantes.