Qué es Apache Mesos?

La definición más clara y corta podría ser: Administrador global de los recursos en un datacenter. Aunque en la definición oficial le llaman “A distributed systems kernel”, es decir un kernel para sistemas distribuidos, pero no porque realmente Mesos sea un kernel, si no más bien por la capa de abstracción que representa en un datacenter.

“Apache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.” – http://mesos.apache.org

Básicamente lo que hace es administrar todos los recursos (CPU, memoria, almacenamiento, etc) de las máquinas (físicas o virtuales) que están en un datacenter para habilitar sistemas distribuidos elásticos y tolerantes a fallos, que sean fáciles de construir y que corran eficientemente.

Mesos, busca que el datacenter sea visto como un gran conjunto de recursos, una unidad que sea más fácil de administrar y que aproveche todos los recursos, así como lo dice uno de sus creadores:

 “We wanted people to be able to program for the data center just like they program for their laptop.” – Ben Hindman

Mesos: One large pool of resources

Mesos: One large pool of resources

Un poco de historia

Big picture

Si pudiéramos ver por niveles como se veria un datacenter que usa Mesos y que corre aplicaciones tan demandantes como un Twitter, Facebook, etc. La manera en la que se representaría para poder entender la jerarquía seria algo asi:

Big Picture

En la parte más baja está la infraestructura, es decir todos los servidores (con su OS), despues esta el file system distribuido, sobre eso se instala Mesos. Una vez que tenemos esa etapa se deben instalar los frameworks (sistemas distribuidos) de Mesos que son como un puente  entre nuestra aplicación y Mesos. Ejemplo de frameworks: Aurora, Marathon, Hadoop, Spark, etc. Una lista completa la pueden revisar aquí. Y después de eso montamos nuestra aplicación. Por eso la visión de Mesos es la de programar apps para el datacenter como si lo hiciéramos en nuestra computadora, porque la manera en que trabaja hace que los desarrolladores no se preocupen tanto por la parte de infraestructura.

La magia de Mesos

La manera en como aprovecha los recursos hace que las aplicaciones puedan sacar el máximo provecho al datacenter. Básicamente trabaja asi: todos los procesos están dentro de un contenedor y Mesos decide en qué servidor mandarlo, dependiendo de la necesidad de esa tarea (memoria, CPU). Con esto, toda la carga es distribuida y se evita la sobrecarga de servidores por algún pico en algún servicio en particular. Veamos esto en acción como lo muestran las siguientes imágenes:

Abstracción

 

Compartiendo recursos entre procesos

 

Toda la información del proyecto esta en: http://mesos.apache.org/ y pueden seguir sus noticias en Twitter en @ApacheMesos y si les interesa asistir a sus conferencias, siganlos en la página de la Linux Foundation en http://events.linuxfoundation.org/events/mesoscon