¿Cuál es el rol / importancia de DevOps en el desarrollo ágil de productos de software?

Crucial, en una palabra. Gracias a estos tipos de rollos de software moderno. Para entender cómo llegamos a ser importantes y lo que realmente hacemos, regresemos hace 20 años, los albores del desarrollo web.

Cada comienzo es simple. Las primeras aplicaciones web no fueron la excepción. Eran scripts CGI (primero Perl, luego PHP) que fueron ejecutados por el servidor web y lo que devolvieron fue devuelto al usuario. Los pioneros generalmente almacenaban datos en archivos simples, por ejemplo, Paul Graham promociona su ventaja competitiva sobre las tiendas web rivales del día en exactamente esa característica (o falta de ella, si lo prefiere). Pero a medida que la web mundial reunió a más y más usuarios, las aplicaciones respaldadas por bases de datos se vuelven estándar. Aún así, durante los primeros diez años, ni los datos ni la carga del servidor fueron un gran cuello de botella. La mayoría de las aplicaciones se ejecutaron en un entorno compartido, es decir, varias aplicaciones se ejecutaban en el mismo hardware físico, que alojaba servidores web y de bases de datos.

Luego, alrededor de 2006, se alcanzó un nuevo umbral. Ruby on Rails llegó a la escena y literalmente revolucionó la forma en que se desarrollaron las aplicaciones web. De repente, los despliegues diarios se convirtieron en un estándar. Rails vino con una herramienta muy conveniente, Capistrano, que hizo que tales implementaciones fueran una tarea tan fácil como disparar un solo comando: `cap deploy`. Aunque la configuración del servidor todavía la realizaban los administradores de sistemas tradicionales que generalmente se eliminaban a años luz de la programación, las recetas de Capistrano (esa es la jerga técnica para el código de automatización de implementación) se escribieron en el mismo idioma que la aplicación, Ruby. Así, la línea entre desarrolladores y administradores de sistemas comenzó a desdibujarse y nació algo nuevo: un desarrollador que entendía más que otros desarrolladores sobre la infraestructura.

Luego vino la parte del palo de hockey de la curva de crecimiento exponencial con un orden de magnitud de más usuarios y toneladas de datos. El escalado, que hasta ahora era un problema solo para las compañías más grandes en el rango de Google o Amazon, golpeó a todos menos a los jugadores más pequeños. Los codificadores que sabían algo sobre infraestructura se encontraron pasando más y más tiempo adaptando las aplicaciones a las necesidades de servir a miles de usuarios simultáneos simultáneamente hasta el punto de que apenas aportaron nuevas características, solo mantuvieron todo el gran remolino de una base de datos (be relacional o no), caché en memoria, base de datos en memoria no persistente para cálculos rápidos, proxy inverso, cola de mensajes, trabajos en segundo plano y lo que no gira 24/7 🙂

Me sorprendió mucho después de tomar un año sabático de tres años en 2010 para volver a un entorno en el que DevOps era una necesidad a tiempo completo. Mi punto de vista puede estar sesgado desde el lado del desarrollador desde el lado del desarrollador, pero la importancia de esta posición difícilmente podría subestimarse. Si bien el trabajo del administrador de sistemas se puede externalizar fácilmente en la mayoría de los entornos, ya sea a una compañía diferente o a un departamento diferente en la misma compañía, DevOps es la cinta adhesiva y WD-40 entre los equipos de desarrollo y operaciones sin los cuales todas las aplicaciones web más simples de hoy no funcionará.

En cualquier organización de TI, el equipo de operaciones es la interfaz directa entre la organización y el usuario final. El equipo de operaciones tiene que ser eficiente desde el punto de vista de liberar los ejecutables a la producción rápidamente y tener conocimiento para comprender las consultas de los usuarios y proporcionar la respuesta correcta. A menudo, cuando el equipo de desarrollo crea la solución, los requisitos funcionales tienen más prioridad que los requisitos de implementación y soporte. Esto lleva a sorpresas durante la implementación, el soporte de producción y la recuperación ante desastres.

En un escenario ágil, el equipo de desarrollo produce funcionalidad de trabajo al final de cada sprint. En la fecha de lanzamiento, si el equipo de operaciones no está preparado para la integración, habrá demoras en el lanzamiento.

DevOps es una combinación de ‘Desarrollo’ y ‘Operaciones’ en virtud de la cual los equipos de negocios, los equipos de desarrollo y la organización de operaciones colaboran continuamente para garantizar que las soluciones de TI estén disponibles para las empresas a tiempo. Aborda las personas, los procesos y las herramientas, así como las dimensiones tecnológicas necesarias para asegurar esta colaboración y sincronizar los diferentes interesados ​​para mover la funcionalidad a la producción más rápido.

