¿Cuál podría ser una definición válida de DevOps para presentarlo a un novato?

16

He hecho / creado muchas presentaciones relacionadas con SCM, y ahora estoy tratando de "actualizar" a un sucesor de DevOps.

Lo que siempre trato de hacer en mis presentaciones es crear una diapositiva de introducción que de alguna manera incluya el mensaje que quiero entregar (y que luego detallo en el resto de mi presentación). Al hacerlo, trato de responder mi propia pregunta como "¿Cuáles serían las frases de 1 a 3 que quisiera usar si tuviera de 10 a 20 segundos (¡solo!) Para explicárselo a alguien nuevo en él? * ".

Pensé que sabía lo que DevOps realmente significa, y de qué se trata. Pero he visto algunos usos / contextos extraños de DevOps (incluso en DevOps.SE ...). Me hace preguntarme si quizás lo que creo que es DevOps es completamente incorrecto.

Entonces, ¿cuál es generalmente la definición de DevOps?

Pierre.Vriens
fuente
El historial de comentarios se ha movido al chat para registrar cómo se puede mejorar una pregunta.
Tensibai
1
Lo principal que aprendí al hablar con muchas personas es que no existe una definición acordada.
Boicot SE para Monica Cellio
merci @XiongChiamiov ... eso suena como si conocieras una de las otras definiciones ... ¿Por qué no intentas publicarlas como una respuesta adicional?
Pierre.Vriens

Respuestas:

11

DevOps en pocas palabras

De Wikipedia :

DevOps (un compuesto recortado de " software DEV elopment " y " tecnología de la información OP ración S ") es un término utilizado para referirse a un conjunto de prácticas que hacen hincapié en la colaboración y la comunicación tanto de los desarrolladores de software y tecnología de la información (TI) al automatizar El proceso de entrega de software y cambios de infraestructura.

Su objetivo es establecer una cultura y un entorno donde la construcción , prueba y lanzamiento de software puede suceder de forma rápida, frecuente y más confiable.

De la descripción general :

ingrese la descripción de la imagen aquí

Diagrama de Venn que muestra DevOps como la intersección de desarrollo (ingeniería de software), operaciones y garantía de calidad (QA)

Si bien no existe una única "herramienta" para DevOps, sino un conjunto de herramientas, también conocido como una cadena de herramientas DevOps :

ingrese la descripción de la imagen aquí

Ilustración que muestra etapas en una cadena de herramientas DevOps

Ilustraciones de DevOps

A continuación hay algunas citas de algunas de las preguntas sobre DevOps.SE , que parecen encajar / confirmar de alguna manera parte de la descripción de DevOps anterior:

DevOps NO es un rol

A continuación hay algunas citas de algunas de las preguntas en DevOps.SE , que parecen ilustrar que DevOps NO es un rol:

Pierre.Vriens
fuente
10

He practicado y asesorado en DevOps como consultor con diferentes clientes durante casi cinco años, antes de ocupar mi puesto actual, desempeñaba funciones en desarrollo de software, operaciones web y administración de sistemas. En mi experiencia personal , DevOps viene en muchos sabores.

Patrones de organización

Antipatrones DevOps:

  • NoOps y NoDevs : no estrictamente DevOps en el sentido más estricto, sin embargo, estos equipos construyen y operan software sin una línea divisoria entre Desarrollo y Operaciones. Los desafíos con estos equipos se reducen a la madurez, los equipos de desarrollo pueden ser desarrolladores de software expertos pero operadores novatos y viceversa.

  • El puente DevOps : aquí es donde uno o más equipos tienen la responsabilidad de tomar el trabajo de los equipos de desarrollo y " Producirlo " para hacerlo operativo. El desafío se reduce a que ahora hay dos transferencias, es decir, Desarrollo → DevOps y DevOps → Operaciones.

  • El equipo de DevOps : podría decirse que esto puede funcionar si el equipo tiene la responsabilidad de crear herramientas que admitan el modelo operativo habilitado para DevOps; sin embargo, probablemente debería llamarse "Equipo de herramientas" o "Equipo de plataforma".

