Close

¿Qué es un ingeniero de DevOps?

Un ingeniero de DevOps debe contar con habilidades que abarquen tanto el desarrollo como las operaciones, además de habilidades interpersonales que ayuden a cerrar la brecha entre los equipos aislados.

Foto de cara de Tom Hall
Tom Hall

Defensor y profesional de DevOps


Cuando una organización está estructurada en grupos aislados donde los equipos de desarrollo y operaciones trabajan por separado, la implementación de DevOps suele implicar una revisión organizativa completa. Se necesitan a las personas, la cultura y las herramientas adecuadas para que la implementación de DevOps salga bien. Pero según nuestra encuesta sobre tendencias de DevOps de 2020, uno de los obstáculos más comunes para implementar DevOps es la falta de habilidades de los empleados.

Una de las funciones clave para implementar una reestructuración basada en DevOps es la de ingeniero de DevOps. Esta persona debe contar un amplio conjunto de habilidades que abarque tanto el desarrollo como las operaciones, además de habilidades interpersonales que ayuden a cerrar la brecha entre los equipos aislados.

¿Qué es un ingeniero de DevOps?


Un ingeniero de DevOps es un generalista de TI que debe tener un amplio conocimiento tanto del desarrollo como de las operaciones, lo que incluye programación, gestión de infraestructuras, administración de sistemas y cadenas de herramientas de DevOps. Los ingenieros de DevOps también deben tener habilidades interpersonales, ya que trabajan con los distintos grupos aislados de la empresa para crear un entorno más colaborativo.

Los ingenieros de DevOps necesitan sólidos conocimientos de la arquitectura común del sistema, el aprovisionamiento y la administración, pero también deben tener experiencia con el conjunto de herramientas y prácticas tradicionales de los desarrolladores, como el control del código fuente, la entrega y recepción de revisiones de código, la escritura de pruebas unitarias y la familiaridad con los principios de la metodología ágil.

Roles y responsabilidades


El papel de un ingeniero de DevOps puede ser distinto de una organización a otra, pero invariablemente implica una combinación de ingeniería de publicación, aprovisionamiento y gestión de infraestructuras, administración de sistemas, seguridad y la promoción de DevOps.

Logotipo de la organización de equipo
Ver la solución

Herramientas DevOps para todo el equipo

Logotipo de un libro
Curso de formación

Descubre los aspectos básicos de DevOps de Atlassian

La ingeniería de publicación incluye el trabajo necesario para compilar e implementar código de aplicaciones. Las herramientas y los procesos exactos varían mucho en función de un gran número de variables, como el lenguaje en el que se programa el código, cuánta canalización se ha automatizado y si la infraestructura de producción es local o en la nube. La ingeniería de publicación puede implicar seleccionar, aprovisionar y mantener herramientas de CI/CD o escribir y mantener scripts de compilación/implementación personalizados.

El aprovisionamiento de infraestructuras y la administración de sistemas incluyen la implementación y el mantenimiento de los servidores, el almacenamiento y los recursos de red necesarios para alojar aplicaciones. Para organizaciones con recursos locales, esto puede incluir la gestión de servidores físicos, dispositivos de almacenamiento, conmutadores y software de virtualización en un Data Center. Si se trata de una organización híbrida o totalmente basada en la nube, esto suele incluir el aprovisionamiento y la gestión de instancias virtuales de los mismos componentes.

La promoción de DevOps a menudo se infravalora o se pasa por alto por completo, pero podría decirse que es la función más importante de un ingeniero de DevOps. El cambio a una cultura de DevOps puede ser disruptivo y confuso para los miembros del equipo de ingeniería. Como experto en DevOps, corresponde al ingeniero de DevOps promover y enseñar este enfoque en toda la organización.

Habilidades de los ingenieros de DevOps


Las habilidades técnicas que necesita un ingeniero de DevOps variarán en función de la estructura del equipo, las tecnologías y los conjuntos de herramientas que se utilicen. Sin embargo, es esencial contar con sólidas habilidades de comunicación y colaboración. También es importante que un ingeniero de DevOps conozca bien todos los componentes de una canalización de entrega, así como las ventajas y desventajas de las herramientas y los servicios disponibles.

Comunicación y colaboración

