Servicios AWS DevOps: CodeCommit, CodeBuild, CodeDeploy, CodePipeline
Implementa CI/CD completo con los servicios de desarrollo de AWS: Code family.
AWS ofrece un conjunto de servicios DevOps que permiten implementar integración continua y entrega continua (CI/CD). Estos servicios, conocidos como la familia 'Code', trabajan juntos para automatizar el ciclo de desarrollo de software.
1Visión General de los Servicios Code
La familia Code de AWS:
CodeCommit:
- Repositorios Git privados administrados
- Control de versiones
CodeBuild:
- Servicio de build completamente administrado
- Compila código, ejecuta tests, produce artefactos
CodeDeploy:
- Automatiza despliegues a EC2, Lambda, ECS, on-premises
CodePipeline:
- Orquestador de CI/CD
- Conecta todos los servicios en un flujo
CodeArtifact:
- Repositorio de artefactos (npm, Maven, PyPI)
CodeStar (deprecated):
- Templates para proyectos completos
- Siendo reemplazado por otras herramientas
Flujo típico:
CodeCommit → CodeBuild → CodeDeploy
└────── CodePipeline ──────┘
│
CodeArtifact
(dependencias)
2AWS CodeCommit
¿Qué es? Servicio de control de versiones Git administrado.
Características:
- Repositorios Git ilimitados
- Altamente disponible y duradero
- Integración con IAM para acceso
- Cifrado en reposo y tránsito
- Pull requests y revisiones de código
Comparación con GitHub/GitLab:
| Característica | CodeCommit | GitHub |
|---|---|---|
| Hosting | AWS | Cloud/On-prem |
| Repos privados | Ilimitados | Según plan |
| IAM integration | Nativa | Limitada |
| Precio | Por usuario activo | Por usuario |
Cuándo usar CodeCommit:
- Quieres todo en AWS
- Requisitos de compliance estrictos
- Integración fuerte con IAM
- Evitar tráfico fuera de AWS
Cuándo usar GitHub/GitLab:
- Comunidad open source
- Features avanzadas de colaboración
- Ecosistema de integraciones
Nota importante: AWS está promoviendo más la integración con GitHub que nuevas features para CodeCommit.
AWS recomienda cada vez más usar GitHub con CodePipeline en lugar de CodeCommit.
3AWS CodeBuild
¿Qué es? Servicio de compilación y testing serverless.
Características:
- Sin servidores que administrar
- Escala automáticamente
- Pago por minuto de build
- Ambientes pre-configurados o custom (Docker)
Proceso de build:
Código fuente (Git/S3)
│
▼
CodeBuild
├── Instalar dependencias
├── Compilar
├── Ejecutar tests
└── Empaquetar
│
▼
Artefactos (S3)
buildspec.yml:
version: 0.2
phases:
install:
runtime-versions:
nodejs: 18
commands:
- npm ci
build:
commands:
- npm run build
- npm test
artifacts:
files:
- '**/*'
base-directory: dist
Ambientes disponibles:
- Amazon Linux 2
- Ubuntu
- Windows Server
- Custom Docker images
Precios:
- $0.005/min (build.general1.small)
- $0.01/min (build.general1.medium)
- Free tier: 100 min/mes
4AWS CodeDeploy
¿Qué es? Servicio para automatizar despliegues de aplicaciones.
Destinos soportados:
- Amazon EC2
- AWS Lambda
- Amazon ECS
- Servidores on-premises
Tipos de despliegue:
In-Place (EC2/On-prem):
- Actualiza aplicación en las instancias existentes
- Downtime durante actualización
- Rollback manual
Blue/Green (EC2):
- Crea nuevo conjunto de instancias
- Cambia tráfico cuando está listo
- Rollback instantáneo
Blue/Green (Lambda):
- Canary: pequeño % primero
- Linear: incremento gradual
- All-at-once: todo de una vez
appspec.yml:
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
hooks:
BeforeInstall:
- location: scripts/before_install.sh
AfterInstall:
- location: scripts/after_install.sh
ApplicationStart:
- location: scripts/start_server.sh
Hooks (orden de ejecución): ApplicationStop → BeforeInstall → AfterInstall → ApplicationStart → ValidateService
5AWS CodePipeline
¿Qué es? Servicio de orquestación CI/CD que conecta las etapas del pipeline.
Etapas típicas:
- Source: CodeCommit, GitHub, S3
- Build: CodeBuild
- Test: CodeBuild, terceros
- Deploy: CodeDeploy, CloudFormation, ECS, S3
Características:
- Ejecución automática con cambios en código
- Aprobaciones manuales
- Acciones paralelas
- Múltiples regiones
Diagrama de pipeline:
┌─────────┐ ┌─────────┐ ┌──────────┐ ┌─────────┐
│ Source │──→│ Build │──→│ Test │──→│ Deploy │
│(GitHub) │ │(CodeBuild) │(CodeBuild) │(CodeDeploy)
└─────────┘ └─────────┘ └──────────┘ └─────────┘
│
▼
┌──────────────┐
│ Approval │
│ (Manual) │
└──────────────┘
│
▼
┌──────────────┐
│ Deploy │
│ (Prod) │
└──────────────┘
Precios:
- $1/mes por pipeline activo
- Primer pipeline gratis siempre
- Free tier: 1 pipeline gratis
6CodeArtifact y Ejemplo Completo
AWS CodeArtifact: Repositorio de artefactos administrado.
Formatos soportados:
- npm (JavaScript)
- PyPI (Python)
- Maven, Gradle (Java)
- NuGet (.NET)
Beneficios:
- Cache de dependencias públicas
- Repositorio privado de paquetes
- Control de versiones
- Integración con CodeBuild
Ejemplo de pipeline completo:
Developer push a GitHub
│
▼
CodePipeline detecta cambio
│
▼
Stage 1: Source (GitHub)
│
▼
Stage 2: Build (CodeBuild)
├── npm ci (deps de CodeArtifact)
├── npm run build
├── npm test
└── Produce artefacto
│
▼
Stage 3: Deploy Staging (CodeDeploy)
│
▼
Stage 4: Manual Approval
│
▼
Stage 5: Deploy Production (CodeDeploy)
Resumen de precios:
| Servicio | Precio |
|---|---|
| CodeCommit | $1/usuario activo |
| CodeBuild | $0.005+/min |
| CodeDeploy | Gratis para EC2 |
| CodePipeline | $1/pipeline/mes |
| CodeArtifact | $0.05/GB/mes |
CodeDeploy es GRATIS para despliegues a EC2 y on-premises. Solo cobra para Lambda y ECS.
Puntos Clave para el Examen
- CodeCommit = Git, CodeBuild = CI, CodeDeploy = CD, CodePipeline = Orquestador
- CodePipeline conecta source → build → test → deploy automáticamente
- CodeDeploy soporta Blue/Green y rolling deployments con rollback
- CodeBuild es serverless - pagas por minuto de build
- CodeArtifact cachea dependencias npm/PyPI/Maven para builds más rápidos