¿Para qué sirve DevOps y quiénes son los especialistas en DevOps?

Cuando una aplicación no funciona, lo último que uno quiere escuchar de sus colegas es la frase "el problema está de su lado". Al final, los que sufren son los usuarios, y a ellos no les importa qué parte del equipo es responsable de la falla. La cultura DevOps surgió precisamente para unir desarrollo y soporte y reunirlos en torno a una responsabilidad común por el producto final.

¿Qué prácticas se incluyen en el concepto de DevOps y por qué son necesarias? ¿En qué trabajan los ingenieros de DevOps y qué habilidades deben tener? A estas y otras preguntas responden los expertos de EPAM: Kirill Sergeyev, ingeniero de sistemas y evangelista de DevOps, e Igor Boyko, ingeniero de sistemas senior y coordinador de uno de los equipos de DevOps de la empresa.

¿Para qué sirve DevOps y quiénes son los especialistas en DevOps?

¿Para qué sirve DevOps?

Antes existía una barrera entre los desarrolladores y el soporte (es decir, operaciones). Suena paradójico, pero tenían diferentes objetivos y KPIs, a pesar de que realizaban una tarea común. El objetivo del desarrollo era implementar los requisitos del negocio lo más rápido posible y añadirlos al producto en funcionamiento. El soporte se encargaba de que la aplicación funcionara de manera estable, y cualquier cambio ponía en peligro esa estabilidad. Se presenta un conflicto de intereses: DevOps surgió para resolverlo.

¿Qué es DevOps?

La pregunta es buena y polémica: aún no hay un consenso mundial al respecto. En EPAM consideran que DevOps combina tecnologías, procesos y una cultura de interacción dentro del equipo. Esta combinación está destinada a la entrega continua de valor a los usuarios finales.

Kirill Sergeyev: "Los desarrolladores escriben código, los testers lo revisan, y los administradores implementan el producto final en el entorno de producción. Durante mucho tiempo, estas partes del equipo estuvieron algo disociadas, y luego surgió la idea de unirlas en un proceso común. Así nacieron las prácticas de DevOps."

Llegó el día en que los desarrolladores y los ingenieros de sistemas se interesaron por el trabajo del otro. La barrera entre producción y soporte comenzó a desdibujarse. Así nació DevOps, que incluye prácticas, cultura y orden de interacción en el equipo.

¿Para qué sirve DevOps y quiénes son los especialistas en DevOps?

¿Cuál es la esencia de la cultura DevOps?

La responsabilidad por el resultado final recae en cada uno de los miembros del equipo. Lo más interesante y complicado de la filosofía DevOps es comprender que una persona en particular no solo es responsable de su fase de trabajo, sino que también tiene la responsabilidad de cómo funcionará todo el producto. El problema no está del lado de alguien en particular; es común, y cada miembro del equipo contribuye a resolverlo.

Una de las premisas más importantes de la cultura DevOps es resolver problemas, y no simplemente aplicar prácticas DevOps. Además, estas prácticas no se implementan «del lado de alguien», sino en todo el producto. Un proyecto no necesita únicamente un ingeniero DevOps; necesita una solución al problema, y el rol del ingeniero DevOps puede distribuirse entre varios miembros del equipo con diferentes especializaciones.

¿Cuáles son las prácticas DevOps?

Las prácticas DevOps abarcan todas las etapas del ciclo de vida del software.

Igor Boiko: «El caso ideal es cuando comenzamos a utilizar prácticas DevOps desde la iniciación del proyecto. Junto con los arquitectos, planificamos cuál será el paisaje arquitectónico de la aplicación, dónde se ubicará y cómo escalará, y elegimos la plataforma. Actualmente, la arquitectura de microservicios está de moda; para ella elegimos un sistema de orquestación: es necesario poder gestionar cada elemento de la aplicación por separado y actualizarlo independientemente de los demás. Otra práctica es la “infraestructura como código”. Este enfoque implica que la infraestructura del proyecto se crea y gestiona mediante código, y no a través de la interacción directa con los servidores.

A continuación, pasamos a la etapa de desarrollo. Aquí, una de las prácticas más importantes es establecer CI/CD: debemos ayudar a los desarrolladores a integrar cambios en el producto de manera rápida, en pequeñas porciones, más frecuentemente y sin dolor. CI/CD abarca tanto la verificación del código como la integración del maestro en la base de código, y el despliegue de la aplicación en entornos de prueba y producción.

