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

Cuando la aplicación no funciona, quiero escuchar la frase "el problema está de tu lado" por parte de colegas. Como resultado, los usuarios sufren, pero no les importa qué parte del equipo es responsable del desglose. La cultura de DevOps vino solo para unir el desarrollo y el soporte y unirlos en torno a una responsabilidad común para 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 estas y otras preguntas: Kirill Sergeyev, 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 compañía.



¿Por qué necesito DevOps?


Anteriormente, había una barrera entre los desarrolladores y el soporte (las llamadas operaciones). Suena paradójico, pero tenían objetivos y KPI diferentes, aunque hicieron algo en común. El objetivo de desarrollo era implementar los requisitos del negocio lo más rápido posible y agregarlos a un producto que funcione. El soporte fue responsable de garantizar que la aplicación funcionara de manera estable y que cualquier cambio pusiera en riesgo la estabilidad. Hay un conflicto de intereses: DevOps ha aparecido para resolverlo.

¿Qué es DevOps?


La pregunta es buena y controvertida: finalmente, el mundo aún no ha acordado esto. EPAM cree que DevOps combina tecnología, procesos y una cultura de interacción dentro del equipo. Esta asociación tiene como objetivo la entrega continua de valores a los usuarios finales.

Kirill Sergeyev : “Los desarrolladores escriben el código, los verificadores lo comprueban y los administradores instalan el producto final en el entorno de producción. Durante mucho tiempo, estas partes del equipo estuvieron algo fragmentadas, y luego surgió la idea de combinarlas en un proceso común. Así es como aparecieron las prácticas de DevOps ".

Llegó el día en que los desarrolladores y los ingenieros de sistemas se interesaron en el trabajo del otro. La barrera entre la producción y el apoyo comenzó a desvanecerse. Así es como surgió DevOps, que incluye prácticas, cultura y trabajo en equipo.



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


El hecho de que la responsabilidad del resultado final recae en cada uno de los miembros del equipo. Lo más interesante y difícil de la filosofía de DevOps es comprender que una persona en particular no solo es responsable de su etapa de trabajo, sino que también es responsable de cómo funcionará todo el producto. El problema no radica en ningún lado: es común y cada miembro del equipo ayuda a resolverlo.

El punto más importante de la cultura DevOps es resolver el problema y no solo aplicar la práctica de DevOps. Además, estas prácticas no se implementan "del lado de alguien", sino en todo el producto. El proyecto no necesita un ingeniero de DevOps por sí solo: necesita una solución al problema, y ​​el papel de un ingeniero de DevOps se puede distribuir entre varios miembros del equipo con diferentes especializaciones.

¿Cuáles son las prácticas de 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 usar las prácticas DevOps justo al inicio del proyecto. Junto con los arquitectos, planificamos qué tipo de aplicación tendrá el paisaje arquitectónico, dónde se ubicará y cómo escalar, elegimos la plataforma. Ahora la arquitectura de microservicios está de moda, para ello elegimos un sistema de orquestación: necesitamos poder administrar cada elemento de la aplicación individualmente y actualizarlo independientemente de los demás. Otra práctica es "infraestructura como código". Este es el nombre del enfoque en el que la infraestructura del proyecto se crea y administra utilizando código, en lugar de a través de la interacción directa con los servidores.

A continuación, pasamos a la fase de desarrollo. Aquí, una de las prácticas más importantes es construir CI / CD: debe ayudar a los desarrolladores a integrar los cambios en el producto rápidamente, en pequeñas porciones, con mayor frecuencia y sin dolor. CI / CD cubre la verificación del código, completando el asistente en la base del código e implementando 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, verifican que el código que salió de la estación de trabajo del desarrollador cumple con los criterios de calidad especificados. La unidad y las pruebas de IU se agregan aquí. Para una implementación de producto rápida, indolora y enfocada, puede elegir el tipo de implementación adecuada.

Las prácticas de DevOps tienen un lugar en la etapa de soporte del producto terminado. Se utilizan para monitoreo, retroalimentación, seguridad, implementación de cambios. DevOps analiza todas estas tareas en términos de mejoras continuas. Minimizamos las operaciones repetitivas, las automatizamos. Esto también incluye migraciones, extensiones de aplicaciones y soporte de salud ".

¿Por qué son útiles las prácticas de DevOps?


Si escribiéramos un libro de texto sobre prácticas modernas de DevOps, habría tres puntos en su primera página: automatización, lanzamiento acelerado y comentarios rápidos de los usuarios.

Kirill Sergeev : “El primero es la automatización. Podemos automatizar todas las interacciones en el equipo: escribimos el código, lo implementamos, lo verificamos, lo instalamos, lo recopilamos, lo devolvimos 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 ingrese al mercado lo antes posible y comience a beneficiarse antes que los análogos de la competencia. El proceso de entrega del producto se puede mejorar infinitamente: reduzca el tiempo, agregue marcas de control adicionales, mejore la supervisión.

