Introducción a DevOps

CLOUD COMPUTING

Despliegue directo al Hardware

Pre 1990

IBM PC = 1981

Despliegue directo al Hardware

horas para instalaciones

acceso directo al hardware

Despliegue directo al Hardware

un hardware => una aplicacion

estabilidad y seguridad progresiva

"si funciona, no lo toques"

Despliegue directo al Hardware

aplicaciones limitadas por hardware disponible

desarrollo en ambientes diferentes de prod

despliegue por ZIP

Crisis del Software

Virtualización

Post 1990

Linux = 1991

Java = 1995

C# = 2000

.com bubble = 2001

GMail = 2004

iPhone = 2007

Virtualización

Virtualización

CONSOLIDACION

Virtualización

Sistemas de Paquetes:

  • Instalación por aplicación
  • Gestión de dependencias
  • Base de paquetes instalados
  • Desinstalación y actualización
  • Configuración post-instalación

Sistemas Administración Configuración:

  • Aprovisionamiento
  • Gestión completa del SO
  • Mantiene toda la infraestructura
  • Configuracion declarativa
  • Idempotente

CLOUD COMPUTING

Cloud Computing

2006

2008

2008

Android = 2008

TypeScript = 2012

Docker = 2013

Swift = 2014

Cloud Computing

+

Proveedor
provider

Aprovisionamiento

provissioning

Infraestructura

Sistema operativo

Actualización

Aplicación

Servicio

Seguridad

Infraestructura
como código

versionable

incremental

metodologia

testing

entornos

consistencia

repetible

documentación

CLOUD COMPUTING

Agile vs DevOps

CLOUD COMPUTING

 

  • DevOps: Optimiza el flujo completo del software, desde el código hasta la producción y operación, haciendo que Agile sea más efectivo con automatización y colaboración Ops.
  • Agile: Optimiza la forma de trabajar del equipo de desarrollo y cómo entregan valor.
Aspecto Agile DevOps
Propósito principal Entregar software funcional en iteraciones cortas, enfocándose en valor para el cliente y flexibilidad ante cambios Integrar desarrollo y operaciones para entregar software de manera rápida, confiable y continua, incluyendo despliegue y operación
Alcance Ciclo de desarrollo de software: planificación, diseño, desarrollo, pruebas Todo el ciclo de vida del software: desarrollo, pruebas, despliegue, operación y retroalimentación
Enfoque Procesos, iteraciones, colaboración del equipo de desarrollo Automatización, integración continua, entrega continua, monitoreo y colaboración entre Dev y Ops
Cadencia Sprints o iteraciones (generalmente 1–4 semanas) Pipeline continuo: cada cambio en el código puede disparar construcción, prueba y despliegue automático
Roles principales Product Owner, Scrum Master, Equipo de Desarrollo Desarrollo, Operaciones, QA, Seguridad (colaboración cross-functional)
Medición del éxito Valor entregado al cliente, velocidad del equipo, cumplimiento de historias de usuario Frecuencia de despliegue, tiempo de entrega, estabilidad, tiempo de recuperación ante fallas

CLOUD COMPUTING

Conexión Agile - DevOps

  • Agile se centra en iteraciones y entrega de valor al cliente
  • DevOps asegura que esas iteraciones lleguen rápido y confiablemente a producción
  • Agile + DevOps permite entregar software/aplicaciones rápido, estable y adaptado a cambios

CLOUD COMPUTING

DevOps es un conjunto de prácticas que combina desarrollo (Dev) y operaciones (Ops) con el objetivo de:

  • Mejorar la colaboración entre equipos
  • Acelerar la entrega de software
  • Aumentar la calidad y estabilidad de las aplicaciones

Objetivos principales:

  • Integración continua (CI)
  • Entrega continua (CD)
  • Automatización de despliegues
  • Monitoreo y retroalimentación rápida

CLOUD COMPUTING