En las etapas de CI/CD, el código pasa por quality gates. Estos se utilizan para verificar que el código que sale desde la estación de trabajo del desarrollador cumpla con los criterios de calidad establecidos. Aquí se añaden pruebas unitarias y de UI. Para un despliegue rápido, indoloro y enfocado del producto, se puede elegir el tipo de despliegue adecuado.

Las prácticas de DevOps también tienen su lugar en la etapa de soporte de un producto terminado. Se utilizan para monitoreo, feedback, seguridad e implementación de cambios. DevOps aborda todas estas tareas desde la perspectiva de mejoras continuas. Minimizamos las operaciones repetitivas y las automatizamos. Esto incluye migraciones, la expansión de la aplicación y el mantenimiento de la funcionalidad.

¿Cuáles son los beneficios de las prácticas de DevOps?

Si tuviéramos que escribir un manual sobre las prácticas modernas de DevOps, en su primera página habría tres puntos: automatización, aceleración del lanzamiento y rápida retroalimentación de los usuarios.

Kirill Sergeyev: «El primero es la automatización. Todas las interacciones en el equipo pueden automatizarse: escribimos código – desplegamos – verificamos – instalamos – recopilamos feedback – volvemos al inicio. Todo esto se hace automáticamente.

El segundo es la aceleración del lanzamiento y simplificación del desarrollo. Al cliente siempre le importa que el producto llegue al mercado lo más pronto posible y empiece a proporcionar beneficios antes que sus competidores. El proceso de entrega del producto se puede mejorar indefinidamente: reduciendo tiempo, agregando hitos de control adicionales y perfeccionando la supervisión.

El tercero es la aceleración de la retroalimentación del usuario. Si tiene comentarios, podemos realizar ajustes de inmediato y actualizar la aplicación a continuación.»

¿Para qué sirve DevOps y quiénes son los especialistas en DevOps?

¿Cómo se relacionan los conceptos de 'ingeniero de sistemas', 'ingeniero de construcción' y 'ingeniero de DevOps'?

Se superponen, pero pertenecen a áreas ligeramente diferentes.

Un ingeniero de sistemas en EPAM es un cargo. Pueden ser de diferentes niveles: desde junior hasta especialista principal.

Un ingeniero de construcción es más un rol que se puede desempeñar en un proyecto. Hoy en día se refiere a las personas responsables de CI/CD.

Se llama ingeniero de DevOps a un especialista que implementa prácticas de DevOps en un proyecto.

En resumen, esto significa lo siguiente: una persona en el cargo de ingeniero de sistemas desempeña en el proyecto el rol de ingeniero de construcción y se encarga de implementar las prácticas de DevOps.

¿En qué exactamente se ocupa un ingeniero de DevOps?

Los ingenieros de DevOps integran todas las partes que componen un proyecto. Conocen la especificidad del trabajo de programadores, testers y administradores de sistemas, y ayudan a simplificar sus tareas. Entienden las necesidades y requerimientos del negocio, su papel en el proceso de desarrollo, y construyen el proceso teniendo en cuenta los intereses del cliente.

Hemos hablado mucho sobre automatización, que es lo que los ingenieros de DevOps abordan primero. Este es un aspecto muy importante, que incluye, entre otras cosas, la preparación del entorno.

Kirill Sergeyev: "Antes de implementar actualizaciones en el producto, deben ser probadas en un entorno externo. Este lo preparan los ingenieros de DevOps. Ellos también implantan la cultura DevOps en el proyecto en general: introducen prácticas DevOps en todos los niveles de sus proyectos. Estos tres principios: automatización, simplificación, aceleración, los aplican en todas partes donde pueden llegar".

¿Qué debe saber un ingeniero de DevOps?

En términos generales, debe tener conocimientos en diferentes áreas: programación, sistemas operativos, bases de datos, sistemas de construcción y configuración. A esto se suma la habilidad para trabajar con infraestructura en la nube, sistemas de orquestación y monitoreo.

1. Lenguajes de programación

