¿Por qué se necesita DevOps y quiénes son los especialistas en DevOps?

Cuando una aplicación no funciona, lo último que quieres escuchar de tus compañeros es la frase “el problema está de tu lado”. Como resultado, los usuarios sufren y no les importa qué parte del equipo es responsable de la avería. La cultura DevOps surgió precisamente para unir desarrollo y soporte en torno a una responsabilidad compartida por el producto final.

¿Qué prácticas se incluyen en el concepto de DevOps y por qué son necesarias? ¿Qué hacen los ingenieros de DevOps y qué deberían poder hacer? Los expertos de EPAM responden a estas y otras preguntas: Kirill Sergeev, ingeniero de sistemas y evangelista de DevOps, e Igor Boyko, ingeniero de sistemas líder y coordinador de uno de los equipos de DevOps de la empresa.

¿Por qué se necesita DevOps y quiénes son los especialistas en DevOps?

¿Por qué se necesita DevOps?

Anteriormente existía una barrera entre los desarrolladores y el soporte (las llamadas operaciones). Suena paradójico, pero tenían objetivos y KPI diferentes, aunque hacían lo mismo. El objetivo del desarrollo era implementar los requisitos comerciales lo más rápido posible y agregarlos a un producto funcional. El soporte era responsable de garantizar que la aplicación funcionara de manera estable y cualquier cambio ponía en riesgo la estabilidad. Hay un conflicto de intereses: DevOps apareció para resolverlo.

¿Qué es DevOps?

Es una buena pregunta, y también controvertida: el mundo todavía no se ha puesto de acuerdo finalmente al respecto. EPAM cree que DevOps combina tecnologías, procesos y una cultura de interacción dentro de un equipo. Esta asociación tiene como objetivo entregar valor continuamente a los usuarios finales.

Kirill Sergueev: “Los desarrolladores escriben el código, los evaluadores lo revisan y los administradores implementan el producto final en producción. Durante mucho tiempo, estas partes del equipo estuvieron algo dispersas, y luego surgió la idea de unirlas mediante un proceso común. Así aparecieron las prácticas DevOps”.

Llegó el día en que los desarrolladores y los ingenieros de sistemas se interesaron mutuamente en el trabajo de los demás. La barrera entre producción y apoyo comenzó a desaparecer. Así surgió DevOps, que incluye prácticas, cultura e interacción en equipo.

¿Por qué se necesita DevOps y quiénes son los especialistas en DevOps?

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

El caso es que la responsabilidad del resultado final recae en cada miembro del equipo. Lo más interesante y difícil en la filosofía DevOps es entender que una persona específica no es sólo responsable de su propia etapa de trabajo, sino también de cómo funcionará todo el producto. El problema no está en el lado de nadie: es compartido y cada miembro del equipo ayuda a resolverlo.

Lo más importante en una cultura DevOps es resolver el problema, no sólo aplicar las prácticas de DevOps. Además, estas prácticas no se implementan “por parte de alguien”, sino a lo largo de todo el producto. Un proyecto no necesita un ingeniero de DevOps per se: necesita una solución a un problema, y ​​el rol de un ingeniero de DevOps se puede distribuir entre varios miembros del equipo con diferentes especializaciones.

¿Cuáles son los tipos de prácticas DevOps?

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

Igor Boyko: “El caso ideal es cuando comenzamos a utilizar prácticas de DevOps desde el inicio de un proyecto. Junto con los arquitectos, planificamos qué tipo de paisaje arquitectónico tendrá la aplicación, dónde se ubicará y cómo escalar, y elegimos una plataforma. Hoy en día, la arquitectura de microservicios está de moda; para ello 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 es el nombre de un enfoque en el que la infraestructura del proyecto se crea y gestiona mediante código, en lugar de mediante la interacción directa con los servidores.

A continuación pasamos a la etapa de desarrollo. Una de las prácticas más importantes aquí es la creación de CI/CD: es necesario ayudar a los desarrolladores a integrar los cambios en el producto rápidamente, en pequeñas porciones, con mayor frecuencia y sin complicaciones. CI/CD cubre la revisión del código, la carga del maestro en la base del código y la implementación de la aplicación en entornos de prueba y producción.

