DEVOPS

Uniendo desarrollo y operaciones

Author: David Montaño

Agenda

  • Algunas Preguntas
  • Despliegues en Producción
  • ¿Qué es DevOps?
  • Camino hacia una Organización de Alto Rendimiento
  • Herramientas de DevOps
  • Bibliografía

Algunas Preguntas

¿Qué rol diseña?

  • Los diseñadores
  • Levante la mano si usted no es diseñador y ha hecho:
    • algún código de diseño
    • una modificación en una imagen (png,jpg,gif)

¿Qué rol realiza pruebas funcionales?

  • Los testers
  • Levante la mano si usted no es tester y ha hecho:
    • pruebas unitarias
    • pruebas funcionales

¿Qué rol realiza pruebas no funcionales?

  • System Performance Engineers
  • Levante la mano si usted ha hecho:
    • pruebas no funcionales

¿Qué rol realiza despliegues?

  • Operations
  • Levante la mano si usted ha hecho:
    • despliegues

¿Qué rol se asegura de la estabilidad de un sitio?

  • Systems Reliability Engineer
  • Levante la mano si usted ha hecho:
    • recuperaciones de caídas de ambientes

¿Continuous qué?

Continuous Integration

Continuous Delivery

Continuous Deployment

  • cada cambio se despliega de forma automática en producción

Continuous ...

Despliegues en Producción

¡Vamos a desplegar en Producción!

  • ¿Quién ha hecho un despliegue en Producción?
  • ¿Cómo se elige quién va a desplegar?
  • ¿Saldrá bien el despliegue?
  • Ahora que acabamos el despliegue, ¿sí estará funcionando esa aplicación?
  • ¡Uyyy ayer hicimos el despliegue y un error horrible se fue a Producción! Bueno será en el próximo despliegue...

Errare humanum est

Despliegues Famosos (por las consecuencias negativas)

  • Negocios:
    • Vancouver Stock Exchange: errores de redondeo usando Floats
    • Knight Capital Group: perdieron 440 millones de dólares en 45 minutos
  • Videojuegos:
    • Steam: actualización borraba las carpetas personales de los usuarios
    
    STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
    rm -rf "$STEAMROOT/"*
    

Despliegues Famosos (por las consecuencias negativas)

  • Criptografía:
    • Apple Computer, Inc: (Unreachable Code) aceptaba cualquier certificado digital
  • Seguimiento de Fechas:
    • Bank of Queensland: incorrecta conversión de un número hexadecimal

Organizaciones de Alto Rendimiento

  • Amazon, Google, Etsy, Facebook y Netflix: diariamente despliegan más de 100 veces en Producción
  • Algunas organizaciones hacen que las personas recién contratadas desplieguen en Producción
  • La mayoría de Organizaciones lo piensan dos veces antes de desplegar más de dos veces al año

Organizaciones de Alto Rendimiento

Desde el 2011 hasta el 2015 las organizaciones que usan DevOps

  • despliegan 30 veces más frecuentemente
  • tuvieron una mejora de 200 veces en su Order Lead Time
  • tuvieron 60 veces menos fallas
  • su MTR (Mean Time to Recover) fue 166 veces más rápido

Muro de la Confusión

Muro de la Confusión

¿Qué es DevOps?

DevOps: Definiciones

Explicación de Yuji Kiriki

Equipo de Desarrollo empieza a:
  • operar la aplicación
  • monitorear la aplicación
  • responder por la aplicación

Explicación de Yuji Kiriki

Funciones típicas:
  • Infraestructura Inmutable
    • Un servidor, una vez desplegado, nunca se modifica, solamente es reemplazado con una instancia actualizada
  • Aprovisionamiento Automático
  • Desarrollo empieza a desplegar
  • Despliegue Continuo
  • Monitoreo y Seguimiento
  • Pruebas de Carga y Capacidad

Explicación de Martin Fowler

  • Fenómeno Cultural
  • Los Desarrolladores de Aplicaciones deben ser conscientes de las necesidades de Operación
  • Las personas de Operación deben facilitar el despliegue
  • Colaboración

