Exploración del recorrido de DevOps
Recuerde que el objetivo es acortar el tiempo del ciclo. Comience con el pipeline de despliegue, que suele ser la mayor restricción. Pregúntese: ¿Cuánto tiempo se tarda en implementar un cambio de una línea de código o configuración? En última instancia, este tiempo de implementación se convierte en un freno para tu velocidad y capacidad de responder a los cambios del mercado.
Ejemplo de hoja de ruta de implementación de DevOps
Fase 1: Fundación
- Establecimiento del control de versiones con Git
- Implementación de la canalización básica de CI/CD
- Configuración de la supervisión y las alertas
Fase 2: Automatización
- Automatización de pruebas en varios niveles
- Implementación de la infraestructura como código
- Establecer el escaneo de seguridad
Fase 3: Optimización
- Ajustar las estrategias de implementación
- Implementación de supervisión avanzada
- Optimización del rendimiento y el costo
Fase 4: Cultura y escala
- Expansión de prácticas entre equipos
- Establecimiento de centros de excelencia
- Mejora continua de los procesos
Procedimientos básicos de DevOps y su impacto
Integración continua
Impulsa la combinación y las pruebas continuas del código, lo que conduce a la detección temprana de defectos. Entre las ventajas se incluyen:
- Conflictos de integración reducidos: problemas de combinación detectados en horas, no semanas
- Comentarios más rápidos: los desarrolladores detectan los problemas en cuestión de minutos tras confirmar el código
- Calidad mejorada del código: las pruebas automatizadas detectan regresiones inmediatamente
- Mayor confianza: Teams puede refactorizar y mejorar el código de forma segura
Sugerencia de implementación: comience con compilaciones automatizadas en cada confirmación y agregue gradualmente capas de prueba.
Entrega continua
Permite la implementación rápida de soluciones de software en entornos de producción y pruebas, lo que ayuda a las organizaciones a corregir rápidamente los errores y responder a los requisitos empresariales que cambian constantemente.
Ventajas clave:
- Menor riesgo de implementación: las versiones más pequeñas y frecuentes son más fáciles de solucionar y revertir
- Tiempo de comercialización más rápido: las características llegan a los clientes semanas o meses antes
- Confiabilidad mejorada: las implementaciones automatizadas eliminan el error humano.
- Mejor capacidad de respuesta del cliente: respuesta rápida a los comentarios y cambios en el mercado
Estrategias de implementación que se deben tener en cuenta:
- Azul-Verde: implementaciones de tiempo de inactividad cero con funcionalidad de reversión instantánea
- Canary: implementación gradual en un subconjunto de usuarios para minimizar el riesgo
- Marcas de características: implementación de código sin exponer características, lo que permite versiones más seguras
Excelencia del control de versiones
Normalmente se implementa con un repositorio basado en Git, el control de versiones permite a los equipos de todo el mundo comunicarse de forma eficaz durante las actividades de desarrollo diarias e integrarlas con herramientas de desarrollo de software para supervisar actividades como las implementaciones.
Procedimientos avanzados de Git:
- Estrategias de bifurcación: Flujo de GitHub o desarrollo basado en troncos
- Procesos de revisión de código: solicitudes de incorporación de cambios con aprobaciones obligatorias
- Convenciones de confirmación: mensajes de confirmación coherentes y significativos
- Enlaces de integración: desencadenadores de implementación y pruebas automatizados
Consideraciones empresariales:
- Organización del repositorio y control de acceso
- Control de archivos grandes (Git LFS)
- Requisitos de cumplimiento y auditoría
- Copia de seguridad y recuperación ante desastres
Agile Planning and Lean Project Management
Use técnicas ágiles de planeamiento y administración de proyectos ajustadas para maximizar la entrega de valores:
Procedimientos recomendados para planear sprints:
- Planear y aislar el trabajo en sprints manejables (de 1 a 4 semanas)
- Administrar la capacidad del equipo y ayudar a los equipos a adaptarse rápidamente a las necesidades empresariales cambiantes
- ** Definir criterios de aceptación claros y definición de terminado
- Una definición de Terminado en DevOps incluye software en funcionamiento que recopila telemetría en relación con los objetivos empresariales previstos.
Artefactos ágiles clave:
- Casos de usuario: características descritas desde la perspectiva del usuario con un valor claro
- Epopeyas: grandes características desglosadas en historias manejables
- Trabajo pendiente: lista prioritaria de características y deuda técnica
- Objetivos de sprint: Objetivos claros para cada iteración
Principios Lean:
- Eliminación de ineficiencias en procesos y transferencias
- Optimización para el flujo, no para el uso de recursos
- Incorporar calidad desde el principio
- Entrega de valor temprano y a menudo
Supervisión y registro completos
Supervise las aplicaciones en ejecución, incluidos los entornos de producción para el estado de la aplicación y el uso del cliente. Esto ayuda a las organizaciones a crear hipótesis y validar o desaprobar rápidamente estrategias. Los datos enriquecidos se capturan y almacenan en distintos formatos de registro.
Componentes del stack de monitoreo:
- Supervisión del rendimiento de aplicaciones (APM): seguimiento de los tiempos de respuesta, los errores y el rendimiento
- Supervisión de la infraestructura: CPU, memoria, disco, métricas de red
- Métricas empresariales: participación del usuario, tasas de conversión, uso de características
- Supervisión de seguridad: detección de amenazas y seguimiento de cumplimiento
Procedimientos recomendados de observabilidad:
- Implementación del seguimiento distribuido para microservicios
- Uso del registro estructurado con identificadores de correlación
- Configuración de alertas proactivas con falsos positivos mínimos
- Crear paneles para diferentes audiencias (operaciones, desarrollo, negocio)
Estrategia de administración de registros:
- Registro centralizado con funcionalidades de búsqueda
- Directivas de retención basadas en los requisitos de cumplimiento
- Optimización de costos mediante la gestión del nivel de registro
- Análisis en tiempo real de problemas críticos
- Las nubes públicas e híbridas han hecho que lo imposible sea fácil. La nube ha quitado los cuellos de botella tradicionales y ha ayudado a comercializar la infraestructura. Puede usar infraestructura como servicio (IaaS) para elevar y cambiar las aplicaciones existentes o plataforma como servicio (PaaS) para obtener una productividad sin precedentes. La nube proporciona un centro de datos sin límites.
- Infraestructura como código (IaC): permite la automatización y validación de la creación y desmontaje de entornos para ayudar a ofrecer plataformas de hospedaje de aplicaciones seguras y estables.
- Use la arquitectura de microservicios para aislar los casos de uso empresariales en pequeños servicios reutilizables que se comunican a través de contratos de interfaz. Esta arquitectura permite la escalabilidad y la eficacia.
- Los contenedores son la siguiente evolución en la virtualización. Son mucho más ligeros que las máquinas virtuales, permiten una hidratación mucho más rápida y configuran fácilmente archivos.
DevOps puede afectar al principio, pero evita estos anti-patrones.
Si duele, hazlo con más frecuencia. Es probable que la adopción de nuevas prácticas como ir al gimnasio resulte inicialmente incómoda. Cuanto más se ejercen las nuevas técnicas, más fáciles serán.
Al igual que el entrenamiento en el gimnasio, donde primero se ejercen músculos grandes antes de los músculos pequeños, adoptan prácticas que tienen el impacto más significativo primero. Entrenamiento cruzado para desarrollar sinergia entre prácticas.
Antipatrones comunes de DevOps para evitar:
Enfoque centrado en herramientas: no empiece por comprar herramientas. Comience con la comprensión del estado actual y los resultados deseados.
Transformación Big Bang: evite intentar cambiar todo a la vez. Comience poco a poco y expanda gradualmente.
Silo del equipo de DevOps: no cree un "equipo de DevOps" independiente. DevOps es una práctica, no un rol.
Ignorar la cultura: Los cambios técnicos sin cambios culturales fracasarán. Invertir en personas y procesos.
Omisión de la seguridad: No agregue la seguridad al final. Integre la seguridad en todo (DevSecOps).
Sobre-ingeniería: inicie simple y agregue complejidad solo cuando sea necesario. Evite la optimización prematura.
No ignorar el legado: no abandone los sistemas existentes. Planear estrategias de modernización graduales.
Patrones de éxito que adoptar.
Comience con cambios de alto impacto y bajo riesgo: automatice las compilaciones antes de las implementaciones.
Medir todo: establecer líneas base antes de realizar cambios
Error rápido y aprendizaje: Adoptar la experimentación con medidas de seguridad adecuadas
Invertir en automatización: automatización de tareas repetitivas y propensas a errores primero
Crear bucles de retroalimentación: crear mecanismos para aprender tanto de éxitos como de errores
Nota:
El artículo original define DevOps proporciona contexto adicional y explicaciones detalladas de estos conceptos.