DevOps


       Jose Luis Soria
jlsoria@plainconcepts.com
          @jlsoriat
¿Qué es DevOps?

• Conjunto de prácticas que fomentan una
  colaboración más estrecha entre los equipos de
  desarrollo y de operaciones
• Aplicables en todos los proyectos
  – De uso común en escenarios SaaS
• Imprescindibles para modelos como Entrega
  Continua
¿Por qué DevOps?

•   Ahorro de costes
•   Máxima entrega de valor
•   Equipos más productivos
•   Tres objetivos medibles
     – Menores costes operacionales
     – Minimizar Cycle Time
     – Minimizar Mean Time To Recover (MTTR)
Implementando DevOps

Prácticas que fomentan la colaboración entre equipos
• Design for Operations
• Requisitos operacionales
• Pruebas de aceptación operacionales
• Aprovisionamiento de entornos
• Automatización de despliegues
• Automatización de promoción
• Detección y recuperación de errores
• Telemetría y analíticas
Reduciendo costes
   operacionales
Design for Operations

Construir aplicaciones fácilmente administrables
• Compatibles con el entorno
• Ajustadas a los procesos y herramientas de IT
• Que informan de su estado de salud
• Configurables en tiempo de ejecución
• …
Design for Operations: en la práctica

•   Registro en el visor de sucesos y en otros logs
•   Instrumentación WMI
•   Contadores de rendimiento
•   Paquetes de instalación
•   …
•   http://dfo.codeplex.com/
Requisitos operacionales

Las características que la aplicación tenga que
cumplir desde el punto de vista de operaciones, se
han de gestionar junto al resto de requisitos en
cuanto a la planificación del proyecto
Requisitos operacionales: en la práctica

• Registrar los requisitos operacionales junto al
  resto y tenerlos en cuenta en la planificación
• Usar elementos de trabajo en TFS: Product
  Backlog Item, Requirement, etc.
  – Muchas veces es útil usar las condiciones de
    aceptación
Pruebas de aceptación operacionales

• El esfuerzo de pruebas sobre nuestra aplicación,
  debe contemplar la verificación de los requisitos
  operacionales
• Esta verificación puede (y debe, en la medida de lo
  posible) ser automatizada e incorporada a la suite
  de aceptación de la aplicación
Pruebas de aceptación operacionales: en la
 práctica

• Incluir las pruebas en los planes de prueba de
  Microsoft Test Manager (o de la herramienta que
  se use)
• Automatizar la ejecución: pruebas de integración,
  grabaciones de test manager, pruebas de interfaz
  de usuario (CodedUI)
Minimizando el
 Cycle Time
Aprovisionamiento de entornos

• Cuanto menos tardamos en tener listo un entorno,
  más se reduce el tiempo de ciclo
• El mayor ahorro de tiempo se consigue con la
  automatización
Aprovisionamiento de entornos: en la
 práctica

• Gestión de entornos físicos
• System Center Virtual Machine Manager y otras
  plataformas de virtualización
• Lab Manager
Automatización de despliegues

• Los despliegues manuales son propensos a
  errores, costosos y difícilmente reproducibles
• Automatizar siempre que sea posible. Automatizar
  también el proceso de vuelta atrás
• Como último recurso, generar instaladores o
  scripts que se puedan ejecutar. No basarse en
  documentos
Automatización de despliegues: en la
    práctica

•   Scripting (Team Build, MSBuild, PowerShell)
•   Web Deploy / MSDeploy
•   Proyectos de base de datos, desarrollo declarativo
•   Lab Manager
     – Entornos estándar
• Despliegue automático de TFSService a Azure
Automatización de promoción

• Las distintas versiones de la aplicación que se van
  generando, pueden ser desplegadas y probadas
  automáticamente en distintos entornos
• Cada publicación es desencadenada si el resultado
  de la anterior fue satisfactorio
Minimizando el
    MTTR
Detección y recuperación de errores

• Los errores son menos costosos cuanto antes
  aparecen en el ciclo de vida
• Incluso en un entorno de producción, es mejor
  detectar y resolver los errores por ti mismo en
  lugar de que los sufra el usuario
• Para resolver los errores necesitamos la máxima
  información posible
Detección y recuperación de errores: en la
 práctica

• Monitorización con SCOM
  – Sincronización de alertas con TFS
• Pruebas de rendimiento de VS con SCOM
  – Global Service Monitor
• Intellitrace (en producción). Servidores de
  símbolos
Telemetría y analíticas

• Monitorización de la aplicación en producción
• Informan de errores y también de patrones de
  uso, problemas potenciales, etc.
Telemetría y analíticas: en la práctica

• Preemptive Analytics
JOSE LUIS SORIA

