DevOps es más que una cultura que enfatiza la colaboración y comunicación entre los equipos de desarrollo y el resto de los profesionales de TI. Hablamos de automatizar la entrega de software y los cambios en la infraestructura para asegurar la calidad del software y la estabilidad de los sistemas.

Por lo tanto, esta colaboración se basa principalmente en herramientas que aseguren al mismo tiempo la rapidez y la fiabilidad en los cambios constantes.

Entonces, cuáles son las herramientas que se utilizan en Devops para su implantación?

1. Source Code Management o gestor de código fuente
2. Scripting
3. Continuous Integration Tools (CI) o herramienta de Integración Continua
4. Virtualization
5. Cloud
6. Provisioning
7. Monitoring
8. Log Aggregation

Source Code Management – SCM

DevOps Source Code Management

Los Source Control Management System (SCM) es el software que coordina y habilita la gestión de código fuente entre los distintos desarrolladores. A modo más básico, provee de gestor de ficheros y control de versiones para que los programadores no crucen los cambios entre si y se mantenga visible siempre la versión más nueva.

Actualmente los SCM permiten trabajar sobre los mismos ficheros (en base a ramas), para luego cruzarlas con el trabajo del resto del equipo, dejando rastro de quién ha desarrollado qué y hacer el seguimiento de corrección.

SCM para Devops más extendidas:

i. GIT & GitHub

Git es gratuito y con distribución Open-Source para tratar código tanto para pequeños como grandes proyectos con velocidad y eficiencia.

GitHub es la versión web del repositorio Git que ofrece un control distribuido de revisión y gestión del código tal cual lo hace Git y ofrece algunas otras características.

Los proveedores principales de Git Hosting son:
GitHub, GitLab Assembla, Beanstalk, Bitbucket, CloudForge, Codebase, Fog Creek Kiln,planio, Perforce, RhodeCode, Unfuddle

ii. Subversion

Subversion es una aplicación cliente servidor para la gestión y control de cambios en el código. Te permite gran versatilidad y una fácil gestión del control accesos si manejas un número elevado de proyectos.

Necesitarás también el cliente Tortoise para poder acceder a las fuentes.

iii. Mercurial
iv. CVS
v. ClearCase
vi. Perforce a.k.a Helix

Scripting

DevOps Scripting

Para la automatización mediante scripting se ha de tener conocimientos en lenguajes como Bash, Ruby o Python.

Herramientas de Integración Continua

DevOps Herramientas de Integración Continua

La Técnica de Integración Continua trata de cruzar código fuente generado constantemente entre los diferentes programadores del equipo de desarrollo. Este cruce (merge) de código fuente evita que el programador mantenga su copia en local muy diferente de la copia buena de trabajo. Evitando graves conflictos de cruce de código.

En la práctica, la Integración Continua es un servidor que constantemente cruza el código cuando cualquier programador realiza un cambio en el código a nivel de commit. Posteriormente el sistema recoge el código y compila directamente el código avisando de cualquier error que surja. Obviamente, esto significa que el equipo se vuelca en la corrección de errores antes de seguir generando más código.

Los Servidores de Integración Continua, por lo tanto, compilan, construyen y lanzan las pruebas automáticamente con cada nueva versión que reciben del repositorio de Código. Esto supone que para que un desarrollo en integración continua funcione, requiere de que los Test Unitarios se consideren como parte del código.

Ejemplos: Jenkins, Oracle’s Hudson, TeamCity, Bamboo, CircleCI, Travis CI, Codeship, Semaphore CI, Drone.io

Experiencias con Jenkins

Jenkins es quizás la herramienta más extendida para la Integración Continua. Visual en su entorno web ofrece sencillez para la automatización. Simplemente es el ejecutor de tareas y vas a tener que configurarlas todas, pero una vez de configuradas ya no hay opción a error del proceso.

Es de código abierto y dispone de un sinfín de plugins que te permitirán visualizar elementos muy interesantes. En nuestro caso, registramos el número de Pruebas Unitarias lanzadas y la situación respecto a los errores del SONAR para asegurar la Calidad del Código.

Virtualization

Devops Herramientas Vistualizacion

La virtualización es el siguiente paso especialmente en entornos complejos. Por lo tanto, para probar debidamente la aplicación antes de pasar a producción, necesitas configurar un entorno especifico (virtualizado) que mantenga todos los requisitos del sistema (provisionamiento).

Es aquí donde aparece el termino Infraestructure as code (Infraestructura como código) para automatizar la configuración de la infraestructura tecnológica.

La virtualización del servicio permite a programadores y testers a disponer una replica del entorno a demanda.

Ejemplos: Docker & Vagrant

Cloud

Devops Herramientas Cloud

Para la aplicación de DevOps se pueden encontrar muchos servicios en la nube.

De Amazon Web Services – AWS y de Microsoft existe MS Azure que son herramientas con productos para el DevOps. Estos servicios simplifican el provisionamiento y la gestión de la propia infraestructura para el desarrollo de código.

Con la Plataforma Cloud de Microsoft Azure, tienes a disposición unas cuantas herramientas Devops Open Source como Puppet, Chef, Terraform, etc.

Tienes también OpenShift que se basa en los contenedores de Docker y Kubernetes. En la versión OpenShift 3 se incluyen herramientas para desarrolladores y centralización de actividades operacionales que facilitan el desarrollo rápido, fácil y escalable y un ciclo de visa amplio tanto para pequeños o grandes equipos. El primer proyecto es gratuito.

También tienes las posibilidades de OneOps de Walmart que abstrae de las tareas de empaquetado, desarrollo, provisionamiento en todos los entornos para tener el control del desarrollo o Spinnaker otra plataforma open source como plataforma de Integración Continua que permite gran cantidad de cambios en el software de forma rápida.

Provisionamiento

Devops Herramientas Provisionamiento

El provisionamiento se refiere a la construcción automática del software o servidores sin ninguna actuación del ser humano. También conocido como la Gestión del Cambio

Los más conocidos en el ámbito de DevOps son Chef y Ansible.

Monitorización

La monitorización de los sistemas se puede hacer por las herramientas más conocidas como Nagios, Zabbix, SCOM,…

Gestión de Logs

Devops Herramientas Logs

Todos los servidores y aplicaciones que corren en los mismos generan un número elevado de registros en forma de ficheros de log. Es recomendable mantener una solución que agregue todos los archivos y permita de forma centralizada obtener información.

Ejemplos: Graylog, Splunk, Logstash

Si quieres ser un Ingeniero DevOps

Aunque no me gusta el termino, es algo que los profesionales de Recursos Humanos demandan, así que te pongo a continuación un listado de plataformas con las que te deberías de familiarizar 🙂

  1. Chef
  2. Jenkins
  3. Puppet Enterprise
  4. Bluepill
  5. MCollective
  6. Capistrano
  7. Supervisor
  8. Bcfg2
  9. Graphite
  10. RabbitMQ
  11. Ant
  12. CFEngine
  13. Apache Maven
  14. Ansible