Los ingenieros de DevOps conocen varios lenguajes básicos para la automatización y pueden, por ejemplo, decir a un programador: "¿Por qué no haces la instalación del código no manualmente, sino a través de nuestro script que automatiza todo? Para ello prepararemos un archivo de configuración que será fácil de leer tanto para ti como para nosotros, y podremos modificarlo en cualquier momento. Además, podremos ver quién realizó cambios, cuándo y para qué".

Un ingeniero de DevOps puede aprender uno o varios de estos lenguajes: Python, Groovy, Bash, Powershell, Ruby, Go. No es necesario conocerlos a fondo; con entender lo básico de la sintaxis, los principios de OOP y la habilidad de escribir scripts sencillos para automatización es suficiente.

2. Sistemas operativos

Un ingeniero de DevOps debe comprender en qué servidor se instalará el producto, en qué entorno se ejecutará y con qué servicios interactuará. Puede elegir especializarse en el entorno Windows o Linux.

3. Sistemas de control de versiones

Sin conocer sistemas de control de versiones, un ingeniero de DevOps no irá muy lejos. Git es uno de los sistemas más populares en la actualidad.

4. Proveedores de nube

AWS, Google, Azure, especialmente si hablamos del segmento Windows.

Kirill Sergeyev: «Los proveedores de nube nos ofrecen servidores virtuales, que se integran perfectamente en las líneas de CI/CD.

Instalar diez servidores físicos requiere alrededor de cien operaciones manuales. Cada servidor debe ser encendido manualmente, instalar y configurar el sistema operativo necesario, instalar nuestra aplicación en esos diez servidores y luego verificar todo diez veces. Los servicios en la nube reemplazan este procedimiento con diez líneas de código, y un buen ingeniero DevOps debe saber cómo manejarlas. Así ahorra tiempo, esfuerzo y dinero — tanto para el cliente como para la empresa».

5. Sistemas de orquestación: Docker y Kubernetes

Kirill Sergeyev: «Los servidores virtuales se dividen en contenedores, en cada uno de los cuales podemos instalar nuestra aplicación. Cuando hay muchos contenedores, se necesita gestionarlos: encender uno, apagar otro, y hacer copias de seguridad en algunos. Esto se convierte en una tarea bastante compleja, para la cual se necesita un sistema de orquestación.

Anteriormente, cada aplicación era gestionada por un servidor separado; cualquier cambio en su funcionamiento podía afectar su integridad. Gracias a los contenedores, las aplicaciones se vuelven aisladas y se ejecutan por separado — cada una en su máquina virtual. Si ocurre un fallo, no es necesario perder tiempo buscando la causa. Es más fácil destruir el contenedor antiguo y añadir uno nuevo».

6. Sistemas de configuraciones: Chef, Ansible, Puppet

Cuando es necesario dar soporte a un parque de servidores completo, se deben realizar muchas operaciones similares. Esto es lento y complicado, y además, el trabajo manual aumenta la probabilidad de errores. Aquí es donde entran en juego los sistemas de configuración. Con ellos se crea un script, que es fácil de leer tanto para programadores como para ingenieros DevOps y administradores de sistemas. Este script ayuda a realizar operaciones idénticas en los servidores de manera automática. Así se reduce la cantidad de operaciones manuales (y, por lo tanto, errores).

¿Qué carrera puede construir un ingeniero DevOps?

Se puede avanzar tanto horizontal como verticalmente.

Igor Boiko: «Desde el punto de vista del desarrollo horizontal, los ingenieros DevOps ahora tienen las perspectivas más amplias. Todo está en constante cambio, y se pueden adquirir habilidades en diferentes áreas: desde sistemas de control de versiones hasta monitoreo, desde gestión de configuraciones hasta bases de datos.

Puede convertirse en arquitecto de sistemas si a un empleado le interesa entender cómo funciona una aplicación en todas las etapas de su ciclo de vida, desde el desarrollo hasta el soporte.

¿Cómo convertirse en ingeniero DevOps?

  1. Lea los libros "El Proyecto Phoenix" y DevOps Handbook. Son verdaderos pilares de la filosofía DevOps, siendo el primero una novela de ficción.
  2. Estudie las tecnologías de la lista anterior: por su cuenta o en cursos en línea.
  3. Únase como ingeniero DevOps a un proyecto de código abierto.
  4. Practique y proponga prácticas DevOps en sus proyectos personales y laborales.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster