Glosario y resumen
Todos los términos de la presentación, con búsqueda. Arriba, lo que más se confunde en el examen.
La pregunta que responde cada práctica
- ¿El código nuevo funciona junto al existente?→ Integración continua
- ¿Tenemos una versión lista? (una persona aprueba el paso a producción)→ Entrega / distribución continua
- ¿La ponemos automáticamente en producción?→ Despliegue / implementación continua
- Entregar vs. desplegar→ Tener el software listo vs. ponerlo en producción
Conceptos
- CI (Integración continua)
- Integrar los cambios del código en un repositorio compartido de forma automática y frecuente.
- CD (Entrega / despliegue continuo)
- Llevar el software validado hacia producción: con aprobación humana (entrega) o automáticamente (despliegue).
- Entrega continua (distribución continua)
- Los cambios validados quedan listos; el paso a producción requiere aprobación humana.
- Despliegue continuo (implementación continua)
- Los cambios que superan las pruebas llegan automáticamente a los usuarios finales.
- DevOps
- Ciclo de vida del software en el que la CI es una etapa (desarrollo + operaciones trabajando juntos).
- Pipeline
- Serie de pasos automatizados para construir, probar y desplegar software de forma continua y confiable.
Flujo
- Repositorio
- Lugar donde se guarda el código compartido del equipo.
- VCS
- Sistema de control de versiones (por ejemplo, Git) que gestiona los repositorios centrales.
- Commit
- Registro de un cambio en el repositorio.
- Git push
- Envío de los cambios al repositorio compartido; en el flujo de CI dispara el pipeline.
- Trigger
- Evento que inicia automáticamente el pipeline (disparador).
- Build / Construir
- Crear y compilar el software a partir del código fuente.
- Notify (notificación)
- Aviso del resultado del build o de las pruebas (éxito o error).
- Validación
- Comprobación de que el cambio cumple las condiciones antes de continuar.
- Release
- Versión preparada para avanzar; en el ∞ es el cruce de CI a CD.
- Entregar
- Enviar una base de código aprobada a un entorno de producción.
- Desplegar / Deploy
- Implementar los cambios: el producto final pasa a producción.
- Operate
- Operación del sistema ya desplegado.
- Monitor
- Seguimiento del funcionamiento en producción; lo aprendido vuelve a PLAN.
- Plan
- Planificar qué construir o mejorar; en el ∞ es el cruce de CD de vuelta a CI.
Pruebas
- Prueba unitaria
- Comprueba una parte individual del software de forma aislada.
- Prueba de integración
- Comprueba que varios componentes funcionen juntos.
- Prueba de regresión
- Comprueba que los cambios nuevos no rompan lo que ya funcionaba.
- Test de la aplicación
- Etapa 2 de 5: comprueba el funcionamiento del software.
- Test de validación
- Etapa 4 de 5: comprueba que el producto cumple antes de ir a producción.
Entornos
- Staging
- Entorno previo a producción donde se verifica el build validado (ensayo general).
- Entorno de copia
- Réplica donde las pruebas de integración verifican la integridad antes de liberar (Diap. 9).
- Producción
- Entorno final que usan los usuarios.
Herramientas
- GitHub Actions
- CI/CD dentro de GitHub; usa archivos YAML para automatizar todo.
- Jenkins
- Open-source, muy potente y extensible, aunque requiere más configuración. En el ∞: RELEASE.
- Travis CI
- Fácil de usar, muy usado con GitHub; ideal para proyectos open-source.
- YAML
- Formato de texto de configuración que usa GitHub Actions para definir los flujos.
- Confluence · Jira · Git
- Herramientas de la zona CODE (documentar, planificar tareas, versionar).
- sbt · Maven
- Herramientas de BUILD (sbt = Scala Build Tool; Maven para Java).
- Selenium · JUnit
- Herramientas de TEST (navegador y pruebas unitarias).
- Jenkins · Codeship
- Herramientas de RELEASE.
- DC/OS · Docker · AWS
- Tecnologías de DEPLOY (centro de datos, contenedores, nube).
- Chef · Ansible · Kubernetes
- Tecnologías de OPERATE (configuración y orquestación).
- Nagios · Splunk · Datadog
- Tecnologías de MONITOR (alertas, logs, métricas).