Patrones de DevOps:

  • DevOps integrado : más comúnmente conocido como Ingeniería de plataforma, por lo que hay alguien dentro del equipo que es responsable pero no responsable de entregar automatización, herramientas e infraestructura para el aprovisionamiento y la implementación de la solución, a veces también incluyendo el funcionamiento del software, en mi opinión. , este último es realmente representativo de DevOps.

  • DevOps institucionalizado : donde un equipo de proyecto es responsable conjuntamente del desarrollo y la operación de un paquete de software que crea propiedad compartida y circuitos de retroalimentación positiva.

Practicas

La práctica real de DevOps se basa en varias otras prácticas, a saber:

Cada una de las prácticas anteriores se basa en la otra, es posible no seguir una práctica, sin embargo, significa que falta un ciclo de retroalimentación importante que puede ser indicativo de una "oportunidad perdida". El diferenciador clave entre seguir cualquiera de las otras prácticas y DevOps es la operación del software en producción .

Prácticas DevOps

Las tres formas

En The Phoenix Project, Gene Kim y sus coautores describen las tres formas de DevOps :

Pensamiento sistémico

Pensamiento sistémico

The First Way enfatiza el desempeño de todo el sistema, en oposición al desempeño de un silo específico de trabajo o departamento; esto puede ser una división tan grande (p. Ej., Desarrollo u Operaciones de TI) o tan pequeña como un contribuyente individual (p. Ej. , desarrollador, administrador del sistema).

En mi experiencia, comenzar a lograr que los Desarrolladores consideren las preocupaciones operativas y los requisitos no funcionales logra este objetivo. Esto forma parte de los aspectos culturales de DevOps.

Amplificación de bucles de retroalimentación

Amplificación de bucles de retroalimentación

La segunda forma consiste en crear bucles de retroalimentación de derecha a izquierda. El objetivo de casi cualquier iniciativa de mejora de procesos es acortar y amplificar los circuitos de retroalimentación para que las correcciones necesarias puedan realizarse continuamente.

En general, esto lo logro a través de la Integración / Entrega / Implementación Continua y el monitoreo y alertas compartidos, por lo que encaja perfectamente con el componente de herramientas de DevOps.

Cultura de experimentación continua y aprendizaje

Cultura de experimentación continua y aprendizaje

La tercera vía consiste en crear una cultura que fomente dos cosas: experimentación continua, asumir riesgos y aprender del fracaso; y comprender que la repetición y la práctica son el requisito previo para el dominio.

Esto encaja mucho en el espacio cultural , aunque depende en gran medida de las herramientas y el proceso para permitir que la cultura crezca.

Richard Slater
fuente
Excelente respuesta! aunque me topé con ese gráfico comparaciones de diferentes prácticas ... especialmente con respecto a ágil. Creo que es un término demasiado amplio para pertenecer allí. Las pruebas están excluidas, aunque algunas metodologías ágiles ponen las pruebas en el centro de sus prácticas. Una vez podríamos argumentar que DevOps es (o puede depender de cómo se implemente) muy ágil. El manifiesto ágil representa más una filosofía que una práctica bien ligada. Nitpicking más que quejarse, es una respuesta muy buena!
Newtopian
No puedo tomar todo el crédito por ese diagrama, muchos consultores lo han dibujado antes que yo en muchas pizarras de todo el mundo. Supongo que está describiendo la práctica de ágil donde los equipos se centraron en construir productos potencialmente utilizables en iteraciones cortas, CI siguió como una práctica que automatizó parte de ese trabajo, C. Entrega automatizada en cuanto a preparar una compilación para el despliegue, C. Despliegue en realidad desplegó esa compilación y DevOps opera el software en producción.
Richard Slater
4

He escuchado muchas, muchas definiciones diferentes de DevOps. Incluyen:

  • Desarrolladores que manejan tareas de operaciones
  • Una persona haciendo el doble de trabajo (en la misma cantidad de tiempo)
  • Desarrolladores y equipos de operaciones trabajando entre ellos.
  • Trabajo de operaciones para herramientas de desarrollador (en la línea de "Web Ops")
  • Un título de trabajo para alguien que crea y mantiene herramientas para desarrolladores
  • El uso de la automatización en las operaciones.
  • El uso de nubes públicas en las operaciones.
  • Un trabajo que combina aspectos de operaciones, desarrollo y garantía de calidad.
  • Un trabajo que implica ayudar a los equipos de desarrollo y operaciones a trabajar juntos
  • Una filosofía de romper barreras entre equipos
  • Tratar la infraestructura como código
  • Lo que obtienes cuando los antiguos ingenieros de software entran en operaciones
  • Una palabra de moda completamente sin sentido

