Atica
Construcción y despliegue de aplicaciones en el siglo XXI
Juan José Meroño Sánchez
Noviembre 2018 (un año después)
Contexto
● Cómo se desarrolla y se despliegan aplicaciones hoy.
○ Control de versiones con SVN.
○ Marco de desarrollo homogéneo (FundeWeb)
○ Integración contínua con Jenkins.
○ Despliegue con Jenkins apoyado en pulling SVN y scripts de sistemas.
Subversion Subversion
Rama Codigo Fuente Rama Servidores
Jenkins
CI
Desa/Test/Prod
restart, update,...
Build, tests, deploy...
Alternativa para mejorar
● Incorporar el concepto de pipeline
● Emplear Git/Gitlab para introducir code-review.
● Reemplazar Jenkins con Gitlab-CI (all-in-one)
● Desplegar empleando contenedores Docker
https://videoconferencia.um.es/p16593363/
Pipeline
Prueba de Concepto
Build/Test Image Trigger
Registry
Docker
Swarm
Listener
Service Update
Push
Push
Pull
GitLab
On-Cloud
Private Cloud
docker-compose.ymlDockerfile
.gitlab-ci.yml
Próximamente
● Montar un piloto real.... con Aula Virtual.
○ Gestionando el Open Source de Sakai nuestro equipo:
■ Maneja git/github desde hace tiempo (muy similar a gitlab).
■ Utiliza docker a nivel básico en local para montar mysql.
● Validar con el piloto si realmente mejoramos
○ Montar migración de Aula Virtual a Sakai 12 con gitlab.
○ El pipeline desplegará de forma “tradicional” y en forma de imagen.
○ Montar mini-cloud para desplegar un entorno de test con tecnología docker.
● Qué usaremos
○ Un Gitlab CE 10.1 completo con registro de imágenes e integración contínua
para docker, instalado en nuestra infraestructura interna.
○ Un mini-swarm con portainer para desplegar uno o varios entornos de test.
¡Hasta llegar a producción aún nos falta mucho!
Un año después...
Próximamente
Subversion Subversion
Rama Codigo Fuente Rama Servidores
Jenkins
CI
Desa/Test/Prod
restart, update,...
Build, tests, deploy...
GitLab
On-Premise
Test Private Cloud
P2P
Aula Virtual: documentación
Aula Virtual: edición online
Aula Virtual: code-review
Aula Virtual: sonarqube
Aula Virtual: sonarqube
Aula Virtual: trazabilidad y rollback
Aula Virtual: estadísticas
Aula Virtual: pipeline
Compila el
código Paso los
tests y llama
a sonarqube
Crea el
artefacto
desplegable Commit en la
rama SVN
web_desa
Resultado de
sonarqube
Cada rama puede ejecutar una versión diferente del pipeline:
- Desplegar en web_test en lugar de web_desa.
- No ejecutar los tests.
- No desplegar
Aula Virtual: pipeline
● Stage vs Job
○ En un stage se pueden ejecutar muchos jobs en paralelo.
○ Cada job se ejecuta en un contenedor docker dentro de un runner.
○ Por defecto nada persiste entre un job y el siguiente.
○ ¿Cómo consigo que los compilados en el job “compile_test” se desplieguen en
el job “deploy_test”?
Aula Virtual: pipeline
Aula Virtual: pipeline
● Ecosistema compartido.
● Es importante entender cómo funciona.
● Runners compartidos con espacio limitado
○ No abuses de la caché.
○ Evita imágenes voluminosas.
○ No abuses de los artefactos.
● Imágenes docker
○ Sigue las buenas prácticas de docker.
○ Usa imágenes oficiales.
○ No uses versiones latest.
● Control de releases semanales.
● Hay una visión muy clara del estado de cada tarea.
● Nos ayudará a hacer más visible el trabajo que hacemos.
Aula Virtual: Kanban
Siguientes pasos
(a.k.a. lo que contaré en Nov’19)
Siguientes pasos
● Recopilar feedback del equipo.
● Cambiar estrategia polling por trigger en servidores.
● Correlación de logs con lagar (o sin lagar).
● Monitorización con prometheus.
● Despliegue usando contenedores en pruebas.
Dentro de un año...
● Correlación de logs con lagar o sin lagar.
● Monitorización con prometheus.
● Despliegue usando contenedores en pruebas.
?