En las etapas de CI/CD, el código pasa por puertas de calidad. Con su ayuda, comprueban que el código que sale de la estación de trabajo del desarrollador cumple con los criterios de calidad especificados. Aquí se agregan pruebas unitarias y de interfaz de usuario. Para una implementación del producto rápida, sencilla y enfocada, puede elegir el tipo de implementación adecuado.

Los profesionales de DevOps también tienen un lugar en la etapa de soporte del producto terminado. Se utilizan para seguimiento, retroalimentación, seguridad e introducción de cambios. DevOps analiza todas estas tareas desde una perspectiva de mejora continua. Minimizamos operaciones repetitivas y las automatizamos. Esto también incluye migraciones, expansión de aplicaciones y soporte de rendimiento”.

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

Si estuviéramos escribiendo un libro de texto sobre prácticas modernas de DevOps, habría tres puntos en la primera página: automatización, aceleración de lanzamientos y comentarios rápidos de los usuarios.

Kirill Sergueev: “Lo primero es la automatización. Podemos automatizar todas las interacciones en el equipo: escribimos el código, lo implementamos, lo verificamos, lo instalamos, recopilamos comentarios y regresamos al principio. Todo esto es automático.

El segundo es acelerar el lanzamiento e incluso simplificar el desarrollo. Siempre es importante para el cliente que el producto llegue al mercado lo antes posible y comience a ofrecer beneficios antes que sus homólogos de la competencia. El proceso de entrega del producto se puede mejorar infinitamente: reducir el tiempo, agregar marcas de control adicionales, mejorar el seguimiento.

En tercer lugar está la aceleración de los comentarios de los usuarios. Si tiene comentarios, podemos hacer ajustes de inmediato y actualizar la aplicación de inmediato”.

¿Por qué se necesita DevOps y quiénes son los especialistas en DevOps?

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

Se superponen, pero pertenecen a áreas ligeramente diferentes.

Ingeniero de sistemas en EPAM es un puesto. Los hay de diferentes niveles: desde junior hasta especialista en jefe.

Un ingeniero de construcción es más bien una función que se puede desempeñar en un proyecto. Así se llama a las personas responsables de CI/CD.

Un ingeniero de DevOps es un especialista que implementa prácticas de DevOps en un proyecto.

Si lo resumimos todo, obtenemos algo como esto: una persona en el puesto de ingeniero de sistemas desempeña el papel de ingeniero de construcción en un proyecto y participa en la implementación de prácticas de DevOps allí.

¿Qué hace exactamente un ingeniero de DevOps?

Los ingenieros de DevOps juntan todas las piezas que componen un proyecto. Conocen los detalles del trabajo de programadores, evaluadores, administradores de sistemas y ayudan a simplificar su trabajo. Entienden las necesidades y requisitos de la empresa, su papel en el proceso de desarrollo y construyen el proceso teniendo en cuenta los intereses del cliente.

Hablamos mucho sobre la automatización: esto es lo primero que abordan los ingenieros de DevOps. Este es un punto muy importante que incluye, entre otras cosas, la preparación del medio ambiente.

Kirill Sergueev: “Antes de implementar actualizaciones en el producto, es necesario probarlas en un entorno de terceros. Está preparado por ingenieros de DevOps. Inculcan una cultura DevOps en el proyecto en su conjunto: introducen prácticas DevOps en todas las capas de sus proyectos. Estos tres principios: automatización, simplificación y aceleración, aportan todo lo que pueden llegar”.

¿Qué debe saber un ingeniero de DevOps?

En general, debe tener conocimientos de diferentes áreas: programación, trabajo con sistemas operativos, bases de datos, sistemas de ensamblaje y configuración. Estos se complementan con la capacidad de trabajar con infraestructura de 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, decirle a un programador: “¿Qué tal si instalas el código no a mano, sino usando nuestro script, que automatiza todo? Prepararemos un archivo de configuración, será conveniente para usted y para nosotros leerlo y podremos cambiarlo en cualquier momento. También veremos quién, cuándo y por qué realiza cambios”.