DevOps permite la realización de los beneficios de una entrega más rápida de la funcionalidad lograda a través de Agile. Desde la etapa de visión hasta la etapa de desarrollo, el equipo de operaciones debe proporcionar los aportes necesarios al equipo de desarrollo para que puedan construir y validar sus requisitos. DevOps y Agile se complementan bien y ayudan al negocio y a los equipos de lanzamiento a planificar el calendario de lanzamiento anual. Con el compromiso continuo y la colaboración con el equipo de desarrollo, el equipo de operaciones conoce qué funcionalidad saldrá cuando y el equipo de soporte podrá mover la funcionalidad completa a la producción más rápido y en intervalos más cortos, por lo tanto, el beneficio clave de Agile: ‘más corto time to market ‘se realiza.

¿Qué es DevOps?

DevOps es un término para un grupo de conceptos que, aunque no todos son nuevos, se han catalizado en un movimiento y se están extendiendo rápidamente por toda la comunidad técnica. Como cualquier término nuevo y popular, las personas pueden tener impresiones confusas y a veces contradictorias de lo que es. Aquí está mi opinión sobre cómo DevOps se puede definir útilmente; Propongo esta definición como un marco estándar para discutir más claramente las diversas áreas que cubre DevOps. Al igual que “Calidad” o “Ágil”, DevOps es un concepto lo suficientemente grande que requiere algunos matices para comprenderlo completamente.

Definición de DevOps

DevOps es un nuevo término que surge de la colisión de dos tendencias principales relacionadas. El primero también se llamó “infraestructura ágil” u “operaciones ágiles”; surgió de la aplicación de enfoques ágiles y lean al trabajo de operaciones. El segundo es una comprensión mucho más amplia del valor de la colaboración entre el personal de desarrollo y operaciones en todas las etapas del ciclo de vida de desarrollo al crear y operar un servicio, y cuán importantes se han vuelto las operaciones en nuestro mundo cada vez más orientado al servicio (cf. Operaciones: Nueva salsa secreta).

Una definición que Jez Humble me propuso es que DevOps es “una comunidad de práctica interdisciplinaria dedicada al estudio de la construcción, evolución y operación de sistemas resilientes que cambian rápidamente a escala”.

Eso es bueno y carnoso, pero puede ser un poco demasiado esotérico y específico para los tipos de inicio de Internet. Creo que puedes definir DevOps más prácticamente como

DevOps es la práctica de los ingenieros de operaciones y desarrollo que participan juntos en todo el ciclo de vida del servicio, desde el diseño hasta el proceso de desarrollo y el soporte de producción.

Un corolario principal de esto es que parte del cambio principal en la práctica de los métodos anteriores es

DevOps también se caracteriza por el personal de operaciones que utiliza muchas de las mismas técnicas que los desarrolladores para el trabajo de sus sistemas.

Esas técnicas pueden ir desde el uso del control de origen hasta las pruebas y la participación en un proceso de desarrollo ágil.

Para este propósito, “DevOps” no diferencia entre diferentes subdisciplinas de administrador de sistemas: “Ops” es un término general para ingenieros de sistemas, administradores de sistemas, personal de operaciones, ingenieros de lanzamiento, DBA, ingenieros de redes, profesionales de seguridad y varias otras subdisciplinas. y títulos de trabajo. “Dev” se usa como abreviatura para desarrolladores en particular, pero en la práctica es aún más amplio y significa “todas las personas involucradas en el desarrollo del producto”, que pueden incluir productos, control de calidad y otros tipos de disciplinas.

DevOps tiene fuertes afinidades con los enfoques Agile y Lean. La antigua visión de las operaciones tendía a que el lado “Dev” fuera el “creador” y el lado “Ops” las “personas que se ocupan de la creación después de su nacimiento”: la comprensión del daño que se ha hecho en la industria de Esos dos tratados como preocupaciones aisladas son el motor principal detrás de DevOps. De esta manera, DevOps se puede interpretar como una consecuencia de Agile: el desarrollo de software ágil prescribe una estrecha colaboración de los clientes, la gestión de productos, los desarrolladores y (a veces) el control de calidad para llenar los vacíos e iterar rápidamente hacia un mejor producto. DevOps dice “sí , pero la prestación de servicios y la forma en que interactúan la aplicación y los sistemas son una parte fundamental de la propuesta de valor para el cliente también, por lo que el equipo del producto debe incluir esas preocupaciones como un elemento de nivel superior ”. Desde esta perspectiva, DevOps simplemente se está extendiendo Principios ágiles más allá de los límites del “código” para todo el servicio prestado.

