OMniLeads & Linux Containers

OMniLeads adopted the container scheme as a technology used to make it easier for developers to deploy their environments and use them for coding. With the passage of time and having gained experience, the QA area began to verify each code branch in a dockerized environment. Finally, the entire OMniLeads Pipeline turned to the Linux container paradigm, embodying the Build, Ship & Run precept in the team.



En Busca de la Paridad de Entornos

A partir de la adopción de contenedores linux podemos observar la realidad en términos de "build, ship & run any app, anywhere" . 


Este precepto nos permite perfeccionar el arte reduciendo casi a la nulidad, los problemas de disparidad de entornos entre nuestra comunidad de desarrolladores e integradores, ya que bajo este esquema ambos mundos lanzan instancias de la App usando los mismos contenedores.

BUILD


SHIP


RUN



Para ir compartiendo con nuestra comunidad la experiencia de esta transición hacia el uso de contenedores y buscando siempre en ella el feedback que nos motiva a seguir forjando la Aplicación Web para Contact Center mas amigable e intuitiva del mercado, es que vamos a ir generando una serie de entradas en nuestro blog & foro. 


¿Qué son los contenedores Linux?



Los contenedores de Linux permiten empaquetar y aislar las aplicaciones junto con todo el entorno de tiempo de ejecución, es decir, con todos los archivos (directorio, binarios, dependencias) que requieren para ejecutarse. Esto permite mover la aplicación que se encuentra entre los entornos (de desarrollo, de prueba, de producción, etc.), sin perder ninguna de sus funciones.

Un contenedor (Linux container) es un conjunto de uno o más procesos separados del resto del sistema. Todos los archivos (binarios, directorios, dependencias) que se necesitan para ejecutarlos provienen de una imagen diferente, lo cual significa que los contenedores de Linux se pueden trasladar desde la etapa de desarrollo hasta la de prueba y producción, sin perder uniformidad.

Podemos plantear a las imágenes de un contenedor como «binarios» instanciados a la hora de ser invocados por la ejecución de un contenedor, por lo que el contenedor en cuestión lo podemos pensar como el componente o servicio «en tiempo de ejecución». 

Por ultimo acudimos a un diagrama de bloques totalmente diseminado por la web.


A la izquierda un esquema de App virtualizada directamente sobre un Host OS, mientras que a la derecha vemos una App corriendo dentro de un contenedor.


Desde Dev hacia Ops

OMniLeads adoptó el esquema de contenedores como una tecnología utilizada para facilitar a los desarrolladores los despliegues de sus entornos y su posterior uso a la hora de codificar. Con el paso del tiempo y habiendo ganado experiencia el área de QA comenzó a realizar las verificaciones de cada rama de código sobre un entorno de contenedores, hasta que finalmente todo el Pipeline se volcó sobre el paradigma de contenedores linux.


El proyecto OMniLeads mantiene las imágenes de cada componente disponibles en Docker-Hub por un lado, mientras que se facilita un repositorio de código destinado a la gestión de instancias de la App, siendo una de las opciones el despliegue a través de docker-compose. 


Ejecución de OMniLeads con docker-compose