Volver

DevOps en la práctica

Imagen del slider

27 de junio de 2017

Por J. Gross, desarrollador experto en PHP y DevOps en SQUAD

¿Cuáles son las buenas prácticas de DevOps? ¡Descubre en este artículo ejemplos concretos de procesos y herramientas!

Una buena comunicación, para cooperar mejor

  • Involucrar al equipo de operaciones desde el inicio de los proyectos y de forma periódica en las reuniones de revisión de sprints (en lugar de solo en caso de crisis)
  • Mantener una relación entre los equipos de desarrollo, operaciones, metrología y seguridad
  • HerramientaKanban: para una mayor transparencia y previsión en las tareas de cada uno. El principio consiste en no saturar la siguiente etapa de la cadena de producción y, por lo tanto, agilizar las etapas hasta la puesta en producción.
  • HerramientaMattermost: para crear salas por temas (por ejemplo: «entregas», «featureX», «integración», «blabla», etc.) y recibir notificaciones de otras herramientas (por ejemplo: Jenkins para notificar los errores en las compilaciones)

Implantación de una integración continua para aumentar la confianza en el producto final

El objetivo es poner en producción más rápido y con mayor frecuencia, para responder rápidamente a las necesidades de los clientes y aumentar el volumen de negocio. Para ello, es necesario automatizar todo aquello que no aporte valor añadido si lo realiza un desarrollador o un técnico de operaciones «manualmente».

Es posible lanzar a producción más rápido y con mayor frecuencia si se tiene un buen nivel de confianza en el producto: la implementación de la integración continua permite detectar lo antes posible los posibles problemas: regresiones, código probado pero no validado, problemas de rendimiento, etc.

Además, una estrategia de ramas de «features» comoGitFlowpermitirá ser flexible en cuanto a la lista de elementos que se van a entregar.

He aquí una posible cadena de integración continua:

  • Integración de una rama de desarrollo (cambios que se deben integrar) en una rama de integración (automatizar medianteJenkinso una solicitud de fusión enGitLab)
  • Implementación del código de la rama de integración en un entorno de integración (automatizada mediante Jenkins oGitLab CI)
  • puesta en marcha de pruebas unitarias (PHPUnitpara PHP) y pruebas funcionales en la interfaz (Selenium) en este entorno
  • Análisis estático de código en la rama de integración (herramientas Jenkins /Sonar)
  • Si los recursos de los servidores lo permiten, ejecuta las pruebas y realiza una revisión del código antes de integrar la rama de desarrollo. Y sí, esto permitirá obtener comentarios aún antes y sin «contaminar» potencialmente la rama de integración.

Una implementación automatizada, para preparar la implementación continua

¿El despliegue en el entorno de pruebas y de preproducción debería automatizarse al máximo, ya que, en principio, no requiere que los desarrolladores ni el equipo de operaciones tengan que tomar decisiones ni reflexionar al respecto?

  • Implementar en el entorno de pruebas a través de Jenkins con solo pulsar un botón
  • Automatización de la creación del registro de cambios, que se publicará con cada entrega.
  • Notificar a los evaluadores, analistas, desarrolladores y personal de operaciones por correo electrónico o Mattermost sobre esta nueva entrega

«Solo se puede mejorar lo que se mide»

Una frase fácil de recordar que expresa una idea llena de sentido común: hacer un seguimiento de los KPI (indicadores clave de rendimiento)en diferentes ámbitos ayuda a que el producto evolucione en la dirección correcta.

De hecho, al igual que en un sistema de monitorización operativa, conviene crear un panel de control web que muestre los KPI seleccionados, que idealmente se pueda visualizar en un televisor situado en las oficinas para que todos puedan consultarlo.

Algunos ejemplos de KPI:

  • técnica: deuda técnica, cobertura del código
  • Operativo: tiempo de actividad, número de incidencias en producción, número de reversiones
  • negocios: facturación diaria, páginas vistas, tasa de conversión
  • cliente: número de llamadas al servicio de asistencia telefónica, número de altas/bajas, tiempo de permanencia en el sitio web
  • equipo: satisfacción, gráfico de burndown

Compartir los retos y las limitaciones para impulsar una dinámica de mejora continua

  • Realizar revisiones periódicas de lo que se pone en producción (algo habitual en la metodología SCRUM)
  • La revisión de código entre compañeros, además de detectar errores, permite difundir el conocimiento del código entre todos
  • Facilitar el acceso a todo tipo de datos (comerciales, técnicos, operativos, etc.) mediante herramientas web. Lo ideal sería disponer de un panel de control web que los agrupe.
  • El conjunto de herramientas ELK permite acceder a los registros de todos los entornos: los desarrolladores podrán depurar con mayor eficacia

¡Esperamos que este artículo te haya dado algunas ideas para poner en práctica las buenas prácticas de DevOps!