No hay consenso público sobre lo DevOps en realidad es . Hace unos años tuvimos problemas similares con "Agile", y eso tiene una definición escrita .

Al presentar sus conceptos a un recién llegado, me enfocaría en presentar los conceptos, en lugar de aplicar una etiqueta, o terminarán escuchando definiciones contradictorias y confundidos. Por ejemplo, si está tratando de hablar de infraestructura como código , dígales que está hablando de infraestructura como código. Cuanto más específico pueda ser, mejor, ya que incluso con definiciones acordadas, la mayoría de las empresas se centran más en ciertas partes de una filosofía.

Boicot SE para Monica Cellio
fuente
2

La definición que siempre uso en esta situación es la siguiente:

“Una cultura de creación de software que enfatiza la comunicación y la colaboración entre los equipos de desarrollo y operaciones de software mientras automatiza el proceso de entrega de software y los cambios de infraestructura. El objetivo de DevOps es hacer que el proceso de creación, prueba e implementación de software sea lo más frecuente, rápido y posible ".

Sin embargo, junto con la definición, también es importante que entiendan POR QUÉ necesitamos DevOps. Asegúrese de decirles que DevOps mitiga los defectos de software más rápido, permite una mejor gestión de recursos, menos errores humanos, un mejor control de versiones, un entorno operativo estable, etc.

DevOps Jedi
fuente
1

En el siguiente trabajo de investigación científica para explorar exactamente esta pregunta, "¿Qué es DevOps", la definición derivada propuesta de DevOps es:

DevOps es una metodología de desarrollo destinada a cerrar la brecha entre Desarrollo (Dev) y Operaciones (Ops), enfatizando la comunicación y la colaboración, la integración continua, el aseguramiento de la calidad y la entrega con implementación automatizada utilizando un conjunto de prácticas de desarrollo.

[Jabbari et al.] "¿Qué es DevOps ?: Un estudio de mapeo sistemático sobre definiciones y prácticas" (2016)

Peter
fuente
-2

Devops es la práctica de desarrollo de escribir aplicaciones cuyo dominio comercial son las operaciones. Donde la mayoría del desarrollo de aplicaciones se enfoca en la creación de aplicaciones que financian la atención médica o la logística o videos de gatos, devops se enfoca en aplicaciones que permiten compilaciones, implementaciones, monitoreo y recopilación de métricas.

El objetivo primordial siempre debe ser permitir a los tomadores de decisiones convertirse en tomadores de decisiones . Imagine la aplicación móvil de su banco. Cuando solicita una transferencia, ocurre cuando presiona el botón. Usted tomó una decisión, luego tomó la decisión. Lo mismo con tus operaciones. Cuando la persona apropiada decide que algún trabajo está listo para desplegarse en la producción, debería poder presionar un botón y "Las cosas correctas suceden". Del mismo modo, deben tener toda la información necesaria que necesitan para tomar decisiones comerciales correctas.

No se trata de dar a los empresarios acceso de shell a los servidores; ese es un propósito confuso con la implementación. Se trata de proporcionar las perillas y palancas correctas con la información correcta y las barandillas correctas a las personas adecuadas para que los tomadores de decisiones tomen las decisiones.

Rob Kinyon
fuente
1
whose business domain is operations: ¿Es posible ampliar esto o dar algunos ejemplos?
Dawny33
No estoy de acuerdo, devops es un modelo de organización para soportar desarrollos de software, no una práctica de desarrollo en sí misma, puedes hacer una programación extrema en un modelo devops (mixin dev, ops, clientes y probadores, por ejemplo) (El resto de la respuesta tiene buenos puntos por cierto )
Tensibai
La definición básica de "Devops es la práctica de desarrollo de escribir aplicaciones cuyo dominio comercial es operaciones" no es la que he visto a nadie más suscribirse. Escribir aplicaciones, independientemente del dominio o propósito, es desarrollo, no DevOps.
Adrian