DevOps Fundamentos
DevOps Fundamentos
DevOps Fundamentos
Fundamentos
Resumen
La certificación DevOps Certified Expert – DCE
valida su conocimiento sobre
los principios, métodos y prácticas que
fomentan la colaboración, la
comunicación, la integración y la
automatización del flujo de trabajo entre las
áreas de ingeniería de software
(Dev) y operaciones de TI (Ops).
Contenido
Contexto DevOps ✔ Despliegue con procesos fiables y repetitivos
✔ ¿Qué es DevOps? ✔ Supervisión y validación de la calidad operativa
✔ ¿Qué no es DevOps? ✔ Amplificación de los bucles de información
✔ Historia de DevOps
✔ Desarrollo Agile Cultura DevOps
✔ Cascada vs Agile ✔ Adopción de DevOps
✔ Manifiesto para el desarrollo ágil de software ✔ Cultura
✔ Principios del manifiesto Agile ✔ Procesos
✔ Agile y DevOps pueden trabajar juntos ✔ Proceso de gestión de cambios
✔ DevOps vs TI tradicional ✔ Plataformas y herramientas
✔ ¿Por qué DevOps? ✔ Infraestructura como código
✔ ¿Cómo funciona DevOps? ✔ Estrategia de adopción de DevOps
Principios DevOps
✔ Principios
✔ Desarrollar y probar en un entorno similar al de
producción
Contenido
Ciclo de vida DevOps Herramientas DevOps
✔ Ciclo de vida de DevOps ✔ Herramientas DevOps a través del Proceso
✔ Características de DevOps - Arquitectura ✔ Plan
✔ Planificación y medición ✔ Source Code Management – SCM
✔ Desarrollo y pruebas ✔ Build
✔ Lanzamiento de versiones y despliegues ✔ CI
✔ Supervisión y optimización ✔ Analyze
✔ Repository
Canal de distribución ✔ Test
✔ Canal de distribución ✔ Config
✔ Entorno de desarrollo ✔ Release And Deploy
✔ Fase de compilación ✔ Continuos Inspection Monitoring
✔ Repositorio de paquetes
✔ Entorno de pruebas
✔ Entornos de pre-producción y producción
✔ Automatización de despliegue
✔ Gestión de releases
Contexto DevOps
¿Qué es DevOps?
DevOps: una combinación de desarrollo y
Arquitectura y
Modernización de ► Acoplamiento y complejidad reducidos
desarrollo aplicaciones ► Componentes y servicios reutilizables
DEV OPS
BUSINESS
DEV DEVOPS
DEV BUSINESS
Antes de la evolución actual de A medida que el movimiento ha crecido, también lo ha Estamos en un período de
DevOps, no había conexión directa hecho el concepto. Lo que de una manera simplista se ha transición importante en el
entre el desarrollo y las considerado como un canal de comunicación entre que los ciclos de vida de las
operaciones. Los desarrolladores desarrolladores y TI, se ha expandido para incluir todo el aplicaciones y los despliegues
eran responsables de crear ciclo de vida de desarrollo, con la inclusión de la se acortarán tanto hasta que la
aplicaciones y las operaciones automatización desde el principio del proceso a través de entrega continua no sea el
tenían la responsabilidad de la implementación de la solución en un sistema de atípico, sino la forma estándar
implementar esas soluciones. No construcciones incrementales, como lo ha planteado la de hacer negocios.
había ningún método formal de filosofía Agile. Esta idea ha formado otro término, "entrega
comunicación entre los dos continua", que se ha afianzado, especialmente para las
equipos. aplicaciones dinámicas desplegadas en Internet.
Desarrollo Agile
DevOps está muy ligado con los principios
de la filosofía agile:
• Agile emplea sprints, que van desde una semana
hasta meses como una forma de administrar el
programa de desarrollo, mientras que DevOps se
enfoca en los lanzamientos rápidos que comienzan
con varios por día.
• DevOps promueve un proceso de integración y
despliegue continuo completamente
automatizado para permitir lanzamientos
frecuentes, mientras que Agile ofrece la capacidad de
adaptarse rápidamente a los requisitos
cambiantes y una mejor colaboración entre
diferentes equipos más pequeños.
Problemas de los Equipos de Desarrollo Tradicionales
Silos Organizacionales
Procesos desintegrados
Distintas áreas
• Cada uno ocurre solo después de que la • Incluye todas las fases de desarrollo dentro de
fase anterior haya finalizado una iteración.
Analysis
Design Design
Coding
Testing
Deploy Start Architecture Plan/Analysis Code Deploy
Testing
Cascada vs Agile
Cascada Agile
Proyecto de desarrollo Proyecto más pequeño y
altamente complejo. entrega incremental
Requisitos bien pensados Flexible, negociable, justo a
Fecha de entrega fija tiempo.
Equipos grandes Fecha de entrega flexible
Equipos más pequeños (<20)
Manifiesto para el desarrollo ágil de software
Colaboración con el
Individuos e interacciones cliente sobre
sobre procesos y negociación contractual
herramientas Esto es, aunque
valoramos los elementos
de la derecha,
3 valoramos más los de la
1 izquierda.
Más información:
2 4 https://agilemanifesto.org/
Software
funcionando sobre Respuesta ante
documentación el cambio sobre
extensiva seguir un plan
Principios del manifiesto Agile
2. Aprovechamos los cambios 3. Entregamos productos funcionales y 4. Trabajamos juntos
1.Satisfacemos al cliente
frecuentemente
9. Prestamos atención
10. Lo hacemos simple 11. Somos 12. Mejoramos continuamente
continua a la excelencia
auto-organizados
técnica
Agile y DevOps pueden trabajar juntos
Tanto la filosofía Agile y como la filosofía DevOps
pueden funcionar en conjunto.
Agile: se tiene en un enfoque iterativo del
desarrollo
DevOps: Reúne dos prácticas tradicionalmente
separadas, el Desarrollo y las Operaciones, que
normalmente están aisladas.
TI Tradicional
Desarrollo Operaciones
DevOps vs TI tradicional
DevOps
Dev+Ops
► Desarrollo de software consciente ► Monitoreo constante y
de la infraestructura retroalimentación sobre la
► El código está diseñado para auto funcionalidad y las características del software
escalamiento, auto-reparación y
► Entrega acelerada de aplicaciones
recuperación
► Utiliza el modelo de entrega continua ► Aplicaciones escalables
► Satisfacción rápida las demandas empresariales
► Versiones de software más rápidas
¿Por qué DevOps?
Necesidades
Solución: DevOps
✔ Las organizaciones desean crear aplicaciones o DevOps prevé la aplicación y la
servicios innovadores para solucionar problemas de prestación de servicios que empujan
negocio constantemente pequeñas
✔ Un gran número de organizaciones no logran actualizaciones incrementales a los
resultados óptimos con sus proyectos de software, y usuarios, con un mínimo de sobrecarga
sus errores suelen deberse a los retos que se les operacional
presentan a la hora de desarrollar y distribuir el
software Los lanzamientos más pequeños son más
✔ Los equipos de QA y de Operaciones son fáciles de codificar y probar, y con
generalmente equipos separados dentro de TI.
el enfoque correcto, más seguros para
✔ El código pasa de los desarrolladores a QA y
empujar hacia producción de forma
viceversa, hasta que QA verifica y aprueba, para que
luego Operaciones los lleve a los ambientes continua.
productivos
¿Cómo funciona DevOps?
En un entorno de DevOps, las cosas funcionan
de manera diferente:
1 2
Los desarrolladores
codifican y comprueban
En algún momento, el
código actual del
3
Las pruebas, generalmente
automatizadas y creadas por los
4 5
Si las pruebas tienen éxito, la
generación se implementa
Se recopilan los
comentarios de los
su código en un repositorio se extrae y se desarrolladores, se ejecutan, incluidos automáticamente en usuarios, alimentando la
repositorio incorpora a una aplicación los modelos individuales, las pruebas producción siguiente iteración del
de integración e incluso las pruebas de ciclo. (se inicia
aceptación por parte de los usuarios nuevamente con el paso 1)
Principios DevOps
Principios
Principios
Principios
El objetivo es permitir que los equipos de
desarrollo y control de calidad (QA)
Principios
✔ Un objetivo de DevOps es permitir
que las organizaciones reaccionen y realicen
cambios de forma más rápida.
Desarrollar y probar en un entorno ✔ En el proceso de entrega de
similar al de producción
software, este objetivo requiere que la
Despliegue con procesos fiables y organización reciba comentarios de forma
repetitivos
inmediata para aprender
Supervisión y validación
de la calidad operativa rápidamente de cada medida
que vaya tomando
Amplificación de los bucles
de información
Cultura DevOps
Adopción de DevOps
DevOps es una función empresarial que
abarca todas las partes interesadas de una
organización, incluidos propietarios, arquitectura,
• Cultura
diseño, desarrollo, control de calidad (QA),
operaciones, seguridad, socios y proveedores. • Procesos
• Plataformas y
Cultura Procesos
herramientas
Plataformas y
herramientas
Cultura
DevOps depende de una cultura de
colaboración que valora la apertura y la
transparencia.
Cultura Procesos
• Compartir libremente información
• Promover la transparencia al tomar Plataformas y
decisiones herramientas
• Fomentar la experimentación mediante la
eliminación del temor a cometer errores
• Implementar un sistema de recompensas que
promueva la confianza y la Adopción de DevOps
colaboración.
Cultura: elementos culturales de DevOps
Cultura
Formación de Equipos Mejora Continua y
y Cooperación Resolución de Plataformas y
Problemas herramientas
responsables"
Katsenback & Smith, The Wisdom of Teams, 1993
Equipos: Beneficios - Problemas
Beneficios Problemas
Combina perspectivas Toma irracional de decisiones
Cooperación diferentes debido al pensamiento de grupo
Mentalidad Kaizen
Cultura: Mejora Continua y Resolución de Problemas
¡Gracias!
Procesos
La Implementación de la filosofía DevOps genera
cambios en las unidades de negocio que requieren • DevOps como proceso
trabajo de desarrollo y en los grupos que dan empresarial:
soporte a los usuarios finales
Implica la adopción de funciones desde la
concepción de la idea pasando por los procesos de
desarrollo y pruebas hasta producción.
Cultura
Procesos
• Proceso de gestión de
Plataformas y cambios:
herramientas
El proceso de gestión de cambios que una
organización utiliza es una parte inherente del flujo
de procesos de DevOps
Adopción de DevOps
Procesos - Definiciones
• Ágil: es un enfoque iterativo para el desarrollo de software
que propone la creación de una solución mediante etapas Ágil
incrementales.
• Kanban: La palabra "Kanban" se deriva del japonés y se
puede traducir como "señal visual" o "tarjeta". En Kanban,
los elementos de trabajo se representan como tarjetas o
notas adhesivas y el flujo de trabajo se visualiza en un Kanban
tablero.
• Scrum: es un marco de trabajo ágil para gestionar y
organizarCultura
proyectos complejos. Desde su desarrollo en los
90’ ha ganado gran popularidad en la industria del Scrum
desarrollo de software y otros dominios basados en el
conocimiento.Plataformas y
• Lean: Es una metodología
herramientas que se enfoca en minimizar el
desperdicio y maximizar el valor en la producción o entrega
de bienes y servicios. Se originó en las industrias Lean
manufactureras, particularmente del Sistema de Producción
Toyota (TPS), pero desde entonces ha sido adoptado y
adaptado en varias industrias y sectores.
Ágil
1. Definir la visión del proyecto
2. Crear la cartera de productos (backlog)
3. Conformar un equipo multifuncional
4. Definir las iteraciones del proyecto (sprints)
5. Planificar los sprints
6. Ejecutar los sprints
7. Revisar y adaptar
8. Refinar y mejorar
9. Entregar valor iterativamente
10. Mantener y mejorar continuamente
Kanban
• Metodología de visualización de flujo de trabajo y gestión de
proyectos. Se originó en el sistema de producción de Toyota en la
década de 1940
• El tablero generalmente se divide en columnas que representan
diferentes etapas del flujo de trabajo, como "Por hacer", "En
progreso" y "Terminado".
• El principio fundamental de Kanban es limitar el trabajo en curso
(Work In Progress) para optimizar el flujo y mejorar la eficiencia.
• Kanban enfatiza la mejora continua y alienta a los equipos a analizar
su flujo de trabajo regularmente para identificar cuellos de botella,
optimizar procesos y lograr una entrega de trabajo más fluida y
rápida.
• La cantidad de tarjetas permitidas en cada columna está
predeterminada, lo que evita la sobrecarga de tareas y garantiza
que los miembros del equipo se concentren en completar el trabajo
que tienen entre manos antes de asumir nuevas tareas.
• Brinda visibilidad sobre el estado del trabajo, facilita la colaboración
y permite que los equipos establezcan prioridades de manera
efectiva.
¡Gracias!
Scrum
Componentes de la metodología:
1. Product Backlog: es una lista priorizada de
funciones, mejoras y correcciones de errores.
2. Planificación de sprint: al comienzo de cada sprint,
el equipo Scrum selecciona de forma colaborativa
un conjunto de elementos del Product Backlog.
3. Daily Scrum: esta es una breve reunión diaria
(generalmente de 15 minutos) donde el equipo de
desarrollo sincroniza su trabajo. DoD (Definition Of Done) es un concepto
en el desarrollo de software ágil que
4. Revisión de sprint: al final de cada sprint, el equipo describe los criterios que se deben cumplir
presenta el trabajo completo a las partes
interesadas y recibe comentarios. para que una historia de usuario o una
tarea se considere completa y lista para su
5. Retrospectiva de Sprint: esta es una reunión que se entrega.
lleva a cabo después de la Revisión de Sprint, donde
el Equipo Scrum reflexiona sobre el Sprint e
identifica áreas de mejora.
Lean
Los principios básicos son:
1. Eliminación de desperdicios: Estos desperdicios, conocidos como "Muda"
en japonés, incluyen sobreproducción, tiempo de espera, transporte
innecesario, exceso de inventario, movimiento innecesario, defectos y
talento desperdiciado.
2. Mejora continua (Kaizen): las personas y los equipos buscan
constantemente formas de realizar mejoras incrementales en sus
procesos.
3. Respeto por las personas: valorar los conocimientos, habilidades y
contribuciones y buscar crear un ambiente de trabajo de apoyo que
fomente el trabajo en equipo, la colaboración y el desarrollo de los
empleados.
4. Mapeo del flujo de valor: técnica utilizada en los procesos Lean para
mapear visualmente el flujo de materiales, información y actividades
necesarias para entregar un producto o servicio.
5. Sistema de extracción: la producción o el trabajo se basan en la demanda
real o los pedidos de los clientes en lugar de impulsar el trabajo en
función de las previsiones o los cronogramas.
6. Justo a tiempo (JIT): como objetivo minimizar el inventario produciendo o
entregando artículos en el momento preciso en que se necesitan.
Detalle del enfoque Scrum
¡Gracias!
Detalle del enfoque Scrum
¡Gracias!
Detalle del enfoque Scrum
¡Gracias!
Detalle del enfoque Scrum
¡Gracias!
Detalle del enfoque Scrum
¡Gracias!
Detalle del enfoque Scrum
¡Gracias!
Detalle del enfoque Scrum
¡Gracias!
Detalle del enfoque Scrum
¡Gracias!
Proceso de gestión de cambios
Plataformas y herramientas
La selección de herramientas es fundamental
para el éxito de DevOps
Cultura Procesos
aprovisionarse y
configurarse los entornos
Herramientas genéricas: no están
para seguir ofreciendo una especializadas para ninguna tecnología
entrega continua. y pueden adaptarse para realizar varios
tipos de tarea
Estrategia de adopción de DevOps
Identificar los cuellos de botella actuales
Desarrollo
Factores de adopción
Retroalime Construcción
ntación
Despliegue
Características de DevOps - Arquitectura
Clientes
Propietarios Desarrollo Operaciones El lanzamiento de versiones y el
empresa /Pruebas /Producción
despliegue continuos llevan el
concepto de la integración continua al siguiente
Innovación, retroalimentación y mejora continua nivel.
La práctica que permite lanzar versiones y
desplegarlas también permite la creación de un
canal de distribución
Planificar y medir Desarrollar y probar Lanzar y desplegar
Este canal facilita el despliegue continuo de
Monitorizar y optimizar
software a QA y después a producción de forma
eficiente y automatizada.
El objetivo del lanzamiento de versiones y de la
implementación continua es presentar nuevas
funciones a los clientes y usuarios lo antes posible.
Supervisión y optimización
Permite a las empresas monitorizar los resultados de las aplicaciones publicadas en producción y la realimentación de los
clientes
Clientes
Propietarios Desarrollo Operaciones Supervisión continua: ofrece datos y métricas al
empresa /Pruebas /Producción
personal de líneas de negocios, desarrollo, control de
calidad y operaciones, así como de otras partes
interesadas, sobre aplicaciones en distintas fases del
Innovación, retroalimentación y mejora continua ciclo de entrega.
Desarrollo
Versionar
Paquetes
Pruebas
Pre-Producción
Producción
Actividades específicas:
• Almacenamiento de infraestructura, bases de datos,
aprovisionamiento de redes y configuración
• Aprovisionamiento y configuración de aplicaciones
CONTINUOS INSPECTION MONITORING
La supervisión es un vínculo importante en una
cadena de herramientas de DevOps. Permite a
la organización de TI identificar problemas
específicos de versiones específicas y
comprender el impacto en los usuarios finales.
Principales actividades:
• Rendimiento de la infraestructura de TI
• Respuesta y experiencia del usuario final
• Métricas y estadísticas de producción
La información de las actividades de supervisión
a menudo afecta a las actividades del Plan
necesarias para los cambios y para los nuevos
ciclos de lanzamiento
¡Gracias!