Hace 20 años, el término «ingeniero DevOps» no se conocía.
Hoy en día, los ingenieros de DevOps son el pegamento que mantiene unidos a los departamentos de TI, permitiéndoles entregar proyectos con mayor rapidez y eficacia.
Ese crecimiento se nota en el dinero. Aunque el mercado de DevOps solo estaba valorado en 4.000 millones de dólares en 2019, se espera que crezca hasta los 17.000 millones de dólares en 2026. Naturalmente, la demanda de ingenieros de DevOps está aumentando rápidamente en todo el mundo.
Si alguna vez has querido saber qué hace un ingeniero de DevOps, este es el artículo para ti.
Sigue leyendo y aprenderás todo lo que necesitas saber para convertirte en un ingeniero de DevOps, incluyendo las habilidades que necesitas, tus responsabilidades como ingeniero de DevOps y lo que puedes esperar ganar en tu nuevo papel.
¡Vamos a sumergirnos!
¿Qué es DevOps?
DevOps es un conjunto de prácticas, herramientas y enfoques para gestionar el desarrollo de software y los proyectos de TI.
El término «DevOps» proviene de las palabras «desarrollo» y «operaciones» Patrick Debois denominó inicialmente DevOps a la conferencia de 2009 DevOps Days. En DevOps Days, Debois presentó DevOps como un enfoque alternativo que ayudaba a los desarrolladores a entregar proyectos más rápidamente mediante una gestión cuidadosa y una entrega continua.
Tras la conferencia, DevOps empezó a ganar popularidad en todo el mundo. En 2013, DevOps apareció en «The Phoenix Project» (escrito por George Spafford, Kevin Behr y Gene Kim). En el libro, el director de TI, Bill utiliza DevOps para completar un gran proyecto en 90 días.
¿Qué es un Ingeniero DevOps?
Un ingeniero de DevOps es un profesional de TI que trabaja con los desarrolladores de software, el personal de operaciones de TI, los usuarios del sistema y la dirección para optimizar el despliegue de nuevas actualizaciones y programas.
Los ingenieros de DevOps son esencialmente la columna vertebral de sus departamentos de TI: crean sistemas integrados y fáciles de usar rápidamente.
Ventajas de Contratar a un Ingeniero de DevOps
La contratación de un experto en DevOps tiene muchos beneficios, ya que pueden:
- Ayudar a una empresa a integrar mejor sus sistemas informáticos, haciéndolos más fáciles de usar
- Ayudar a los desarrolladores a liberar proyectos de sistemas más rápidamente, agilizando el proceso de desarrollo
- Implementar herramientas DevOps que ayuden a los desarrolladores a mejorar la calidad de su trabajo
- Automatizar los procesos internos repetitivos
- Ayudar a diseñar sistemas ciberseguros
- Implementar prácticas de DevOps como la Integración Continua / Entrega Continua (CI/CD)
La investigación del informe Tendencias DevOps 2020 de Atlassian también muestra que:
- El 61 % de las empresas encuestadas que implantaron DevOps creen que les ayudó a producir «entregables de mayor calidad»
- El 49 % de las empresas encuestadas que implementaron DevOps creen que mejoró la frecuencia de despliegue
- El 99 % de las empresas encuestadas cree que DevOps «tuvo un impacto positivo en su organización»
¿Qué Hace un Ingeniero de DevOps?
Para entender lo que hace un ingeniero de DevOps, tienes que comprender el ciclo de vida del desarrollo de sistemas (SDLC).
El SDLC incluye seis fases de desarrollo, entre ellas:
- Planificación: Cuando los desarrolladores esbozan el alcance y los requisitos del proyecto
- Análisis: Cuando los desarrolladores investigan y analizan los requisitos para implementarlos en el sistema
- Diseño: Cuando los desarrolladores diseñan la arquitectura del proyecto
- Implementación: Cuando los desarrolladores construyen el sistema
- Pruebas: Cuando los desarrolladores prueban el código del sistema y resuelven los errores
- Despliegue y mantenimiento: Cuando los desarrolladores liberan el sistema y realizan el mantenimiento para que siga funcionando sin problemas
Hay varios enfoques del SDLC, como las metodologías Waterfall y Agile. En la metodología Waterfall, las personas trabajan a través del SDLC desde la planificación hasta el despliegue y el mantenimiento de forma secuencial. En el método ágil, las personas trabajan a través del SDLC de forma continua.
Los enfoques en Waterfall y Agile tienen el siguiente aspecto:
DevOps se basa parcialmente en el enfoque Agile del desarrollo. En concreto, los ingenieros de DevOps aplican una versión del SDLC conocida como ciclo de vida de DevOps. Al igual que el enfoque Agile, el ciclo de vida de DevOps hace un bucle y se repite continuamente a través de estas etapas:
- Planificación
- Retroalimentación continua
- Funcionamiento
- Integración continua y despliegue continuo
- Construcción
El ciclo de vida de DevOps tiene el siguiente aspecto:
Los ingenieros de DevOps también operan según los principios de Integración Continua y Entrega Continua (CI/CD).
La Integración Continua es la práctica de añadir continuamente cambios en el código a tu repositorio de código (esencialmente compilando el código a medida que lo escribes). La Entrega Continua es la práctica de preparar automática y consistentemente los cambios de código para su despliegue (empujando nuevas funcionalidades, correcciones de errores y actualizaciones a los usuarios de manera continua, en lugar de en una gran actualización).
¿Cuáles son las Responsabilidades de un Ingeniero DevOps?
El día a día de cada ingeniero de DevOps es diferente, ya que cada desarrollador trabaja en proyectos únicos para empresas con enfoques de DevOps variados. Sin embargo, hay algunas responsabilidades clave que comparten la mayoría de los ingenieros de DevOps. Entre ellas se encuentran:
Gestión de Proyectos
Los ingenieros de DevOps suelen supervisar y gestionar varios proyectos de TI simultáneamente. En la práctica, esto significa que programan y dirigen reuniones, fijan plazos, controlan a los miembros del equipo, delegan trabajo, evalúan el trabajo, entrenan a los compañeros de equipo y asesoran sobre las decisiones del proyecto.
Los ingenieros de DevOps también están en contacto con los usuarios, la dirección y los desarrolladores cuando diseñan un sistema.
Gestionar la Seguridad del Sistema
Los ingenieros de DevOps optimizan la seguridad de la infraestructura informática de su empresa diseñando sistemas, actualizaciones y prácticas ciberseguras. Aunque todos los ingenieros de DevOps tienen en cuenta la seguridad en su trabajo diario, algunos ingenieros de DevOps (llamados ingenieros SecDevOps) se centran en la seguridad del sistema a tiempo completo.
Mejorar la Infraestructura de TI
Los ingenieros de DevOps buscan puntos débiles en la infraestructura de TI y trabajan para mejorarlos. En concreto, crean soluciones para ayudar a los desarrolladores a trabajar más rápido, detectar fallos en los programas o diseñar actualizaciones en función de los comentarios de los usuarios.
Como los ingenieros de DevOps se centran en un enfoque CI/CD, realizan constantemente pequeñas mejoras en la infraestructura de TI.
Automatizar las Tareas Repetitivas
Los ingenieros de DevOps reducen las tareas repetitivas necesarias para dar vida a un nuevo sistema o actualización. Por ejemplo, un ingeniero de DevOps puede diseñar un plugin de software para ayudar a los desarrolladores a codificar más rápido y con menos errores.
Es importante señalar que los ingenieros de DevOps no intentan automatizar a los desarrolladores para que no tengan que trabajar. Simplemente, trabajan para mejorar la eficiencia de los desarrolladores implementando soluciones de desarrollo más fáciles y rápidas.
Evaluación Comparativa y Pruebas de Rendimiento
Los ingenieros de DevOps hacen un seguimiento del funcionamiento diario de la infraestructura de TI mediante pruebas de referencia. Las pruebas de referencia les ayudan a identificar áreas de ineficiencia en el sistema y a mitigar posibles problemas antes de que surjan.
Las pruebas de referencia que utiliza cada ingeniero de DevOps dependen de la organización y del proyecto, aunque normalmente utilizan pruebas que se adhieren a los siete principios de referencia.
- Relevancia
- Representatividad
- Equidad
- Repetibilidad
- Rentabilidad
- Escalabilidad
- Transparencia
Optimización de los Ciclos de Lanzamiento
Los ingenieros de DevOps optimizan el ciclo de lanzamiento del sistema reduciendo el tiempo y los recursos necesarios para los proyectos o las actualizaciones. Hay muchas formas de que los ingenieros de DevOps mejoren el ciclo de lanzamiento, como la eliminación de las pérdidas de tiempo, la priorización de los componentes críticos de cada lanzamiento o la introducción de nuevo software y herramientas.
Supervisión y Notificación de Errores
Por último, los ingenieros de DevOps realizan un seguimiento constante del software y los sistemas para ayudar a resolver rápidamente los errores del sistema. Los ingenieros de DevOps se preocupan específicamente de reducir el tiempo que transcurre entre el momento en que se detecta el error (es decir, el Tiempo para Detectar o TTD) y se soluciona (es decir, el Tiempo para Minimizar o TTM). Mientras que algunos ingenieros de DevOps resuelven los errores del sistema manualmente, otros lo dejan en manos de los desarrolladores de la pila completa.
¿Qué Habilidades Necesitas para ser un Ingeniero de DevOps?
Como los ingenieros DevOps tienen diversas responsabilidades en el trabajo, necesitarás muchas habilidades diferentes para convertirte en uno. En esta sección se describen algunas de estas habilidades fundamentales.
Experiencia con Herramientas de Automatización
En primer lugar, necesitarás saber cómo utilizar las herramientas de automatización. Las herramientas de automatización te permiten subcontratar funciones repetitivas a programas de automatización. Dos de estos programas de automatización son
Atlassian Bamboo
Atlassian Bamboo es una herramienta de integración y CI que permite a los desarrolladores automatizar el proceso de construcción y despliegue. Es un programa de código abierto que funciona con todos los lenguajes de programación, y que ofrece construcciones previas, pruebas de código, herramientas de informes y herramientas de despliegue. Esta herramienta también se integra con otros programas como Jira, BitBucket y Git (entre otros). Atlassian está disponible en versiones gratuitas y de pago, en función del tamaño y los requisitos de tu equipo.
Jenkins
Jenkins es un servidor de automatización gratuito que ayuda a los desarrolladores a automatizar el despliegue de la construcción de sistemas mediante plugins. Jenkins ofrece más de 1.800 plugins aportados por la comunidad y es de código abierto (por lo que puedes desarrollar y utilizar tus propios plugins). Jenkins también se integra con herramientas como Git.
Experiencia con Sistemas de Control de Versiones
Como ingeniero de DevOps, también tendrás que familiarizarte con los sistemas de control de versiones (VCS). Estas herramientas ayudan a los desarrolladores y a los ingenieros de DevOps a realizar un seguimiento de las actualizaciones de su repositorio de código fuente. También resuelven los conflictos cuando varias personas añaden código a la vez.
Si vienes de un entorno de desarrollador de software, ya sabrás cómo usar herramientas VCS populares como Git. Git es una herramienta gratuita y de código abierto que se integra con herramientas de alojamiento de repositorios como GitHub y BitBucket.
Experiencia con Herramientas de Alojamiento de Repositorios
Como parte del equipo de desarrollo, sabrás utilizar las herramientas de alojamiento de repositorios como ingeniero DevOps. Como su nombre indica, las herramientas de alojamiento de repositorios alojan el código de forma segura en la nube. Estas herramientas también dan a los desarrolladores acceso a código pre escrito para acelerar el proceso de desarrollo de software.
Tendrás que estar familiarizado con tres herramientas de alojamiento cruciales como ingeniero de DevOps. Estas son:
GitHub
GitHub es un servicio de alojamiento basado en la nube que utilizan más de 65 millones de desarrolladores, más de 3 millones de organizaciones y el 72 % de las empresas de la lista Fortune 500 del mundo. GitHub existe desde 2008 y ofrece versiones gratuitas y de pago. Actualmente, Microsoft es el propietario de GitHub.
GitLab
GitLab es una alternativa a GitHub con características DevOps como la integración continua, la seguridad y las herramientas de gestión de proyectos. GitLab ofrece planes gratuitos y de pago y se integra con Git. A pesar de sus nombres similares, no hay ninguna afiliación entre GitLab y GitHub.
Atlassian BitBucket
BitBucket es un servicio de alojamiento diseñado específicamente para equipos de desarrollo. Se integra con Git y con herramientas de gestión de proyectos como Jira y Trello. Si tienes cinco usuarios o menos, puedes utilizar BitBucket a través de su plan gratuito.
Experiencia con Herramientas de Gestión de la Configuración
Como ingeniero DevOps, también deberás estar familiarizado con las herramientas de gestión de la configuración. Estas herramientas ayudan a los profesionales de TI a configurar de forma coherente los diferentes elementos del sistema o de la red. También ayudan a los desarrolladores a reducir el tiempo de despliegue de un nuevo sistema.
Hay dos herramientas populares de gestión de la configuración que utilizan los ingenieros de DevOps. Entre ellas se encuentran:
Puppet
Puppet es anterior a DevOps, ya que Puppet Labs Limited lo lanzó por primera vez en 2005. A pesar de su antigüedad, Puppet sigue siendo una de las mejores herramientas de gestión de la configuración en la actualidad, ya que permite a los desarrolladores establecer el estado deseado para su sistema. A continuación, Puppet configura el sistema en ese estado de manera automática.
Chef
Chef es otra herramienta de gestión de la configuración de código abierto. Chef está construida en torno al «Servidor Chef», que actúa como su centro de operaciones. El servidor Chef supervisa y gestiona las estaciones de trabajo Chef y los nodos Chef de la red. Al igual que Puppet, Chef permite a los desarrolladores establecer el estado deseado para su sistema en forma de «Libro de recetas». Facebook, IBM y Rakuten utilizan Chef.
Experiencia con el Software de Monitorización
Como la monitorización es un componente crucial del trabajo de un ingeniero DevOps, los ingenieros DevOps deben estar familiarizados con el software de monitorización. El software de monitorización te permite vigilar la infraestructura para detectar cualquier problema potencial.
Aunque cada organización tiene su enfoque de la monitorización, puedes utilizar herramientas de monitorización como:
Nagios
Nagios es una antigua herramienta DevOps de código abierto lanzada en 2002. Nagios vigila tu infraestructura en segundo plano y te avisa si sospecha que hay un problema. Más de 9.000 clientes utilizan actualmente Nagios para la supervisión de servidores y aplicaciones.
Raygun
Raygun es un servicio de monitorización en tiempo real para aplicaciones web y móviles. Raygun hace un seguimiento de los despliegues, la experiencia del cliente, los errores y las caídas, y cómo interactúan los usuarios con el sistema. Marcas como Coca-Cola, Target, Microsoft y Avis utilizan Raygun.
Habilidades de Codificación
Como los ingenieros de DevOps son una parte crucial del proceso de desarrollo, necesitarás estar familiarizado con algunos de los lenguajes de programación y scripting más comunes para tener éxito en tu papel.
Un lenguaje de scripting es un lenguaje de programación que se traduce en código máquina después de ejecutarlo. Hay dos tipos de lenguajes de scripting: del lado del servidor y del lado del cliente. Algunos de los lenguajes de programación del lado del cliente más populares son HTML, CSS y Javascript. Algunos de los lenguajes de programación del lado del servidor más populares son PHP, Node.js, ASP.NET, Ruby, Perl, Python y Java.
Un lenguaje de programación utiliza un compilador para convertir el código en código máquina. Dos de los lenguajes de programación más populares son C++ y C.
Experiencia en Herramientas de Contenerización
Los ingenieros de DevOps de muchas organizaciones trabajan con herramientas de contenerización. Las herramientas de contenerización ayudan a los desarrolladores a empaquetar el código y desplegarlo en pequeños contenedores. El despliegue de código con la contenerización permite que los sistemas se ejecuten más rápidamente y con mayor eficacia entre diferentes entornos.
Para convertirte en un ingeniero DevOps de éxito, debes aprender los fundamentos de las herramientas de contenerización como
Docker
Docker es una herramienta de plataforma como servicio que permite a los desarrolladores construir, empaquetar y desplegar código mediante contenedores. Docker se integra con GitHub y potencia DevKinsta.
Kubernetes
Kubernetes (también conocido como «K8s») es un sistema de código abierto para el despliegue y la gestión que utiliza la contenerización. Kubernetes ofrece despliegues automáticos, gestión de la configuración, empaquetado automático de contenedores, ejecución por lotes y equilibrio de carga (entre otras características).
Experiencia con Herramientas de Gestión de Proyectos
Como los ingenieros DevOps gestionan y supervisan los proyectos de desarrollo, necesitas conocer las herramientas de desarrollo de proyectos antes de convertirte en un ingeniero DevOps. Las herramientas de gestión de proyectos ayudan a las personas a realizar un seguimiento de los proyectos mediante diagramas de Gantt, listas de comprobación y sistemas de archivo basados en tarjetas.
Tres de las herramientas de gestión de proyectos más populares para DevOps son:
- Trello: Trello es una herramienta de gestión de proyectos basada en tableros. Con Trello, puedes crear tableros con una serie de listas. Luego, puedes mover tarjetas entre estas listas. Trello es una herramienta colaborativa, lo que significa que varias personas pueden editar cada tablero. La gente suele comparar Trello con Asana.
- Atlassian Jira: Jira es una herramienta de gestión de proyectos diseñada específicamente para los equipos de TI que utilizan un enfoque Agile o DevOps. Jira te permite hacer un seguimiento de cada tarea necesaria con tarjetas y tableros para el proyecto. Jira es también una herramienta de colaboración que alberga a varios usuarios simultáneamente.
- Atlassian Confluence: Atlassian Confluence es una herramienta de espacio de trabajo que permite a los equipos pequeños compartir el trabajo y gestionar los proyectos a través de un calendario o línea de tiempo. Algunos equipos utilizan Jira y Confluence juntos.
Experiencia con los Servicios de la Nube Pública
Como los ingenieros DevOps trabajan frecuentemente con proyectos basados en la nube, necesitarás estar familiarizado con los servicios basados en la nube para tener éxito en tu nuevo papel. Los servicios de nube pública son servicios informáticos que permiten a las organizaciones compartir redes, almacenamiento y hardware. Cuando las organizaciones utilizan los servicios de la nube pública, acceden a su infraestructura a través de Internet.
Tres de los servicios de nube pública más populares son:
- Microsoft Azure
- Nube de Google
- Servicios web de Amazon (AWS)
Habilidades de Cara al Cliente
Como los desarrolladores de DevOps tienen que trabajar con los usuarios del sistema, necesitarás fuertes habilidades de atención al cliente para tener éxito en DevOps. En concreto, necesitarás una excelente capacidad de escucha activa, buenas dotes de comunicación, habilidades para la resolución de conflictos y un don para comprender las necesidades de los usuarios.
Habilidades de Gestión de la Colaboración
Como los ingenieros de DevOps suelen trabajar en equipos pequeños, necesitarás fuertes habilidades de trabajo en equipo. En concreto, tendrás que ser muy bueno para dar retroalimentación constructiva, aceptarla, hacer intercambio de ideas en grupo y trabajar hacia un objetivo común.
Habilidades de Desarrollo en WordPress
Dado que WordPress impulsa el 40 % de todos los sitios web, es posible que necesites fuertes habilidades de desarrollo de WordPress para formar parte de un equipo de DevOps de WordPress. En concreto, tendrás que aprender cómo funciona WordPress y utilizar herramientas de alojamiento como DevKinsta.
DevKinsta es una herramienta de desarrollo gratuita que la gente utiliza para crear, desarrollar y probar sitios web de WordPress. DevKinsta ofrece gestión de bases de datos, pruebas de correo electrónico incorporadas, registro de errores de WordPress y un despliegue sencillo. Más de 10.000 profesionales utilizan actualmente DevKinsta.
Salario de los Ingenieros DevOps
Aunque la ingeniería DevOps aún está en desarrollo, la mayoría de los ingenieros DevOps ganan un excelente salario.
A fecha de 28 de junio de 2021, el salario medio de los ingenieros DevOps en Estados Unidos era de 118.872 dólares. Esto significa que la mayoría de los ingenieros de DevOps a tiempo completo ganan entre 107.023 y 132.217 dólares. La variación en este rango tiene en cuenta la educación, la experiencia profesional, las habilidades, las responsabilidades, la ubicación y la empresa. Si tu empresa te paga horas extras, primas o beneficios, tu salario podría estar fuera de esta horquilla.
Como DevOps es todavía una novedad, cabe señalar que el salario medio de DevOps es diferente en algunos sitios web. Por ejemplo, Indeed informa de que el salario medio de DevOps es de 121.035 dólares en EE. UU. (a fecha de 13 de julio de 2021).
Qué Hay que Tener en Cuenta al Contratar a un Ingeniero de DevOps
Hasta ahora, este artículo se ha centrado en las personas que quieren convertirse en ingenieros DevOps. ¿Pero qué pasa con los empleadores? Si vas a contratar a un ingeniero DevOps, algunas habilidades y atributos esenciales distinguen a los grandes ingenieros DevOps.
Entre ellos se encuentran los siguientes.
Habilidades Técnicas
- Conocimiento de lenguajes de programación y scripting
- Comprensión de la metodología Agile y del SDLC
- Comprensión de conceptos como la contenerización y la automatización
- Experiencia en ciberseguridad
- Experiencia con sistemas de control de versiones, herramientas de alojamiento de repositorios, herramientas de gestión de la configuración, herramientas de contenerización y herramientas de automatización
- Experiencia en el seguimiento, planificación y diseño de proyectos de desarrollo
Si un desarrollador potencial tiene experiencia con las siguientes herramientas, también puede tener las habilidades para ser un gran ingeniero DevOps:
- Bamboo
- Jenkins
- Git
- GitHub
- BitBucket
- Puppet
- Chef
- Nagios
- Raygun
- Docker
- DevKinsta
- Kubernetes
- Trello
- Atlassian Jira
- Atlassian Confluence
Habilidades Interpersonales
- Experiencia en la gestión de un proyecto, incluyendo la organización de reuniones, el establecimiento de plazos y la delegación de trabajo
- Excelentes habilidades de colaboración y trabajo en equipo
- Buena capacidad creativa para resolver problemas
- Capacidad para aceptar comentarios y ajustar el trabajo en consecuencia
- Gran capacidad de escucha activa
- Experiencia trabajando con usuarios y en equipos diversos en los que las personas tienen conjuntos de habilidades muy diferentes
Antecedentes Adecuados para los Trabajos de DevOps
Como DevOps es un campo nuevo, muchos ingenieros de DevOps pasan a serlo desde otras funciones. Si la persona que estás considerando tiene experiencia en desarrollo de software, gestión de hardware, gestión general de TI o administración de sistemas, tendrá habilidades transferibles adecuadas para un trabajo de ingeniería DevOps.
Un candidato también puede ser un gran ingeniero de DevOps si tiene una licenciatura o superior en uno de estos campos:
- Ciencias de la Computación
- Tecnología de la información
- Sistemas de información
- Ingeniería de software
- Ingeniería de sistemas
Resumen
Aunque DevOps todavía está en desarrollo, los ingenieros de DevOps son cada vez más importantes en las empresas con sistemas informáticos extensos (pero críticos).
Un ingeniero de DevOps de éxito vale su peso en oro, ya que puede supervisar proyectos de TI, optimizar el rendimiento de otros equipos y acelerar el ciclo de vida del desarrollo.
Supongamos que quieres convertirte en un excelente profesional de DevOps. En ese caso, deberás desarrollar tus conocimientos de DevOps y familiarizarte con los servicios populares de la nube pública, las tecnologías de virtualización, las herramientas de gestión de proyectos, las herramientas de gestión de la configuración, las herramientas de automatización y las herramientas adyacentes a la codificación. También tendrás que desarrollar fuertes habilidades de colaboración, escucha y gestión de proyectos.
¿Qué opinas del enfoque DevOps? Cuéntanoslo en los comentarios.
Deja una respuesta