Conecta con nosotros

A Fondo

Diez herramientas DevOps que tienes que dominar en 2019

Publicado el

Desde hace unos años, la filosofía DevOps ha impregnado el desarrollo y la gestión de operaciones en la industria IT. Las compañías necesitan ser más ágiles, automatizar operaciones, escalar de forma eficiente… Para conseguirlo, DevOps propone coordinar equipos que hasta hace no tanto tiempo trabajan en silos aislados: desarrolladores y profesionales IT.

Pero para mejorar la colaboración entre ambos equipos, no sólo es necesario un cambio profundo en la cultura tecnológica de las empresas, sino contar con herramientas que, precisamente, favorezcan esa integración entre equipos y que tanto desarrollo como operaciones acaben transitando por el mismo camino. En MCPRO hemos seleccionado las diez que tienes que dominar en 2019.

Ansible

Ansible, cuyo nombre hace un guiño al libro de ciencia ficción «El juego de Ender», es una herramienta de «Gestión de la Configuración», similar a otras como Puppet o Chef. Su uso principal es la configuración de una infraestructura determinada para, a continuación, automatizar el despliegue de la misma. Comparada con otras herramientas DevOps, Ansible destaca por su sencillez y su facilidad de uso. Otras características interesantes que presenta son las siguientes:

  • Aprovisionamiento
  • Despliegue de aplicaciones (Ansible Tower)
  • Orquestación: Ansible se utiliza para orquestar los despliegues de OpenStack, y es utilizada en este terreno por compañías como Rackspace, CSC, HP, Cisco o IBM.

Desarrollada por Michael DeHaan, e impulsada principalmente por Red Hat, Ansible tiene soporte para la mayoría de las distribuciones de Linux. También está disponible para Mac y de momento, sólo es posible utilizarla en plataformas Windows a través de una máquina virtual.

Bamboo

Si hablamos de DevOps, Atlassian es una de las empresas que más hay que tomarse en serio. En este terreno, Bamboo es una herramienta que reúne compilaciones, pruebas y versiones automatizadas en un solo flujo de trabajo. Así, Bamboo crea planes de compilación de varias fases, configura activadores para iniciar complicaciones tras cada commit y asigna agentes a las compilaciones y despliegues esenciales.

En la fase prueba, permite realizar pruebas automatizadas para revertir cualquier producto de forma exhaustiva con cada cambio. De forma similar se realizar pruebas paralelas que facilitan y agilizan la detección de errores. Finalmente, automatiza el despliegue de los proyectos en todos los entornos disponibles, ofreciendo control sobre el flujo con permisos propios de cada entorno.

Aunque dispone de muchos menos plugins que Jenkins (su gran competidor en este campo), cuenta con la ventaja de ser una solución más completa «out of the box» y que se integra con otras herramientas de Atlassian, como Jira, Bitbucket o Fisheye.

docker

Docker

La explosión de la nube y la necesidad por agilizar, simplificar y asegurar la distribución de aplicaciones en un entorno en el que la escalabilidad es la norma, ha hecho de Docker una de las grandes referencias del segmento de los contenedores.

Lo que hace es automatizar la instalación de aplicaciones dentro de contenedores de software, proporcionando una capa de virtualización que permite trabajar con esas aplicaciones en múltiples sistemas operativos.

Hablamos por lo tanto de una herramienta que puede empaquetar cualquier aplicación y sus dependencias en un contenedor virtual que se puede posteriormente, ejecutar en cualquier servidor.

De esta forma las empresas ganan en flexibilidad y portabilidad en sus aplicaciones, ya sea en instalaciones físicas, cloud pública, cloud privada, etc.

Git

Git es una de las herramientas DevOps más populares, utilizadas a lo largo y ancho de toda la industria. Tanto es así, que a medidados de 2018, Microsoft no dudó en adquirir GitHub (uno de los principales repositorios de proyectos Git) por 7.500 millones de dólares. Los de Redmond se quedaron así con uno de los principales servicios de control de versiones, muy apreciado entre la comunidad de desarrolladores y también por las empresas.

Si Git es tan popular, es porque permite grabar distintas versiones del código fuente de cualquier proyecto, y volver a trabajar con una versión anterior del mismo en caso de que sea necesario. Esto lo convierte en una herramienta muy interesante a la hora de experimentar, crear distintas ramas de desarrollo o unificar las nuevas características únicamente cuando están realmente listas.

Su uso en escenarios DevOps supone el uso de repositorios en los que los miembros de un equipo de desarrollo pueden publicar su trabajo. De ahí que como hemos avanzado, GitHub sea tan popular. Como principal competidor de GitHub, encontramos a los chicos de Bitbucket.

Una de las ventajas de BitBucket es que a diferencia de GitHub, permite trabajar con ilimitados repositorios privados (para equipos de hasta cinco miembros), mientras que en GitHub únicamente son gratuitos los repositorios públicos.