Un ingeniero de DevOps puede aprender uno o más de estos lenguajes: Python, Groovy, Bash, Powershell, Ruby, Go. No es necesario conocerlos a un nivel profundo: los conceptos básicos de sintaxis, los principios de programación orientada a objetos y la capacidad de escribir scripts simples para la automatización son suficientes.

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 optar por especializarse en Windows o en la familia Linux.

3. Sistemas de control de versiones

Sin conocimiento de un sistema de control de versiones, un ingeniero de DevOps no está en ninguna parte. Git es uno de los sistemas más populares actualmente.

4. Proveedores de nube

AWS, Google, Azure, especialmente si hablamos de la dirección de Windows.

Kirill Sergueev: “Los proveedores de la nube nos proporcionan servidores virtuales que encajan perfectamente en CI/CD.

La instalación de diez servidores físicos requiere alrededor de cien operaciones manuales. Cada servidor debe iniciarse, instalarse y configurarse manualmente con el sistema operativo requerido, instalar nuestra aplicación en estos diez servidores y luego verificar todo dos veces diez veces. Los servicios en la nube reemplazan este procedimiento con diez líneas de código y un buen ingeniero de DevOps debería poder operar con ellas. Esto ahorra tiempo, esfuerzo y dinero, tanto para el cliente como para la empresa”.

5. Sistemas de orquestación: Docker y Kubernetes

Kirill Sergueev: “Los servidores virtuales se dividen en contenedores, en cada uno de los cuales podemos instalar nuestra aplicación. Cuando hay muchos contenedores, es necesario administrarlos: encender uno, apagar otro, hacer copias de seguridad en algún lugar. Esto se vuelve bastante complejo y requiere un sistema de orquestación.

Anteriormente, cada aplicación era manejada por un servidor separado; cualquier cambio en su funcionamiento podría afectar la capacidad de servicio de la aplicación. Gracias a los contenedores, las aplicaciones quedan aisladas y se ejecutan por separado, cada una en su propia máquina virtual. Si ocurre una falla, no hay necesidad de perder tiempo buscando la causa. Es más fácil destruir el contenedor viejo y agregar uno nuevo”.

6. Sistemas de configuración: Chef, Ansible, Puppet

Cuando necesitas mantener una flota completa de servidores, tienes que realizar muchas operaciones del mismo tipo. Es largo y difícil, y el trabajo manual también aumenta las posibilidades de error. Aquí es donde los sistemas de configuración vienen al rescate. Con su ayuda, crean un script que es fácil de leer para programadores, ingenieros de DevOps y administradores de sistemas. Este script ayuda a realizar las mismas operaciones en los servidores de forma automática. Esto reduce las operaciones manuales (y por tanto los errores).

¿Qué tipo de carrera puede desarrollar un ingeniero de DevOps?

Puedes desarrollarte tanto en horizontal como en vertical.

Igor Boyko: “Desde el punto de vista del desarrollo horizontal, los ingenieros de DevOps tienen ahora las perspectivas más amplias. Todo cambia constantemente y usted puede desarrollar habilidades en una variedad de áreas: desde sistemas de control de versiones hasta monitoreo, desde administración de configuración hasta bases de datos.

Puedes convertirte en arquitecto de sistemas si un empleado está interesado en comprender 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 de DevOps?

  1. Lea el Proyecto Phoenix y el Manual de DevOps. Estos son los verdaderos pilares de la filosofía DevOps, siendo el primero una obra de ficción.
  2. Aprenda tecnologías de la lista anterior: por su cuenta o mediante cursos en línea.
  3. Únase como ingeniero de DevOps para un proyecto de código abierto.
  4. Practica y ofrece prácticas de DevOps en tus proyectos personales y laborales.

Fuente: habr.com

Añadir un comentario