¡Absolutamente no!
DevOps se trata de romper los silos (departamentos) tradicionales para ser más eficientes.
Una mejor comunicación entre los equipos, una mejor visibilidad y un proceso confiable y automatizado son formas de lograr un mejor producto.
Solía trabajar para una gran empresa de medios en la que apoyaríamos una herramienta interna y desarrollaríamos sitios web públicos.
Los beneficios de DevOps en nuestro caso fueron los siguientes:
- A través de la construcción continua, informamos al equipo de desarrollo más temprano que tarde si hay problemas de integración o construcción con su código. Pueden solucionar problemas mientras su mente todavía está en el código que acaban de cometer.
- A través de pruebas y entregas continuas (en el control de calidad), permitimos que el equipo de control de calidad encuentre problemas antes y los informe antes. Esto redujo el tiempo que llevó encontrar y corregir errores, además de reducir la complejidad de estas investigaciones.
- Sin las herramientas de recopilación y agregación de registros, les dimos a los desarrolladores acceso a algo que normalmente no mirarían (estaban muy interesados en los depuradores :): comprender cómo los registros son vistos y utilizados por otros equipos mejoró la calidad general de los registros
- A menudo compartimos información y creamos documentación para compartir conocimiento entre equipos, tratando de derribar muros. Al comprender las necesidades de Ops, creamos algunas guías para lo que siempre debe tenerse en cuenta al iniciar una aplicación (dónde / cómo administrar propiedades, etc.). Al comprender la realidad del desarrollador (¡codifique más funciones, más rápido, gogogogo!) Pudimos hacer que las operaciones crearan servidores y clústeres que se adaptaran mejor a las necesidades del desarrollador.
- La calidad general de las implementaciones también mejoró considerablemente. Las implementaciones fueron manejadas por nuestro equipo, por lo que tuvimos una visibilidad perfecta tanto en Ops como en Dev. Esto eliminó muchos problemas relacionados con el "traspaso de código" en el que el desarrollador entregaba un paquete y un documento de una página a las operaciones que decían "¡Instala esto!".
En general, diría que independientemente de si está actualizando su entorno de producción una vez al día o una vez al mes e independientemente de cuántos clientes tenga o su modelo de negocio, cada empresa puede usar una mejor comunicación, mejores herramientas, mejor visibilidad, comentarios más rápidos, etc.
Mi equipo y yo somos responsables de desarrollar "productos únicos", productos que una vez terminados se entregan al cliente para su mantenimiento o, en algunos casos, los administramos por una tarifa.
Todavía necesitamos mantener una sólida línea de desarrollo para manejar los comentarios constantes de nuestros clientes a fin de garantizar que les enviemos algo confiable y probado para funcionar.
Si bien el cliente no se preocupa por DevOps (en la mayoría de los casos), sigue siendo útil para nosotros. Con DevOps, podemos impulsar rápidamente nuevas compilaciones, para que los clientes puedan ver comentarios en minutos, no horas, y también podemos detectar cualquier error / error con nuestras pruebas a través de Jenkins / Travis.
Para garantizar que nuestras estrategias de implementación sean las mismas en todos los proyectos, nos enfocamos en contener nuestras aplicaciones. Con Docker, podemos entregar fácilmente la aplicación a nuestros clientes.
El costo ahorrado por DevOps es difícil de determinar. Tenemos costos adicionales en forma de software que elegimos usar para la tubería (Travis, Jenkins, Puppet, lo que tenga), pero también ahorramos tiempo y dinero al corregir errores / dar retroalimentación a los clientes rápidamente. Nuestro rápido tiempo de respuesta mantiene contentos a nuestros clientes, a la vez que mantiene nuestras billeteras felices.
fuente
He trabajado para empresas que producen software como productos retráctiles, como implementaciones totalmente instaladas y compatibles y como código incrustado en dispositivos. En todas esas empresas, DevOps proporciona soporte esencial para el desarrollo:
En todos los casos, estas son cosas que los desarrolladores individuales podrían hacer de forma puntual, pero que no serían un buen uso del tiempo del desarrollador, ni tendrían la misma garantía de control de configuración que tienen las compilaciones automatizadas.
fuente
Las actividades sobre el desarrollo e implementación de software anteriormente no requerían una integración profunda entre los departamentos. Pero por hoy es necesario cooperar estrechamente con todos los departamentos (Desarrollo, Operaciones de TI, Garantía de calidad, etc.).
Para los desarrolladores, el cambio es lo que se les paga. Las empresas siempre necesitan cambios para adaptarse al mundo moderno. Esta comprensión empuja a los desarrolladores a producir la mayor cantidad posible de cambios. Los profesionales de TI tienen una comprensión diferente, en la que el cambio es perjudicial. Cada uno de ellos piensa que funciona correctamente, beneficiando al negocio. De hecho, si los consideramos por separado, ambos tienen razón.
Todos los empleados deben comprender que son parte de un solo proceso. DevOps cultiva el pensamiento, lo que hace posible darse cuenta de que las decisiones y acciones personales de todos deben estar dirigidas hacia la realización de un solo objetivo. Y el éxito debe medirse en relación con todo el ciclo de desarrollo a entrega, y no a partir del éxito de los roles individuales. Como resultado de la estrecha cooperación entre desarrolladores y especialistas en mantenimiento, se forma una nueva generación de ingenieros, que toman los mejores logros de ambas disciplinas y los combinan para el beneficio del usuario. Esto se manifiesta en la aparición de equipos multifuncionales con experiencia en desarrollo, gestión de configuración, gestión de bases de datos, pruebas y gestión de infraestructuras.
Entonces, la metodología es útil no solo en SaaS.
fuente
De ningún modo. Si bien ya hay excelentes ejemplos en este hilo, me gustaría compartir una anécdota propia. En 2001 heredé un proyecto de software con un lanzamiento que implicaba la creación de un CD. La documentación para el proceso de lanzamiento incluía 40 (!) Pasos documentados por un ingeniero anterior, que incluía algunas instrucciones ridículas escritas a mano como "abrir este archivo de configuración y cambiar el nombre del archivo .jar en la línea 41 para incluir el número de versión de el nuevo lanzamiento ".
Automatizamos agresivamente cada paso de ese proceso de compilación, reemplazando instrucciones escritas a mano como esa con cosas como 'parche' con script bash. Incluso tuvimos que abrir tickets con nuestro proveedor de herramientas de instalación de terceros para hacer que sus archivos de proyecto fueran reparables.
Una vez que ese proceso fue automatizado, compramos un 'CD Jukebox'. Todas las noches después de que pasaran las pruebas, la máquina de compilación crearía automáticamente un nuevo CD de instalación. Nuestros probadores podrían venir a la mañana siguiente, tomar un disco y asegurarse de que todo fuera instalable.
Ciertamente tenemos ciclos de retroalimentación más estrictos cuando podemos implementar software como servicio, pero se aplican los principios básicos de automatización, retroalimentación, tiempo de ciclo, lanzamientos pequeños, etc.
fuente