Atica Dev Ops II

  • 1.
    Atica Construcción y desplieguede aplicaciones en el siglo XXI Juan José Meroño Sánchez Noviembre 2018 (un año después)
  • 2.
    Contexto ● Cómo sedesarrolla y se despliegan aplicaciones hoy. ○ Control de versiones con SVN. ○ Marco de desarrollo homogéneo (FundeWeb) ○ Integración contínua con Jenkins. ○ Despliegue con Jenkins apoyado en pulling SVN y scripts de sistemas. Subversion Subversion Rama Codigo Fuente Rama Servidores Jenkins CI Desa/Test/Prod restart, update,... Build, tests, deploy...
  • 3.
    Alternativa para mejorar ●Incorporar el concepto de pipeline ● Emplear Git/Gitlab para introducir code-review. ● Reemplazar Jenkins con Gitlab-CI (all-in-one) ● Desplegar empleando contenedores Docker https://videoconferencia.um.es/p16593363/
  • 4.
    Pipeline Prueba de Concepto Build/TestImage Trigger Registry Docker Swarm Listener Service Update Push Push Pull GitLab On-Cloud Private Cloud docker-compose.ymlDockerfile .gitlab-ci.yml
  • 5.
    Próximamente ● Montar unpiloto real.... con Aula Virtual. ○ Gestionando el Open Source de Sakai nuestro equipo: ■ Maneja git/github desde hace tiempo (muy similar a gitlab). ■ Utiliza docker a nivel básico en local para montar mysql. ● Validar con el piloto si realmente mejoramos ○ Montar migración de Aula Virtual a Sakai 12 con gitlab. ○ El pipeline desplegará de forma “tradicional” y en forma de imagen. ○ Montar mini-cloud para desplegar un entorno de test con tecnología docker. ● Qué usaremos ○ Un Gitlab CE 10.1 completo con registro de imágenes e integración contínua para docker, instalado en nuestra infraestructura interna. ○ Un mini-swarm con portainer para desplegar uno o varios entornos de test. ¡Hasta llegar a producción aún nos falta mucho!
  • 6.
  • 7.
    Próximamente Subversion Subversion Rama CodigoFuente Rama Servidores Jenkins CI Desa/Test/Prod restart, update,... Build, tests, deploy... GitLab On-Premise Test Private Cloud P2P
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
    Aula Virtual: pipeline Compilael código Paso los tests y llama a sonarqube Crea el artefacto desplegable Commit en la rama SVN web_desa Resultado de sonarqube Cada rama puede ejecutar una versión diferente del pipeline: - Desplegar en web_test en lugar de web_desa. - No ejecutar los tests. - No desplegar
  • 16.
    Aula Virtual: pipeline ●Stage vs Job ○ En un stage se pueden ejecutar muchos jobs en paralelo. ○ Cada job se ejecuta en un contenedor docker dentro de un runner. ○ Por defecto nada persiste entre un job y el siguiente. ○ ¿Cómo consigo que los compilados en el job “compile_test” se desplieguen en el job “deploy_test”?
  • 17.
  • 18.
    Aula Virtual: pipeline ●Ecosistema compartido. ● Es importante entender cómo funciona. ● Runners compartidos con espacio limitado ○ No abuses de la caché. ○ Evita imágenes voluminosas. ○ No abuses de los artefactos. ● Imágenes docker ○ Sigue las buenas prácticas de docker. ○ Usa imágenes oficiales. ○ No uses versiones latest.
  • 19.
    ● Control dereleases semanales. ● Hay una visión muy clara del estado de cada tarea. ● Nos ayudará a hacer más visible el trabajo que hacemos. Aula Virtual: Kanban
  • 20.
    Siguientes pasos (a.k.a. loque contaré en Nov’19)
  • 21.
    Siguientes pasos ● Recopilarfeedback del equipo. ● Cambiar estrategia polling por trigger en servidores. ● Correlación de logs con lagar (o sin lagar). ● Monitorización con prometheus. ● Despliegue usando contenedores en pruebas. Dentro de un año... ● Correlación de logs con lagar o sin lagar. ● Monitorización con prometheus. ● Despliegue usando contenedores en pruebas.
  • 22.