Beneficios de DevOps

  • Entrega más rápida: despliegues automáticos y frecuentes
  • Mejor calidad de software: pruebas automatizadas, menos errores humanos
  • Mayor colaboración: equipos de desarrollo y operaciones alineados
  • Escalabilidad: fácil de ajustar a cargas variables
  • Monitoreo constante: detección temprana de problemas

CLOUD COMPUTING

Ciclo DevOps

  1. Planificación: definición de funcionalidades y tareas
  2. Código: desarrollo en repositorios (GitHub, GitLab, CodeCommit)
  3. Construcción (Build): generación de artefactos ejecutables
  4. Pruebas (Test): automatización de pruebas unitarias, integración y aceptación
  5. Despliegue (Deploy): entrega continua en entornos de prueba o producción
  6. Operaciones (Operate): monitoreo de sistemas en tiempo real
  7. Retroalimentación (Feedback): ajustes según métricas y usuarios

Nota: AWS ofrece herramientas para cada fase, integradas con pipelines automatizadas

DevOps en AWS

Herramienta Función
AWS CodeCommit Repositorio Git privado y seguro
AWS CodeBuild Servicio de construcción e integración continua
AWS CodeDeploy Despliegue automatizado en EC2, Lambda o ECS
AWS CodePipeline Orquestación de pipelines CI/CD
AWS CloudWatch Monitoreo y alertas
AWS CloudFormation Infraestructura como código

CLOUD COMPUTING

AWS CodePipeline

  • Pipeline: flujo de trabajo automatizado para construir, probar y desplegar código

  • Etapas:

    1. Source: repositorio (CodeCommit, GitHub, S3)
    2. Build: compila y prueba el código (CodeBuild)
    3. Deploy: despliega la aplicación (CodeDeploy, ECS, Lambda)
    4. Approval (opcional): aprobación manual antes de producción
  • Ventajas:

    • Integración total con AWS
    • Configuración visual y escalable
    • Despliegue automatizado y seguro

CLOUD COMPUTING

Ejemplo CodePipeline

Caso: Aplicación web en EC2

Flujo:

CodeCommit --> CodeBuild --> CodeDeploy --> CloudWatch
  1. Source: Código en AWS CodeCommit
  2. Build: CodeBuild compila y ejecuta pruebas unitarias
  3. Deploy: CodeDeploy despliega a servidores EC2
  4. Monitor: CloudWatch alerta sobre errores post-despliegue

Cada cambio en CodeCommit dispara automáticamente el pipeline

CLOUD COMPUTING

BuildSpec de CodeBuild

version: 0.2

phases:
  install:
    commands:
      - echo "Instalando dependencias..."
      - npm install
  build:
    commands:
      - echo "Construyendo la aplicación..."
      - npm run build
  post_build:
    commands:
      - echo "Pruebas unitarias..."
      - npm test
artifacts:
  files:
    - '**/*'

Este archivo indica a CodeBuild cómo construir, testear y empaquetar la aplicación

CLOUD COMPUTING

Buenas Prácticas DevOps en AWS

  • Automatizar todos los pasos posibles (CI/CD)
  • Usar infraestructura como código (CloudFormation/Terraform)
  • Mantener pipelines cortos y rápidos
  • Monitorizar errores y métricas constantemente
  • Aplicar principios de seguridad desde el inicio (DevSecOps)

CLOUD COMPUTING

Conclusión

  • DevOps permite entregar software más rápido y confiable
  • AWS ofrece herramientas integradas para automatizar CI/CD, monitoreo y despliegues
  • AWS CodePipeline facilita la orquestación del proceso completo
  • DevOps: adaptarse rápidamente a cambios
  • DevOps: seguir las necesidades de negocio

CLOUD COMPUTING

Sobre esta presentación

CLOUD COMPUTING

Atribución 4.0 Internacional (CC BY 4.0)

https://creativecommons.org/licenses/by/4.0/deed.es