SlideShare a Scribd company logo
1 of 20
Download to read offline
La nube, tu
aplicación y tú
Bienvenido
Index
1. ¿Qué es “la nube”?
2. Requisitos para publicar tu aplicación
3. Opciones de despliegue
4. Proceso de CI/CD
5. GitLab CI
6. Ejercicio práctico
.
1.¿Qué es “la nube”?
Servicios disponibles en la nube
Repositorios de código: GitLab, GitHub,
Bitbucket, …
Sistemas CI: GitLab, Travis CI,
CircleCI, …
Registro y gestión DNS: OVH,
Cloudflare, …
Otros: Messaging, monitoring, analitics,
etc.
Repositorio de imágenes Docker:
DockerHub, GitLab, …
Hosting: Serv. Dedicados, VPS,
Máquinas virtuales AWS o similar,
Kubernetes, …
.
2. Requisitos para publicar tu
aplicación
Qué necesitas para publicar tu aplicación
Un repositorio de código (en la nube*)
Un sistema de CI (*)
Un registro de imágenes docker en la
nube
Un servidor donde desplegar
Un dominio
(*) Si se desea automatizar el proceso
.
3. Opciones de despliegue
Opciones de despliegue
Contenedores / Kubernetes
• Servicios de orquestación autogestionados
Amazon Elastic Kubernetes Service
Azure Kubernetes Service
Google Kubernetes Engine, …
Hosting tradicional
• Servidores dedicados: HW físico
• VPS (Virtual Private Server): HW Virtualizado
• Máquinas “cloud”: HW Virtualizado diinámico
Serverless
• AWS Lambdas
• Google (& Firebase) Cloud functions
• Azure Functions, …
.
4. Proceso CI/CD
Building en local con docker
Dockerfile multi-stage
docker build -t h3lp3r-back -t qualityobjects/h3lp3r-
back --rm -f ./Dockerfile.complete .
Subir imagen a DockerHub
docker login -u qualityobjects
docker push qualityobjects/h3lp3r-back
Building con servicio de CI/CD
Proceso CI automático
• Lanzamiento vía evento (git push) o bajo
demanda
• Ejecución en “pipeline” (script con fases)
• Validación estática de código (SonarQube)
• Pruebas unitarias
• Generación de artefactos
• Generación de imágenes (Docker)
• Pruebas e2e (entorno test)
• Despliegue
.
5. GitLab CI
Qué ofrece GitLab
Repositorios de código GIT (públicos y
privados)
Un sistema de CI
Registro de artefactos e imágenes docker
Gestión básica de proyectos
https://gitlab.com/
Definición pipeline (.gitlab-ci.yml)
variables:
JAR_FILE: h3lp3r-back.jar
services:
- docker:dind
stages:
- build
- build_docker
build_job:
stage: build
image: maven:3.6.3-jdk-11
cache:
paths:
- .m2/repository/
script:
- mvn clean package -B -DskipTests=true
- mv target/*.jar ./$JAR_FILE
artifacts:
paths:
- ./$JAR_FILE
expire_in: 1 day
dependencies:
- prepare_job
build_docker_job:
only:
- master
stage: build_docker
image: docker:latest
script:
- docker build --build-arg "JAR_FILE=$JAR_FILE" -
t qualityobjects/h3lp3r-back:$VERSION -
t qualityobjects/h3lp3r-back:latest .
- docker push "$CI_REGISTRY_IMAGE:latest"
- docker push "$CI_REGISTRY_IMAGE:$VERSION"
dependencies:
- prepare_job
- build_job
Fuente: https://gitlab.com/qo-oss/h3lp3r/h3lp3r-back/-/blob/master/.gitlab-ci.yml
Ejecución de pipeline en GitLab
.
6. Ejercicio práctico
Qué vamos a utilizar
GitLab como repositorio GIT y sistema CI
DockerHub como repositorio de imágenes docker
Un servidor VPS básico.
(1 vCPU / 2 Gb RAM / 20GB disco)
Dominio meetup2.qodev.es
Prepararemos imágenes Docker con la
versión de la aplicación a publicar
Ejercicio
Configuraremos el servidor desde cero, para
poder desplegar la aplicación
Modificaremos el código de la aplicación para
ver el proceso de actualización de la
aplicación desplegada
Recursos
Repositorios GIT de la app
https://gitlab.com/qo-oss/h3lp3r
Repositorio Docker con imágenes de la app
https://hub.docker.com/u/qualityobjects
Configuración del servidor
https://gitlab.com/qo-oss/h3lp3r/h3lp3r-back/-
/tree/master/etc/meetup/la_nube_tu_aplicacion_y_tu
Pipelines
https://gitlab.com/qo-oss/h3lp3r/h3lp3r-back/-
/blob/master/.gitlab-ci.yml
https://gitlab.com/qo-oss/h3lp3r/h3lp3r-front/-
/blob/master/.gitlab-ci.yml
Gracias ;)
Roberto Sánchez:
https://www.linkedin.com/in/robertosanchezcustodio
https://www.meetup.com/QOnecta/

More Related Content

What's hot

What's hot (20)

TestingAR VII - Siete Magníficos - Matias Lespiau - Introducción a docker pa...
TestingAR VII - Siete Magníficos - Matias Lespiau - Introducción a docker pa...TestingAR VII - Siete Magníficos - Matias Lespiau - Introducción a docker pa...
TestingAR VII - Siete Magníficos - Matias Lespiau - Introducción a docker pa...
 
El camino de Java a Kubernetes
El camino de Java a KubernetesEl camino de Java a Kubernetes
El camino de Java a Kubernetes
 
Contenedores como Servicio con Docker
Contenedores como Servicio con DockerContenedores como Servicio con Docker
Contenedores como Servicio con Docker
 
Configurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideConfigurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ide
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Experiencia de publicación de un WMTS RESTful para IDENA
Experiencia de publicación de un WMTS RESTful para IDENAExperiencia de publicación de un WMTS RESTful para IDENA
Experiencia de publicación de un WMTS RESTful para IDENA
 
Docker containers-itb-2021
Docker containers-itb-2021Docker containers-itb-2021
Docker containers-itb-2021
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Despliegue de aplicaciones Java con Docker y Kubernetes
Despliegue de aplicaciones Java con Docker y KubernetesDespliegue de aplicaciones Java con Docker y Kubernetes
Despliegue de aplicaciones Java con Docker y Kubernetes
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Introduction to docker. Stratio
Introduction to docker. StratioIntroduction to docker. Stratio
Introduction to docker. Stratio
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Kubernetes: Caso de uso real con mememtum y Taniwa
Kubernetes: Caso de uso real con mememtum y TaniwaKubernetes: Caso de uso real con mememtum y Taniwa
Kubernetes: Caso de uso real con mememtum y Taniwa
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-docker
 
Iniciando con containers en azure
Iniciando con containers en azureIniciando con containers en azure
Iniciando con containers en azure
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
Presentacion OpenShift by RedHat
Presentacion OpenShift by RedHatPresentacion OpenShift by RedHat
Presentacion OpenShift by RedHat
 
Net Core + Docker + Kubernetes + Azure Devops
Net Core + Docker + Kubernetes + Azure DevopsNet Core + Docker + Kubernetes + Azure Devops
Net Core + Docker + Kubernetes + Azure Devops
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y Github
 

Similar to La nube, tu app y tu

Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
Jaime Perera Merino
 
Forjas de Software: qué son y para que sirven
Forjas de Software: qué son y para que sirvenForjas de Software: qué son y para que sirven
Forjas de Software: qué son y para que sirven
Iñaki Arenaza
 

Similar to La nube, tu app y tu (20)

Elias Grande - Dagda [rootedvlc4]
Elias Grande - Dagda [rootedvlc4]Elias Grande - Dagda [rootedvlc4]
Elias Grande - Dagda [rootedvlc4]
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Docker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup MayoDocker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup Mayo
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
 
ATICA DevOps
ATICA DevOpsATICA DevOps
ATICA DevOps
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
Empaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y KubernetesEmpaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y Kubernetes
 
Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)
Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)
Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)
 
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos BásicosDesarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - Engine
 
Forjas de Software: qué son y para que sirven
Forjas de Software: qué son y para que sirvenForjas de Software: qué son y para que sirven
Forjas de Software: qué son y para que sirven
 
DockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdfDockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdf
 
Propuesta devops pasesv1
Propuesta devops pasesv1Propuesta devops pasesv1
Propuesta devops pasesv1
 
Dynamics saturday madrid 2018 bc-on-docker - jakub
Dynamics saturday madrid 2018   bc-on-docker - jakubDynamics saturday madrid 2018   bc-on-docker - jakub
Dynamics saturday madrid 2018 bc-on-docker - jakub
 
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 

Recently uploaded

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Recently uploaded (11)

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 

La nube, tu app y tu

  • 2. Bienvenido Index 1. ¿Qué es “la nube”? 2. Requisitos para publicar tu aplicación 3. Opciones de despliegue 4. Proceso de CI/CD 5. GitLab CI 6. Ejercicio práctico
  • 4. Servicios disponibles en la nube Repositorios de código: GitLab, GitHub, Bitbucket, … Sistemas CI: GitLab, Travis CI, CircleCI, … Registro y gestión DNS: OVH, Cloudflare, … Otros: Messaging, monitoring, analitics, etc. Repositorio de imágenes Docker: DockerHub, GitLab, … Hosting: Serv. Dedicados, VPS, Máquinas virtuales AWS o similar, Kubernetes, …
  • 5. . 2. Requisitos para publicar tu aplicación
  • 6. Qué necesitas para publicar tu aplicación Un repositorio de código (en la nube*) Un sistema de CI (*) Un registro de imágenes docker en la nube Un servidor donde desplegar Un dominio (*) Si se desea automatizar el proceso
  • 7. . 3. Opciones de despliegue
  • 8. Opciones de despliegue Contenedores / Kubernetes • Servicios de orquestación autogestionados Amazon Elastic Kubernetes Service Azure Kubernetes Service Google Kubernetes Engine, … Hosting tradicional • Servidores dedicados: HW físico • VPS (Virtual Private Server): HW Virtualizado • Máquinas “cloud”: HW Virtualizado diinámico Serverless • AWS Lambdas • Google (& Firebase) Cloud functions • Azure Functions, …
  • 10. Building en local con docker Dockerfile multi-stage docker build -t h3lp3r-back -t qualityobjects/h3lp3r- back --rm -f ./Dockerfile.complete . Subir imagen a DockerHub docker login -u qualityobjects docker push qualityobjects/h3lp3r-back
  • 11. Building con servicio de CI/CD Proceso CI automático • Lanzamiento vía evento (git push) o bajo demanda • Ejecución en “pipeline” (script con fases) • Validación estática de código (SonarQube) • Pruebas unitarias • Generación de artefactos • Generación de imágenes (Docker) • Pruebas e2e (entorno test) • Despliegue
  • 13. Qué ofrece GitLab Repositorios de código GIT (públicos y privados) Un sistema de CI Registro de artefactos e imágenes docker Gestión básica de proyectos https://gitlab.com/
  • 14. Definición pipeline (.gitlab-ci.yml) variables: JAR_FILE: h3lp3r-back.jar services: - docker:dind stages: - build - build_docker build_job: stage: build image: maven:3.6.3-jdk-11 cache: paths: - .m2/repository/ script: - mvn clean package -B -DskipTests=true - mv target/*.jar ./$JAR_FILE artifacts: paths: - ./$JAR_FILE expire_in: 1 day dependencies: - prepare_job build_docker_job: only: - master stage: build_docker image: docker:latest script: - docker build --build-arg "JAR_FILE=$JAR_FILE" - t qualityobjects/h3lp3r-back:$VERSION - t qualityobjects/h3lp3r-back:latest . - docker push "$CI_REGISTRY_IMAGE:latest" - docker push "$CI_REGISTRY_IMAGE:$VERSION" dependencies: - prepare_job - build_job Fuente: https://gitlab.com/qo-oss/h3lp3r/h3lp3r-back/-/blob/master/.gitlab-ci.yml
  • 17. Qué vamos a utilizar GitLab como repositorio GIT y sistema CI DockerHub como repositorio de imágenes docker Un servidor VPS básico. (1 vCPU / 2 Gb RAM / 20GB disco) Dominio meetup2.qodev.es
  • 18. Prepararemos imágenes Docker con la versión de la aplicación a publicar Ejercicio Configuraremos el servidor desde cero, para poder desplegar la aplicación Modificaremos el código de la aplicación para ver el proceso de actualización de la aplicación desplegada
  • 19. Recursos Repositorios GIT de la app https://gitlab.com/qo-oss/h3lp3r Repositorio Docker con imágenes de la app https://hub.docker.com/u/qualityobjects Configuración del servidor https://gitlab.com/qo-oss/h3lp3r/h3lp3r-back/- /tree/master/etc/meetup/la_nube_tu_aplicacion_y_tu Pipelines https://gitlab.com/qo-oss/h3lp3r/h3lp3r-back/- /blob/master/.gitlab-ci.yml https://gitlab.com/qo-oss/h3lp3r/h3lp3r-front/- /blob/master/.gitlab-ci.yml