• ALM Team Lead at Plain Concepts
• Professional Scrum Trainer


       jlsoria@plainconcepts.com

       http://geeks.ms/blogs/jlsoria

       @jlsoriat                       Gracias!!!

Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps

  • 1.
    DevOps Jose Luis Soria jlsoria@plainconcepts.com @jlsoriat
  • 2.
    ¿Qué es DevOps? •Conjunto de prácticas que fomentan una colaboración más estrecha entre los equipos de desarrollo y de operaciones • Aplicables en todos los proyectos – De uso común en escenarios SaaS • Imprescindibles para modelos como Entrega Continua
  • 3.
    ¿Por qué DevOps? • Ahorro de costes • Máxima entrega de valor • Equipos más productivos • Tres objetivos medibles – Menores costes operacionales – Minimizar Cycle Time – Minimizar Mean Time To Recover (MTTR)
  • 4.
    Implementando DevOps Prácticas quefomentan la colaboración entre equipos • Design for Operations • Requisitos operacionales • Pruebas de aceptación operacionales • Aprovisionamiento de entornos • Automatización de despliegues • Automatización de promoción • Detección y recuperación de errores • Telemetría y analíticas
  • 5.
    Reduciendo costes operacionales
  • 6.
    Design for Operations Construiraplicaciones fácilmente administrables • Compatibles con el entorno • Ajustadas a los procesos y herramientas de IT • Que informan de su estado de salud • Configurables en tiempo de ejecución • …
  • 7.
    Design for Operations:en la práctica • Registro en el visor de sucesos y en otros logs • Instrumentación WMI • Contadores de rendimiento • Paquetes de instalación • … • http://dfo.codeplex.com/
  • 8.
    Requisitos operacionales Las característicasque la aplicación tenga que cumplir desde el punto de vista de operaciones, se han de gestionar junto al resto de requisitos en cuanto a la planificación del proyecto
  • 9.
    Requisitos operacionales: enla práctica • Registrar los requisitos operacionales junto al resto y tenerlos en cuenta en la planificación • Usar elementos de trabajo en TFS: Product Backlog Item, Requirement, etc. – Muchas veces es útil usar las condiciones de aceptación
  • 10.
    Pruebas de aceptaciónoperacionales • El esfuerzo de pruebas sobre nuestra aplicación, debe contemplar la verificación de los requisitos operacionales • Esta verificación puede (y debe, en la medida de lo posible) ser automatizada e incorporada a la suite de aceptación de la aplicación
  • 11.
    Pruebas de aceptaciónoperacionales: en la práctica • Incluir las pruebas en los planes de prueba de Microsoft Test Manager (o de la herramienta que se use) • Automatizar la ejecución: pruebas de integración, grabaciones de test manager, pruebas de interfaz de usuario (CodedUI)
  • 12.
  • 13.
    Aprovisionamiento de entornos •Cuanto menos tardamos en tener listo un entorno, más se reduce el tiempo de ciclo • El mayor ahorro de tiempo se consigue con la automatización
  • 14.
    Aprovisionamiento de entornos:en la práctica • Gestión de entornos físicos • System Center Virtual Machine Manager y otras plataformas de virtualización • Lab Manager
  • 15.
    Automatización de despliegues •Los despliegues manuales son propensos a errores, costosos y difícilmente reproducibles • Automatizar siempre que sea posible. Automatizar también el proceso de vuelta atrás • Como último recurso, generar instaladores o scripts que se puedan ejecutar. No basarse en documentos
  • 16.
    Automatización de despliegues:en la práctica • Scripting (Team Build, MSBuild, PowerShell) • Web Deploy / MSDeploy • Proyectos de base de datos, desarrollo declarativo • Lab Manager – Entornos estándar • Despliegue automático de TFSService a Azure
  • 17.
    Automatización de promoción •Las distintas versiones de la aplicación que se van generando, pueden ser desplegadas y probadas automáticamente en distintos entornos • Cada publicación es desencadenada si el resultado de la anterior fue satisfactorio
  • 18.
  • 19.
    Detección y recuperaciónde errores • Los errores son menos costosos cuanto antes aparecen en el ciclo de vida • Incluso en un entorno de producción, es mejor detectar y resolver los errores por ti mismo en lugar de que los sufra el usuario • Para resolver los errores necesitamos la máxima información posible
  • 20.
    Detección y recuperaciónde errores: en la práctica • Monitorización con SCOM – Sincronización de alertas con TFS • Pruebas de rendimiento de VS con SCOM – Global Service Monitor • Intellitrace (en producción). Servidores de símbolos
  • 21.
    Telemetría y analíticas •Monitorización de la aplicación en producción • Informan de errores y también de patrones de uso, problemas potenciales, etc.
  • 22.
    Telemetría y analíticas:en la práctica • Preemptive Analytics
  • 23.
    JOSE LUIS SORIA •ALM Team Lead at Plain Concepts • Professional Scrum Trainer jlsoria@plainconcepts.com http://geeks.ms/blogs/jlsoria @jlsoriat Gracias!!!