Definición en profundidad

DevOps significa muchas cosas diferentes para diferentes personas porque la discusión a su alrededor cubre mucho terreno. La gente habla de que DevOps es “colaboración de desarrollador y operaciones”, o “trata su código como infraestructura”, o “usa la automatización”, o “usa kanban”, o “un enfoque de cadena de herramientas”, o “cultura”, o una variedad de artículos aparentemente poco relacionados. La mejor manera de definirlo en profundidad es utilizar un método paralelo a la definición de un término igualmente complejo, desarrollo ágil. El desarrollo ágil, según Wikipedia y el manifiesto ágil, consta de cuatro diferentes “niveles” de preocupación. Agregué un quinto, el nivel de herramientas: hablar sobre ágil y devops puede obsesionarse demasiado con las herramientas, pero fingir que no existen tampoco es útil.

Obtenga más videos gratis – Suscríbase ➜ https://goo.gl/5ZqDML

En la actualidad, DevOps y Agile son dos de los términos más utilizados en el contexto del ciclo de vida del desarrollo de software, aunque el debate sobre los beneficios de DevOps también continúa. Cuando la filosofía Agile comenzó a ganar fuerza a finales de los 90, se centró en la matriz clave para acelerar el desarrollo de software. Con el surgimiento de DevOps, este viaje está llegando a otra escala, donde no solo el equipo de desarrollo está experimentando transformación, sino también los equipos de infraestructura que están cambiando en la forma en que implementan la solución.

El diseño de un entorno de desarrollo ágil y centrado en DevOps requiere muchos cambios en la forma en que operan los equipos. Para que una corporación cambie del estilo tradicional de desarrollo “en cascada” a DevOps impulsado por la entrega continua, es una transición drástica para cualquier empresa, que las corporaciones no pueden lograr fácilmente. Si bien algunas corporaciones han comenzado el viaje de DevOps adoptando aspectos de Agile, las pruebas de automatización y el proceso continuo de entrega evitan que realmente lo acepten.

Si una organización carece de automatización, entregar un producto funcional y sin inconvenientes, al final, se vuelve difícil para la empresa. Esto reduce el impacto y el valor del desarrollo que ha llevado a cabo una organización. La entrega continua no es posible incluso si la implementación y el desarrollo optimizado han tenido lugar, la prueba automatizada del proceso es el factor más importante, que determina el éxito.

DevOps es básicamente una mentalidad y una cultura que están embebidas en una organización. Exige el esfuerzo coordinado de los individuos.

Para más detalles sobre Journey from Agile to DevOps; siga el enlace adjunto: Navtech | Consultores de tecnología innovadora

Es la tubería que permite bucles de retroalimentación rápida en un entorno de producción. Sin desarrollos / operaciones efectivos (con integración continua, pruebas, seguridad, compilaciones, implementación, entrega), los equipos ágiles y la gestión de productos están quedando ciegos.

Agile y DevOps reducen significativamente el tiempo requerido para desarrollar y lanzar nuevos productos y el tiempo de toma de decisiones requerido para nuevas aperturas. Aumentan la productividad de un equipo y su rendimiento. Si estos términos son nuevos para usted, obtenga más información aquí https://kruschecompany.com/blog/

Pero a medida que la web mundial reunió a más y más usuarios, las aplicaciones respaldadas por bases de datos se vuelven estándar. Aún así, durante los primeros diez años, ni los datos ni la carga del servidor fueron un gran cuello de botella. La mayoría de las aplicaciones se ejecutaron en un entorno compartido, es decir, varias aplicaciones se ejecutaban en el mismo hardware físico, que alojaba servidores web y de bases de datos. El desarrollo de productos de software que hasta ahora era un problema solo para las compañías más grandes en el rango de Google o Amazon, golpeó a todos menos a los jugadores más pequeños. Servicios de transformación digital | Desarrollo de aplicaciones móviles empresariales | Desarrollo de productos de software

DevOps es un término que cubre mucho terreno en estos días, especialmente para SaaS y otros productos de tipo web. Sin embargo, las áreas particulares donde DevOps es crítico son la automatización de la tubería de prueba e implementación y la administración de la arquitectura de escala.

Si un equipo ágil no puede liberar fácilmente, tienden a liberar con menos frecuencia, lo cual es un comportamiento antiagil. Queremos comentarios y aprendizaje con frecuencia y “funciona en mi máquina” no es lo suficientemente bueno. Necesitamos integrar completamente los cambios para ver cómo funcionarán en la producción para que podamos aumentar nuestra confianza y comprensión de los problemas antes.

Aquí hay un video que explica la relación y las diferencias entre los dos: