1. ToolChain
  2. Pretende unificar el ciclo de vida software, desde su construcción hasta su periodo productivo.
    1. Continuous Integration + Continuous Delivery + Continuous Deployment
    2. Unifica el ciclo de vida con un conjunto de herramientas, perfectamente integradas, toolchain, que permiten controlar todos los procesos del ciclo de vida
      1. 1. Code
      2. 2. Build - continuous integration
      3. 3. Test - testing
      4. 4. Package - artifact repository
      5. 5. Release - change management
      6. 6. Configure - infraestruture configuration and management (puppet)
      7. 7. Monitor
  3. Información
    1. https://en.wikipedia.org/wiki/DevOps
    2. https://en.wikipedia.org/wiki/DevOps_toolchain
  4. Integración Continua
    1. consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes
    2. Compilación y ejecución de pruebas de todo un proyecto
    3. Flujo
      1. Descarga del fuente
        1. Control de Versiones CVS, Subversion, Git,
      2. Compilación
        1. Maven utiliza un Project Object Model (POM) para describir el proyecto de software a construir, sus dependencias de otros módulos y componentes externos, y el orden de construcción de los elementos
        2. Repositorios de librería. Artifactory.
      3. Ejecución de pruebas
        1. CALIDAD
      4. Informe/Estado
  5. CALIDAD
    1. Análisis Estático de Código
      1. Herramientas
        1. SonarQube
        2. Checkstyle
        3. PMD
      2. Informa
        1. código duplicado / estándares de codificación / pruebas unitarias / complejidad ciclomática / potenciales errores / diseño del código / comentarios
    2. Pruebas de testing
      1. Funcionales
        1. Unitarias
        2. Integración
        3. De sistema
        4. Aceptación
        5. Regresión
      2. No funcionales
        1. Seguridad
        2. Stress / Carga
        3. Rendimiento
        4. Usabilidad, escalabilidad, instalabilidad, portabilidad, etc.
      3. Herramientas
        1. TestLink / Gestión de Pruebas
        2. Selenium, Soapui, Webinject, etc. Pruebas funcionales
        3. JMeter / Carga y rendimiento
    3. Refactorización
      1. Mejora del código
      2. Mantiene comportamiento
      3. Hediondez del código
  6. Monitorización
  7. Despliegue / Orquestación
    1. Ansible
      1. Control de la CONFIGURACIÓN, ADMINISTRACIÓN y Orquestación de servidores/máquinas
      2. Arquitectura
        1. Controlador
        2. Nodo/s
      3. Sin agente
        1. uso de ssh
        2. a diferencia de puppet y chef
      4. playbooks
        1. Describen las configuraciones, despliegues y orquestación.
        2. utiliza YAML
    2. Puppet
    3. Kubernetes
    4. SWARM
  8. Gestión de Logs
  9. Provisión de Infraestructura
    1. Puppet
    2. OpenStack
    3. Infraestructura
      1. Hypervisor: VMWARE, HYPER-V, XEN, KVM
      2. Cloud / Proveedores de servicio Amazon, Google, Azure
      3. Contenedores: Red Hat Cloud Suite