¿Te imaginas que Netflix tuviera que desplegar todos sus aplicaciones usando FTP? ¿Cuanto tiempo pasaría sus ingenieros haciendo este proceso? ¿Qué riesgo habría? ¿Cuánto tardarían en entregar valor a sus clientes?
Las metodologías continuas en el desarrollo de software están basadas en automatizar la ejecución de un conjunto de scripts para minimizar la introducción de errores, y desplegar código nuevo lo antes posible con la mínima interacción humana. ¿Cómo se aplica esto al desarrollo de software?
¿Qué vamos a ver en esta charla?:
En la primera parte usamos un proyecto de ejemplo para hacer una introducción la metodologías continuas de CI/CD usando Gitlab CI/CD.
Se presentarán los flujos básicos, las ventajas de adoptar estas metodologías: automatización en el proceso de integración de cambios con test, despliegue automático en diferentes entornos y la potencia del despliegue por configuración.
¿Cómo integrarlo en el día a día del desarrollo? También lo veremos. Todo esto con un ejemplo real y veremos la potencia de estos flujos a golpe de commit. En el ejemplo anterior, desplegábamos en un servidor, pero ¿y si no hay servidor?.
La segunda parte introduciremos otra visión de CI/CD desde la filosofía serverless. Usaremos Now (https://zeit.co) con su integración en Gitlab. Nuestras páginas se convierten en funciones lambda, no necesitamos otro proveedor de CI, el despliegue se ejecuta sin esperas y nuestras funciones escalan automáticamente.
6. CÓDIGO ABIERTO
GitLab puede ser
instalado como servicio
en tus propios servidores.
INTEGRACIÓN
Integrado por defecto
en todos los repositorios
de GitLab.
GitLab CI
GRATUITO
Capa gratuita de 2.000
minutos en runners
compartidos.
Posibilidad de runners
propios.
MULTILENGUAJE
Ejecuta scripts en
múltiples lenguajes
gracias a su capa de
ejecución de jobs de
Docker.
7. Definiciones Básicas
Elemento
fundamental CI/CD.
Script que ejecuta la
integración.
Exit 0 = Success
Job
Agrupación de jobs.
Jobs del mismo stage
se ejecutarán en
paralelo.
No pasa al siguiente
stage si falla alguno.
Stage
Ejecución de todos los
jobs en cada commit.
Si falla alguno de los
jobs, falla la pipeline.
Advertencia al tratar
de mergear pipelines
fallidas.
Pipeline
8. PATH
Colocado por defecto en la raíz del proyecto
ejecutará automáticamente todos los jobs
indicados con cada commit.
PRE/POST SCRIPTS
Posibilidad de ejecutar acciones previas y
posteriores a cada job (preparación e instalación
de dependencias y acciones posteriores).
RESTRICCIONES
Es posible marcar ciertos jobs para la ejecución
únicamente en ciertas ramas/tags. También el
forzado de ejecución manual de ciertos jobs.
.gitlab-ci.yml
10. Backend Engineer en ParkNow
César Izquierdo
Lead Development en GOI
Marco Bellido
@marcoocram
https://www.linkedin.com/in/marcobellido
@cesiztel
https://www.linkedin.com/in/cesarizquierdotello
13. edge Arquitectura tradicional
Quiero comprar
merchandising de
superhéroes
Arquitectura serverless
Autenticación en Auth0
Api Gateway
productos en Firebase
Función de
compra
Función de
búsqueda
1
2
3
4
5