¿DevOps está restringido a empresas con productos SaaS?

26

Las prácticas que describen DevOps, como la entrega continua, la automatización, etc., son relevantes para los productos que brindan un servicio continuo, como los productos SaaS.

Por ejemplo, una empresa de desarrollo de software que principalmente realiza proyectos para otros clientes podría no mantenerse nunca después de que finalice el proyecto. Y los proyectos de los clientes no se comparten con otros clientes, porque son irrelevantes.

¿DevOps incluso se aplica a las empresas que desarrollan múltiples proyectos que son únicos? ¿Qué prácticas de DevOps se aplican en este caso, si es que lo hacen?

Evgeny
fuente

Respuestas:

32

¡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.

Alexandre
fuente
1
De hecho, DevOps se puede aplicar a prácticamente cualquier organización de desarrollo sw, incluso a productos embebidos grandes con solo un puñado de lanzamientos públicos por año; al usar la entrega continua dentro de su canal de desarrollo, aún pueden cosechar algunos beneficios de DevOps: mejor calidad, reducción de costos, previsibilidad de lanzamiento, etc.
Dan Cornilescu
La respuesta recuerda a un SaaS, realmente no explica bien cómo un producto o servicio no SaaS puede beneficiarse de estas prácticas.
Evgeny
Los productos en los que estaba trabajando no eran SaaS (todo lo contrario). Pero la lógica sigue siendo la misma, no importa mucho si eres SaaS o no, DevOps intenta mejorar el producto de formas no tradicionales. No podría saber nada de nuestro modelo de precios u oferta, no sería una gran diferencia.
Alexandre
13

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.

Tortuga
fuente
¿Puede proporcionar algunas razones y beneficios de por qué esto es importante? ¿Los clientes realmente se preocupan por su tubería, o solo por el proyecto terminado en la fecha prometida y el precio que deben pagar? ¿Podría reducir costos al no hacer todas estas cosas "devops-y"? ¿Podría pasar más horas en un proyecto al no hacer estas cosas y obtener más dinero para los proyectos (ya que es más largo)?
Evgeny
1
@Evgeny DevOps ayuda a terminar el proyecto a tiempo y dentro del presupuesto por las razones explicadas en mi respuesta. Al reducir DevOps, también reduciría los beneficios que expliqué. La construcción y las pruebas a menudo ayudan a mantenerse dentro del presupuesto y a tiempo. Encontrar un error más tarde cuesta más dinero y lleva más tiempo solucionarlo, se ha demostrado una y otra vez. El cliente no se preocupa por la tubería, pero cuanto más espere sus comentarios, más costosa y lenta será la reescritura.
Alexandre
¿No es solo Agile Software Dev?
Evgeny
@Evgeny He actualizado mi respuesta para aclarar. Usamos Agile, pero eso no significa que no podamos tener una mentalidad DevOps ...
Turtle
1
@Evgeny, probablemente podría ahorrar algo al no mantener sus pruebas unitarias y las pruebas de aceptación, pero esto acumula Deuda Técnica, que es un antipatrón de DevOps. Puede salirse con la suya durante algunas semanas o meses, pero pronto terminará (probablemente) con un desorden difícil de mantener que es imposible de probar.
Steve Button
3

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:

  • Compilaciones de software automatizadas y reproducibles, con configuraciones conocidas y controladas de compiladores, bibliotecas y otras herramientas de compilación.
  • Pruebas de sistema automatizadas y repetibles para pruebas de regresión y para nuevas pruebas de funcionalidad.
  • Otras acciones automáticas y regulares (por ejemplo, capturas de pantalla de muestra actualizadas continuamente disponibles en todos los idiomas compatibles, para que los traductores las verifiquen y para que los autores técnicos las incorporen en los manuales del usuario).

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.

Toby Speight
fuente
La automatización no es devops. Los mismos comentarios que la respuesta de David Bock a continuación finalmente (lo siento, mi comentario se perdió en el momento en que voté en contra, solo lo noté)
Tensibai
3

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.

Quarind
fuente
0

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.

David Bock
fuente
Esto está relacionado con la automatización, pero no está relacionado con una organización devops de ninguna manera, no veo ninguna referencia sobre el equipo de disciplina pluria en ninguna parte, solo opta por automatizar las cosas que heredan
Tensibai
Esto fue 2001 ... mucho antes de que DevOps fuera una cosa. Esto no fue solo automatización, creo que simplificó la gestión del proyecto exactamente de la misma manera que eventualmente se convirtió en la 'Cultura' de DevOps. Como tal, es un ejemplo de la actitud de DevOps fuera de una organización SaaS.
David Bock
DevOps no se trata de automatización, ni de gestión de proyectos. Se trata de romper la organización basada en silo en la raíz. Lo siento, no siento que esta respuesta realmente se relacione con la Pregunta (esto no significa que no sea interesante, pero simplemente no está en el lugar correcto de la OMI, y no veo dónde podría estar en realidad, puede venir más tarde)
Tensibai
Intentaré aclarar una vez más: al hacer que el CD se corte de manera tan consistente y rápida, podríamos recibir comentarios del control de calidad mucho más rápido de lo que podríamos haberlo hecho antes. Esto redujo un silo. No lo eliminó, ya que pasaron uno o dos años antes de que desactiváramos los feudos en torno a los presupuestos centralizados para las actividades, pero ciertamente fue un paso crítico para que esto ocurriera. También supimos mucho antes cuándo se interrumpió el proceso de lanzamiento. Acredito muchas cosas pequeñas como esta como mi camino personal a DevOps.
David Bock
Este último comentario le da más sentido a esta respuesta bajo esta pregunta, debe editar para incluirlo, todavía siento que esto no se ajusta a este formato, pero parece que mi posición es incorrecta cuando observo la evolución general en esta beta privada, así que ... eso depende de usted. No puedo eliminar mi
voto negativo