Gradle

Gradle es un sistema de automatización de construcción de código abierto, que por sus características en los últimos años ha ganado posiciones frente a dos veteranos de este sector: Apache Ant y Apache Maven.

Si lo ha hecho, es porque Gradle es una herramienta increíblemente versátil. Permite escribir código en Java, C++, Python y otros lenguajes de programación. Además, tiene soporte para IDEs como Netbeans, Eclipse, o IntelliJ IDEA. Entre otras implementaciones, Gradle es la solución que ha escogido Google para el desarrollo sobre Android Studio.

Una de sus principales características es que introduce un lenguaje especifico del dominio (DSL) basado en Groovy en vez de la forma XML utilizada por Apache Maven para declarar la configuración de proyecto. Pero para muchos, lo que hace de Gradle una herramienta única es su capacidad para crear builds incrementales, lo que ahorra a los desarrolladores muchísimo tiempo a la hora de compilar. De hecho, según la propia compañía, Gradle es hasta cien veces más rápido que Maven.

Jenkins

Como hemos comentado con anterioridad, Jenkins es la gran alternativa a Bamboo. Como en el caso del desarrollo de Atlassian, Jenkins permite automatizar las distintas etapas que componen el proceso de entrega de aplicaciones.

¿Por qué utilizar entonces Jenkins y no Bamboo? Principalmente por dos razones. La primera, es que es un desarrollo Open Source. La segunda, que dispone de más de 1.000 plugins listados en su base de datos, lo que permite su integración en prácticamente todas las herramientas DevOps que nos podamos imaginar.

Kubernetes

El deseo de muchas empresas para pasar a la nube híbrida y la infraestructura multicloud, la demanda de nuevas aplicaciones on-line con la necesidad tener soporte para aplicaciones legacy en la misma plataforma; el deseo de administrar sistemas distribuidos con software en contenedores y una infraestructura de microservicios, etc. Kubernetes nació para dar respuestas a todas estas cuestiones.

Publicado originalmente por Google en 2014, su gestión depende en estos momentos de la Cloud Native Computing Foundation. Entre sus principales características destaca su soporte para diferentes ambientes de ejecución de contenedores, como puede ser la propia Docker.

La amplia aceptación del proyecto y la simplificación de operaciones que supone en escenarios DevOps, ha conseguido que empresas como Pivotal, Red Hat, OpenShift o IBM se encuentren entre los patrocinadores del proyecto. Mención aparte merece Oracle, que en 2017 se convirtió en la mayor organización que ha utilizado Kubernetes como parte de su estrategia de negocio, en este caso como instalador de su Oracle Cloud Infrastructure.

Nagios

Nagios es una de las herramientas DevOps más populares en el campo de la monitorización. Esta aplicación Open Source permite monitorizar el estado de cualquier infraestructura, de modo que se pueda corregir cualquier problema.

Nagios permite almacenar logs de eventos, paradas y fallos. Además permite identificar distintas tendencias, de modo que podamos prever futuros problemas y posibles fallos de seguridad en nuestra plataforma.

Como otras herramientas que hemos analizado en este especial, Nagios destaca por la gran cantidad de plugins e integraciones que admite, además de la extensa comunidad que permite sacarle todo el partido.

Puppet

Puppet es una herramienta de gestión de la configuración del código abierto. Una de sus principales características, es que permite gestionar una infraestructura como código. Como en el caso de Ansible, Puppet automatiza la gestión de la infraestructura, de modo que se puede desplegar aplicaciones y software de forma más rápida y segura.

Puppet permite a las empresas gestionar de forma simultánea decenas de equipos de desarrollo y miles de recursos. Esto es así, porque de forma automática comprende las relaciones inherentes que se dan en cualquier infraestructura.

Gestiona dependencias y trata los errores de forma inteligente. Así, cuando encuentra una configuración que falla, salta por encima del resto de configuraciones dependientes. Gracias a todo esto, se ha convertido en una de las herramientas DevOps más utilizadas, formada por más de 5.000 módulos y con soporte para cientos de herramientas externas.

Raygun

Raygun es una de las herramientas de referencia para la monitorización y registro de errores, tanto en plataformas como en aplicaciones. Sus herramientas DevOps permite diagnosticar problemas de rendimiento y reportarlos hasta la primera línea de código/función/API en la que comienza a desarrollarse el error. Otra característica interesante es que permite identificar los distintos errores en función de importancia o prioridad, asignando casos.

Al reportar errores automáticamente refiriéndose a líneas específicas de código, Raygun permite a los equipos DevOps trabajar de forma unificada, contando para ello una única fuente de reporting sobre los errores de desarrollo y rendimiento que se encuentran.

Periodista tecnológico con más de una década de experiencia en el sector. Editor de MuyComputerPro y coordinador de MuySeguridad, la publicación de seguridad informática de referencia.

Lo más leído