Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Multi-Stage Continuous Delivery

Multi-Stage Continuous Delivery

Avatar for Franchesco romero

Franchesco romero

April 02, 2026
Tweet

More Decks by Franchesco romero

Other Decks in Programming

Transcript

  1. Situación • Persona que desarrolla código quiere llevar features a

    prod de manera confiable y segura • Expectativa de que el proceso de despliegue debe minimizar la aparición de bugs • Dicho proceso debe ser automatizado y suceder de manera continua @elchesco
  2. Multi-Stage CD Proceso para poder llevar código a prod en

    varias iteraciones y en diferentes ambientes • Build • Prepare • Deploy • Test • Notify • Rollback DEV STG PROD @elchesco
  3. Me suena… pipeline { agent any stages { stage('First Stage')

    { steps { echo 'Step 1. Hello World' } } stage('Second Stage') { steps { echo 'Step 2. Second time Hello' echo 'Step 3. Third time Hello' } } } } @elchesco
  4. Retos • Disponibilidad de ambientes para desplegar y/o probar: a.k.a.

    no le muevan a dev por que estoy probando algo… • Satisfacer dependencias externas correctamente (ejemplos: js, py, aws) • Ambientes con candado (bug en prod) @elchesco
  5. Retos • Llegada a producción lenta • Considerable número de

    herramientas involucradas (+7)* • Pipelines con diferentes niveles de personalización web api mobile @elchesco * Lo leí en algún lugar
  6. Expectativas @elchesco • Los pipelines se ejecutan rápidamente • Paridad

    de ambientes • La automatización y el análisis eliminan el 90% de los bugs en prod
  7. Realidad • 95% del tiempo se pierde dando mantenimiento a

    pipelines • 80% del tiempo es usado en tasks manuales • 90% del tiempo usado en remediación manual @elchesco State of DevOps Report 2020: https://puppet.com/resources/report/2020-state-of-devops-report
  8. Realidad • Pipelines monolíticos/frágiles, difíciles de mantener por el equipo

    • Hacer onboarding de nuevas herramientas suele consumir bastantes recursos • Monitoreo, observabilidad y métricas pasan a segundo plano @elchesco
  9. Lo que necesitamos @elchesco • Capacidad de poner ambientes en

    cuarentena • Asegurar dependencias siempre disponibles y seguras • Configuración (que funcione) • Despliegues validados!!! ▪ Tests, Performance, SLOs/SLIs
  10. Keptn •Automatiza la configuración •Provee en un solo control-plane ▪

    Monitoreo ▪ Despliegue ▪ Remediacion ▪ Resiliencia @elchesco
  11. Keptn - ¿Qué es? •Orquestamiento / Flujos ▪ Basado en

    eventos ▪ Declarativo ▪ Orientado a GitOps ▪ SLOs ▪ Estándares @elchesco
  12. Keptn - desde el POV de plataforma @elchesco • Progressive

    delivery • Automatización de SRE • Auto remediación y rollback • Configuración codificable, independiente de herramientas pero con • Conectividad a herramientas existentes ▪ JMeter, Argo, Jenkins, Helm, etc.
  13. Keptn @elchesco • Pipelines ▪ No son necesarias 🤯 •

    Estrategias OOTB 📦 ▪ B/G, Canary • Observabilidad en el proceso ▪ Auditability, ▪ Traceability
  14. Keptn - ¿Cómo funciona? •Servicios de Keptn ▪ A los

    cuales las herramientas se suscriben por medio de integraciones •Eventos Keptn ▪ Traducidos a llamadas API de/hacia las herramientas @elchesco
  15. Keptn - Control Plane @elchesco Control Plane GitOps Container Registry

    Continuous Delivery Dash- boarding Test Automation ChatOps Core Services Observabi- lity Dev Namespace Staging Namespace Production Namespace Platform Toolset (uniform file) Environment Definition (shipyard file) https://keptn.sh/resources/slides/
  16. Keptn - Ejemplos de flujos y herramientas • Despliegue ▪

    Argo, Jenkins, CircleCI • Observabilidad ▪ Prometheus, Grafana, Splunk • Testing ▪ Jmeter, Selenium, Artillery • Notificaciones ▪ Slack, Webhooks, Tekton @elchesco • Automatización ▪ Ansible, webhooks, AWS Lambda
  17. Resumen • Pipelines tradicionales ▪ Falta de separación en responsabilidades

    ▪ Código con dependencias y personalizaciones ▪ Dificultad en implementación de herramientas específicas @elchesco • Keptn ▪ Fases dedicadas, orquestamiento basado en eventos ▪ Interoperabilidad por medio de abstracciones ▪ Flexibilidad en uso y cambio de herramientas
  18. • Keptn crea un evento y lo distribuye a cualquier

    servicio que esté escuchando a sh.keptn.event.hello-world.triggered • El JES busca la configuración del archivo yaml y ejecuta el contenedor Resumen
  19. • El servicio ejecutor de tareas envía un par de

    eventos a Keptn (un evento .started y un evento .finished correspondiente) • Keptn recibe un par de eventos .started y .finished de JES, por lo que sabe que la tarea está completa • Keptn termina la secuencia Resumen
  20. Próximos pasos - casos de usos avanzados • Quality Gates

    ▪ Basados en SLI/SLO @elchesco https://medium.com/keptn/implementing-sli-slo-based-continuous-delivery-quality-gates-using-prometheus-9e17ec18 ca36 https://medium.com/keptn/part-2-evaluating-application-resiliency-with-keptn-and-litmuschaos-use-case-and-demo-f4 3b264a2294
  21. Próximos pasos - casos de usos avanzados • Progressive Delivery

    @elchesco https://keptn.sh/docs/concepts/delivery/ stages: - name: "dev" deployment_strategy: "direct" test_strategy: "functional" - name: "hardening" deployment_strategy: "blue_green_service" test_strategy: "performance" - name: "production" deployment_strategy: "blue_green_service" remediation_strategy: "automated"