DevOps: Definición

  • DevOps es una Cultura de Confianza y Colaboración
  • en la cual la gente usa las Herramientas adecuadas
  • para la automatización
  • y así poder garantizar una Entrega Continua.

DevOps: Definición

  • DevOps no es un rol
  • DevOps no son los desarrolladores administrando Producción
  • Los roles son: Developers y Operations
  • Operations deben saber:
    • programar
    • automatizar procedimientos de operaciones
    • tener conocimiento de la aplicación
  • Site Reliability Engineers
    • Fundamentally, it’s what happens when you ask a software engineer to design an operations function.

La Cultura DevOps debe asegurar un Flujo de Despliegue caracterizado por:

  • Compilación Automatizada
  • Pruebas Automatizadas
  • Despliegue Automatizado

¿Por qué Entrega Continua?

  • Reducir los Riesgos
  • Mostrar los Avances
  • Obtener Retroalimentación

¿Por qué Entrega Continua?: Reducir los riesgos

  • Small changes, lower risks. Martin Fowler.
  • Versionamiento de Infraestructura y Configuración
  • Múltiples pequeños aportes a la rama principal disminuyen el riesgo de error, pues entre más pequeño el cambio, más fácil de corregir.

El equipo debe

Responsabilidades

Camino hacia una Organización de Alto Rendimiento

Identificando el problema

Propuesta / Objetivo

Cada equipo debe contar con la capacidad y el conocimiento para:

  • Desplegar, Monitorear y Operar los diferentes ambientes
  • Aprender de forma Contínua
  • Automatizar los procesos de Compilación, Pruebas y Despliegue

Cultura y Aprendizaje

  • Consejos de DevOps a dos Empresas: una tuvo éxito y la otra quebró
  • El éxito y la falla se correlacionan con el grado de 'Aprendizaje Organizacional'
  • Las 7 dimensiones del Aprendizaje Organizacional (DLOQ rating)
    • Aprendizaje Continuo
    • Preguntas y Diálogos
    • Aprendizaje en Equipo
    • Enpoderamiento
    • Sistemas Embebidos
    • Conexión de Sistemas
    • Liderazgo Estratégico

Learning Organization

  • The learning organization is one that has the capacity
  • to integrate people and structures
  • in order to move toward
  • continuous learning
  • and change

Proyectos con (algunas) prácticas de DevOps

  • ACH
  • Copa
  • ¿Otros?
  • ¡Sí! ¡TODOS!

Trabajo por Hacer

  • DevOps en cada equipo
  • Mejorar Capacidades Técnicas
  • Comparar herramientas rápidamente
  • Mejorar la selección de la herramienta ideal para el trabajo
  • Automatizar lo más que se pueda (Preferiblemente TODO)

Trabajo por Hacer

  • Siempre pensar en Rollback, que también debe estar Automatizado
  • Integración Continua
  • Monitoreo de aplicaciones
  • Optimizar la arquitectura de las aplicaciones, minimizando la cantidad de entidades que los componen (KISS) pero cumpliendo con CAP (Consistency - Availability - Partition Tolerance)
  • Mejorar pruebas de carga y estrés

Herramientas de DevOps

Herramientas: Aprovisionamiento de Máquinas

  • Terraform
  • Docker Machine
  • aws-cli / boto
  • Otto / vagrant

Herramientas: Aprovisionamiento de Software

  • Rkt
  • Docker
  • Jenkins
  • RunDeck
  • Capistrano
  • Ansible
  • Puppet
  • Chef
  • BuildMaster
  • Mesos / Kubernetes

Herramientas: Administración de la configuración

  • Puppet's Hiera
  • Consul

Herramientas: Monitoreo / Reportes / Alertas (1)

  • AWS Cloudwatch
  • Nagios
  • Icinga
  • Zabbix
  • Monit
  • ELK: Logstash, ElasticSearch, Kibana
  • Collectd/Collectl
  • UpGuard
  • Splunk
  • Vistara
  • SolarWinds

Herramientas: Monitoreo / Reportes / Alertas (2)

  • Nimsoft
  • New Relic
  • Graphite / Grafana
  • Dynatrace

Bibliografía