Docker y Kubernetes han ofrecido a ProtOS soluciones educativas la alternativa que necesitaba.
Para el despliegue de nuestras aplicaciones de educación, hasta ahora, en ProtOS, Soluciones Educativas estábamos usando la nube de Amazon (AWS) para desplegar directamente sobre máquinas Linux (RHEL), esto nos implicaba varios problemas:
1 – Alto tiempo de provisionamiento/configuración de un nuevo servidor
2 – Entornos diferentes por aplicación (desarrollo/test/pre-producción/producción)
3 – Necesidad de programar scripts para sincronizar configuraciones, pruebas unitarias, despliegues…
4 – Diferencias en cuanto a las versiones de las librerías en cada máquina
Hemos valorado positivamente usar Docker en ProtOS soluciones educativas y en todas nuestras aplicaciones.
Docker es una tecnología que intenta resolver el clásico problema que tienen los desarrolladores de «en mi máquina funciona» para ello hace uso de unos módulos del kernel de linux para poder aislar a las aplicaciones con sus librerías y dependencias en «contenedores». De esta forma el desarrollador no se preocupa de la máquina ni de la red sino únicamente de su aplicación y sus dependencias. Una vez se encapsula esta en un contenedor docker, la aplicación funciona de la misma forma en cualquier servidor.
El siguiente problema que tenemos es que un servicio o sistema no está formado sólo por un contenedor. Cualquier servicio de hoy en día dispone de un balanceador de carga, varios nodos de proceso, sistema de caché, servidores replicados de base de datos, logs centralizados y un largo etcetera… Además tampoco teníamos una forma de controlar el estado de cada nodo de la red (contenedor docker) para saber si estaba funcionando bien o si estaba parado poder lanzar una nueva instancia (tolerancia a fallos). Tampoco podíamos lanzar instancias dependiendo de la carga actual del sistema (elasticidad), etc…
Kubernetes ha sido la alternativa para afrontar este problema en ProtOS soluciones educativas
Para solucionar este problema vamos a usar Kubernetes que es lo que Google ha estado usando durante más de 10 años para orquestar los servidores de su nube. Google ha pasado por varios sistemas evolucionados hasta llegar a Kubernetes y liberar el código (https://github.com/kubernetes/kubernetes). Actualmente es el que tiene la comunicación más grande entre los orquestadores de contenedores (mayor que el propio Docker swarm). Creemos que este es el futuro de la computación distribuida y en ProtOS soluciones educativas queremos aplicarla para mejorar el mundo de la educación.
Sergio Velasco – Lead Developer @ ProtOS