Es importante que un ingeniero de DevOps se comunique y colabore de forma eficaz con los equipos, los gestores y los clientes. Las habilidades interpersonales a menudo se pasan por alto y se infravaloran, pero el éxito de DevOps depende en gran medida de la calidad y la cantidad de feedback en todo el flujo de valor.

Administración de sistemas

Un ingeniero de DevOps tiene experiencia en la administración de sistemas, como el aprovisionamiento y la gestión de servidores, la implementación de bases de datos, la supervisión de seguridad, la aplicación de parches en sistemas y la gestión de la conectividad de red interna y externa.

Experiencia con herramientas de DevOps

Dado que el uso de las herramientas adecuadas es esencial para las prácticas de DevOps, el ingeniero de DevOps debe conocer y saber utilizar distintas herramientas. Estas herramientas abarcan todo el ciclo de vida de DevOps, desde la infraestructura y la creación hasta la supervisión y el funcionamiento de un producto o servicio.

Gestión de configuración

A menudo se espera que los ingenieros de DevOps tengan experiencia con una o varias herramientas de gestión de la configuración como Chef, Puppet o Ansible. Muchas organizaciones han adoptado estas herramientas o herramientas similares para automatizar las tareas de administración de sistemas, como la implementación de nuevos sistemas o la aplicación de parches de seguridad a los sistemas que ya están en funcionamiento.

Contenedores y orquestación de contenedores

Con la contenedorización, una tecnología popularizada por Docker, el código de la aplicación y su entorno de ejecución se agrupan en la misma imagen. Esto hace que las herramientas de gestión de la configuración tradicionales no sean tan necesarias. A su vez, la gestión de contenedores conlleva sus propios desafíos, y tener experiencia con el tipo de herramientas conocido como "orquestadores de contenedores" (por ejemplo, Docker Swarm o Kubernetes) se convierte en una habilidad imprescindible para los ingenieros de DevOps.

Integración e implementación continuas

La integración continua y la entrega continua (CI/CD) son prácticas básicas de un enfoque de DevOps para el desarrollo de software, y están habilitadas por una serie de herramientas disponibles. La función principal de cualquier herramienta o conjunto de herramientas de CI/CD es automatizar el proceso de compilación, prueba e implementación de software.

Los ingenieros de DevOps suelen necesitar experiencia en la configuración e implementación de una o más herramientas de CI/CD y, por lo general, deberán trabajar en estrecha colaboración con el resto de la organización de desarrollo para garantizar que estas herramientas se utilizan de forma eficaz.

Arquitectura y aprovisionamiento del sistema

Un ingeniero de DevOps debe tener la capacidad de diseñar, aprovisionar y gestionar ecosistemas informáticos, ya sea de forma local o en la nube. Es importante entender la infraestructura como código (iAC), un proceso de gestión de TI que aplica las prácticas recomendadas desde el desarrollo de software de DevOps hasta la gestión de los recursos de la infraestructura en la nube. Un ingeniero de DevOps debe saber modelar la infraestructura del sistema en la nube con Amazon Web Services (AWS), AWS CloudFormation o Terraform.

Conocimientos de programación y scripts

Muchos administradores de sistemas tradicionales tienen experiencia con scripts de shell para automatizar tareas repetitivas. Un ingeniero de DevOps debe ir más allá de los scripts de automatización y conocer las prácticas avanzadas de desarrollo de software y cómo implementar prácticas de desarrollo ágil, como las revisiones de código y el control de código fuente.

Capacidades de gestión colaborativa

La colaboración entre equipos es un componente fundamental para que una estrategia de DevOps sea eficaz, independientemente de la estructura organizativa específica. No importa si el equipo de ingeniería se divide en funciones o incluye equipos independientes para el desarrollo de funciones, el control de calidad, DevOps, etc., el ingeniero de DevOps debe ser orientador y compañero de trabajo de muchas personas diferentes de la organización.

Por ejemplo, una de las mayores ventajas de apostar por DevOps es la capacidad de proporcionar feedback más rápido a los desarrolladores. Los ingenieros de DevOps a menudo tienen que trabajar con el equipo de control de calidad (ya sean evaluadores manuales o desarrolladores encargados de la automatización de pruebas) para mejorar la rapidez, la eficacia y el resultado de las metodologías de pruebas.

Al mismo tiempo, los desarrolladores pueden necesitar el apoyo de los ingenieros de DevOps para mejorar el proceso de compilación e implementación de código de las aplicaciones.