El tercero es acelerar los comentarios de los usuarios. Si tiene comentarios, podemos hacer correcciones de inmediato e inmediatamente actualizar la aplicación ".



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


Se cruzan, pero pertenecen a áreas ligeramente diferentes.

El ingeniero de sistemas en EPAM es un puesto. Vienen en diferentes niveles: desde junior hasta jefe de especialistas.

Es más probable que un ingeniero de construcción desempeñe un papel en un proyecto. Ahora este es el nombre de las personas responsables de CI / CD.

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

Para resumir todo esto, resulta algo como esto: una persona en el puesto de ingeniero de sistemas desempeña el papel de un ingeniero de construcción en el proyecto y se dedica a la implementación de prácticas DevOps allí.

¿Qué hace exactamente un ingeniero de DevOps?


Los ingenieros de DevOps reunieron todas las partes que componen el proyecto. Conocen los detalles del trabajo de los programadores, probadores, administradores de sistemas y ayudan a simplificar su trabajo. Entienden las necesidades y requisitos del negocio, su papel en el proceso de desarrollo y construyen el proceso teniendo en cuenta los intereses del cliente.

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

Kirill Sergeyev : “Antes de introducir actualizaciones para el producto, deben probarse en un entorno de terceros. Está siendo preparado por los ingenieros de DevOps. Inculcan la cultura DevOps como un todo en el proyecto: introducen prácticas DevOps en todas las capas de sus proyectos. Estos tres principios: automatización, simplificación, aceleración: llevan a todas partes donde puedan llegar ".

¿Qué debe saber un ingeniero de DevOps?


En general, debe tener conocimiento de diferentes áreas: programación, trabajo con sistemas operativos, bases de datos, sistemas de construcción y configuraciones. Se les agrega la capacidad de trabajar con infraestructura en la nube, orquestación y sistemas de monitoreo.

1. Lenguajes de programación

Los ingenieros de DevOps conocen varios lenguajes básicos para la automatización y pueden, por ejemplo, decirle al programador: “Vamos, no instalarás el código manualmente, sino con la ayuda de nuestro script que automatiza todo. Prepararemos un archivo de configuración para él, será conveniente leerlo tanto para usted como para nosotros, y podemos cambiarlo en cualquier momento. Y veremos quién, cuándo y por qué le hace cambios ”.

Un ingeniero de DevOps puede aprender uno o más de estos idiomas: Python, Groovy, Bash, Powershell, Ruby, Go. No es necesario conocerlos a un nivel profundo, solo los principios básicos de la sintaxis, los principios OOP, la capacidad de escribir scripts simples para la automatización.

2. Sistemas operativos

El ingeniero de DevOps debe comprender en qué servidor se instalará el producto, en qué entorno se lanzará y con qué servicios interactuará. Puede optar por especializarse en la familia de Windows o Linux.

3. Sistemas de control de versiones

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

4. Proveedores de la nube

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

Kirill Sergeyev : “Los proveedores de la nube nos proporcionan servidores virtuales que se adaptan perfectamente a las pistas de CI / CD.

La instalación de diez servidores físicos requiere alrededor de cien operaciones manuales. Cada servidor debe iniciarse, instalarse y configurarse manualmente el sistema operativo deseado, instalar nuestra aplicación en estos diez servidores y luego verificar dos veces todo. Los servicios en la nube reemplazan este procedimiento con diez líneas de código, y un buen ingeniero de DevOps debería poder manejarlas. Por lo tanto, 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, debe administrarlos: uno para encender, el otro para apagar, en algún lugar para hacer copias de seguridad. Esto se está convirtiendo en un asunto bastante complicado para el que se necesita un sistema de orquestación.

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

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

Cuando necesita mantener una flota de servidores, debe realizar muchas de las mismas operaciones. Es largo y difícil, e incluso el trabajo manual aumenta la posibilidad de error. Aquí es donde los sistemas de configuración vienen al rescate. Con su ayuda, crean un script que los programadores, los ingenieros de DevOps y los administradores del sistema pueden leer de manera conveniente. Este script ayuda a realizar las mismas operaciones en los servidores automáticamente. Entonces las operaciones manuales (y, por lo tanto, los errores) se vuelven menos.

¿Qué carrera puede desarrollar el ingeniero DevOps?


Puedes desarrollar tanto horizontal como verticalmente.

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

Puede convertirse en un arquitecto de sistemas si un empleado está interesado en comprender cómo funciona la aplicación en todas las etapas de su ciclo de vida, desde el desarrollo hasta el soporte ".

¿Cómo convertirse en un ingeniero DevOps?


  1. Lea los libros del Proyecto Phoenix y el Manual de DevOps. Estos son los verdaderos pilares de la filosofía DevOps, el primero es una novela artística.
  2. Aprenda la tecnología de la lista anterior: en sus propios cursos o en línea.
  3. Únase como ingeniero DevOps para un proyecto de código abierto.
  4. Practique y ofrezca prácticas DevOps en sus proyectos personales y laborales.

Source: https://habr.com/ru/post/465601/


All Articles