DevOps y Orquestación

Orquestando

No es que vayamos a montar una sinfonía ni nada parecido, es el nombre que se le da al despliegue de aplicaciones. Imaginemos que necesitamos varios servicios, podemos usar várias máquinas físicas, una hace de servidor proxy, otra de base de datos otra de back-end eso es orquestar y se puede hacer de varias formas y con varios sistemas y vamos a explicar cada uno aquí.

A continuación vamos a mostrar diferentes herramientas para orquestación, en principio son las que yo uso, son las que más me gustan o las que más se usan y por eso las tengo y no es una comparativa todas pueden usarse.

Docker

Docker orquesta contenedores de linux, permite desplegar aplicaciones dentro de una máquina y luego moverlas a otra independientemente de su sistema operativo. Esto permite abstraerse del propio sistema operativo y que el demonio de Docker se encargue que los contenedores funcionen. Ahora se puede preguntar ¿qué diferencia hay entre Docker e instalar Máquinas virtuales?.

Docker
Docker

Bien, vamos al lío, es muy similar, imagina que instalar una máquina virtual para una aplicación PHP con Apache, se comunica a una base de datos en otra máquina virtual con MySQL y añadimos una tercera con un Nginx. El PHP ejecuta el código haciendo la consulta a través de una red Virtual entre las propias máquinas y el Nginx muestra esa salida al exterior. Pues eso se hace con Docker y consume muchos menos recursos, no tenemos un sistema operativo entero instalado y emulado y por otro lado imagina que separamos nuestro PHP en dos, cada uno para algo diferente un front y un back office. Es la misma imagen para Docker pero son dos contenedores en realidad por lo que ocupa menos que dos sistemas operativos instalados.

Las ventajas de usar Docker son varias, primero, podemos migrarlo con más facilidad. Un server con PHP y MySql, para migrar tenemos que crear una nueva máquina instalar PHP, instalar MySQL … en una máquina con Docker le podemos decir que servicios queremos levantar, que servicios tienen puertos abiertos en la máquina (en PHP será el 80 por ejemplo y MySQL puede ser ninguno por seguridad), que archivos metemos (la lógica de PHP y un backup de la base de datos) y el solo crea el servicio. Pero para mí la mejor ventaja de Docker es poder dividir una programación complicada en contendores lo que es más facil de escalar y mantener, podemos dividir el PHP de antes en varios, cada uno hace una función diferente para el usuario final es transparente pero si falla una parte sabemos que contenedor falla.

Kubernetes

Docker es una pasada de herramienta porque nos permite dividir una aplicación en varios servicios, pero tiene cosas que pueden ser mejorables y para eso nade Kubernetes, esta aplicación de Google permite desplegar contenedores Docker y tener ciertas funcionalidades extras sobre ellos, no voy a entrar muy en detalle puesto que en Kubernetes sus «contenedores» se llaman PODs y dentro de cada PODs hay uno o varios contenedores Docker, de momento lo dejaremos así.

Docker y Kubernetes en el Back End
Docker y Kubernetes en el Back End

Kubernetes se encarga de levantar varios contenedores y balancear la carga, de esta forma es más difícil que fallen ¿y si falla uno? pues kubernetes tiene varios sistemas para comprobar que el microservicio está operativo y en caso contrario levantar otro. Por lo que Kubernetes no nos ofrece nada nuevo en concepto pero si muchas más funcionalidades para Docker.

OpenShift

Kubernetes puede ser un poco tedioso y complejo de instalar y mantener, por lo que RetHat ha provisto de una herramienta tambien Open Source para gestionar servidores de Kubernetes via web.

Openshift
Openshift

Openshift es un entorno web para desplejar y mantener aplicaciones de Kubernetes, así de sencillo, un nivel más de abstracción.

Vagrant

Esto es mucho más fácil para todos que Docker, Vagrant permite desplegar máquinas virtuales, bien por consola de comandos o bien en un archivo vagrantfile. (Docker y Kuberntes funcionan igual en este aspecto) Con el Vagranfile podemos crear varias máquinas virtuales cada una con una función o que sean iguales y balancearlas, bien, ¿para que sirve esto si ya tenemos Docker y Kubernetes? pues es un nivel más, imagina tres máquinas virtuales con Kubernetes una maestro y dos esclavas, es más difícil aun que falle ¿verdad?.

Vagrant
Vagrant

Y la ventaja de todo esto que una vez configurados los archivos en Kubernetes y Vagrant se despliega con un solo comando, así como por arte de magia, nuestra máquina instala kubernetes, a su vez le decimos que contenedores o PODs queremos, como se gestiona la red respecto a las otras máquinas y luego podemos desplegarlo en cualquier máquina física.

Ansible

Si Vagrant es para desplegar máquinas virtuales, como Docker despliega contenedores, Ansible sería como el Kubernetes, permite automatizar ciertos procesos en las máquinas virtuales.

Ansible
Ansible

Ansible trabaja con SSH, se conecta a las máquinas y automatiza tareas, como actualizar, comprobar si funcionan y levantar un servicio… etc etc.

OpenStack

Si tenemos el equivalente a Docker y a Kubernetes con máquinas virtuales, necesitamos algo que sustituya OpenShift y ese es OpenStack, permite desplegar máquinas y dar servicios Iaas, infraestructura como servicio, lo mismo que da Azure o Amazon Web Services.

OpenStack
OpenStack

 

Summary
DevOps y Orquestación
Article Name
DevOps y Orquestación
Description
Descripción de las herramientas para orquestar máquinas y servicios.
Author
Publisher Name
Drouiz
Publisher Logo

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.