El equipo de DevOps: otras funciones y responsabilidades


Divulgador de DevOps

Se trata de un experto en DevOps que promueve y desarrolla prácticas de DevOps en toda la organización. El divulgador de DevOps suele tener una sólida formación técnica, pero su función se centra en la comunicación interpersonal y la mejora de los procesos.

Gestor de publicaciones/comité asesor de cambios

Las organizaciones que no han hecho la transición a DevOps o que todavía se encuentran en las primeras etapas del proceso pueden tener un grupo separado llamado comité asesor de cambios (o CAB, por sus siglas en inglés) o una función individual de gestor de publicaciones.

La finalidad de estas funciones es garantizar que cualquier software de aplicaciones nuevo que se publique en producción cumpla con los estándares de calidad y seguridad y cuente con las aprobaciones necesarias de la dirección.

Estas funciones eran especialmente importantes cuando la publicación de software suponía más riesgos. Sin embargo, el uso de estrategias como las pruebas automatizadas y las implementaciones oscuras ha hecho que actualmente hayan perdido en parte o por completo su razón de ser.

Experto en automatización

Se espera que todos los ingenieros de DevOps tengan experiencia en automatización. Sin embargo, no es insólito que una organización tenga una función independiente de experto en automatización o ingeniero de automatización. Puede tratarse de alguien centrado en la gestión de las herramientas de CI/CD o el desarrollo y mantenimiento de conjuntos de pruebas automatizadas.

desarrollador de software

En la mayoría de los casos, se consideran desarrolladores de software las personas que programan código front-end, back-end o de ambos tipos para las aplicaciones. Antes del auge del pensamiento ágil, se les denominaba "programadores informáticos".

Control de calidad

El equipo de control de calidad (QA) se encarga de detectar fallos en el software. En un principio, los ingenieros de control de calidad se dedicaban a probar manualmente el código nuevo de las aplicaciones para asegurarse de que no presentaban fallos iniciales ("pruebas de humo"), interfirieran con las funciones existentes ("pruebas de regresión") ni entraran en conflicto con otras funciones nuevas ("pruebas de integración").

Las organizaciones complementan o reemplazan cada vez más los evaluadores manuales con la función del ingeniero de desarrollo de software para pruebas (SDET). Esta función se centra en probar el código nuevo de las aplicaciones antes de su publicación en producción, pero lo hace mediante la programación de código de automatización de pruebas en lugar de probar el software de forma manual.

Ingeniero de seguridad

Las organizaciones que no han adoptado la integración total de los problemas de seguridad y cumplimiento en sus procesos de planificación y desarrollo suelen tener una persona o un equipo responsable de la seguridad. Esto a menudo resulta ser un antipatrón, puesto que la seguridad no se aborda desde el principio y es mucho más difícil proteger el software cuando ya se ha diseñado, compilado e implementado que antes de hacerlo.

Ir más allá de un solo rol


DevOps es una práctica que requiere un cambio cultural, nuevos principios de gestión y el uso de herramientas tecnológicas. El ingeniero de DevOps es el núcleo de la transformación a DevOps y debe tener un amplio conjunto de habilidades para facilitar este cambio. Sin embargo, la mayoría de las organizaciones necesitan algo más que un ingeniero de DevOps, normalmente una combinación de generalistas y especialistas que colaboren estrechamente para implementar el enfoque de DevOps y mejorar el ciclo de vida del desarrollo de software. Un ingeniero de DevOps ayuda a acabar con los grupos aislados para facilitar la colaboración entre los distintos expertos y en todas las cadenas de herramientas para beneficiarse por completo de DevOps.

Tom Hall
Tom Hall

Tom Hall es usuario y entusiasta de DevOps, lector voraz y pianista aficionado.
En los últimos 20 años ha conseguido, entre otros logros, certificaciones de Novell, EMC, VMware y AWS. Ayudó a organizar las jornadas DevOpsDays en Atlanta en 2016 y en Austin (Texas) en años posteriores.


Compartir este artículo

Lecturas recomendadas

Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

Ilustración de Devops

La comunidad de DevOps

Ilustración de Devops

Taller de simulación

Ilustración de un mapa

Pruébalo gratis

Suscríbete para recibir el boletín de DevOps

Thank you for signing up