Creasoft.dev 2021
Breve introducción práctica al DevOps
Desarrollando rápidamente y robustamente
Young-Suk Ahn Park / MSEng.
Marzo 2021
Creasoft.dev 2021
Young Suk Ahn Park / MSEng
Arquitecto de software.
Con Maestría en ingeniería de software en
Carnegie Mellon University.
Preocupado por la crisis ambiental, actualmente
está aprendiendo sobre sostenibilidad.
2
https://youngsukahn.com
https://creasoft.dev
https://empoderemosmas.com
Creasoft.dev 2021
A cerca del documento
Propósito
Introducción al DevOps con ejemplos
concretos de prácticas y herramientas.
Audiencia
Desarrolladores y líderes técnicos
trabajando en proyectos de desarrollo
de software
Contenido
1. Contexto
2. DevOps y su importancia
3. Proceso y Herramientas
a. Docker y contenedores
b. Kubernetes
c. Helm
d. Prueba funcional
e. Integracion Continua, Despliegue
continuo (CD/CI)
f. Detección de vulnerabilidad
4. Seguridad
3
Creasoft.dev 2021
Desarrollo de software hoy día
¡Constante mejora de servicio sin comprometer calidad!
4
Creasoft.dev 2021
Desarrollo en el pasado...
Ágil sin devops
Antes de ágil
5
Creasoft.dev 2021
Ágil + DevOps
6
Creasoft.dev 2021
Importancia del DevOps
CÓDIGO PRODUCCIÓN USUARIOS
CICLO EN CUESTIÓN DE MESES - MIENTRAS LA COMPETENCIA SE ADELANTA
Pruebas
Unitarias
Proceso
manual de
release
Etiquetado
de la
versión
Verifica
Seguridad
Rollback
manual
Compila-
ción
Pruebas
de
integración
Pruebas
carga
.. manual ...
IDEA
RETROALIMENTACIÓN
7
Creasoft.dev 2021
Aceleración con DevOps
CÓDIGO PRODUCCIÓN USUARIOS
CICLO EN CUESTIÓN DE DÍAS, HASTA HORAS - VALOR LLEGA AL CLIENTE MÁS
RÁPIDO
Compila-
ción
Pruebas
Unitarias
Etiquetado
de
la
versión
Verifica
seguridad
Pruebas
de
carga
IDEA
RETROALIMENTACIÓN
8
Creasoft.dev 2021
AQUEL QUE PUEDE ITERAR MÁS RÁPIDAMENTE
ES EL QUE LIDERA EN EL MERCADO
9
Creasoft.dev 2021
¿Que es DevOps?
Seguri-
dad
10
Creasoft.dev 2021
CALMS Framework
● Cultura - DevOps es un cambio de mentalidad en donde el
equipo trabaja en consona para mantener el producto.
● Automatización - Ciclo de desarrollo más rápido con
mínima intervención humana
● Ligero (Lean) - Eliminación de actividades de poco valor
● Mensurado - Métricas para ayudar al equipo a enfocar
● Compartido (Sharing) - Los conocimientos y cargas de
desarrolladores y operadores se comparten
11
Creasoft.dev 2021
Prácticas de DevOps
1. Desarrollo continuo
2. Automatización de integración y despliegue
3. Retroalimentación continua basados en monitoreo y
métricas
4. Análisis de raíz de la causa
5. Todo bajo control de versión - hasta la infraestructura
Todo trabajo mecánico repetitivo se automatiza y entra en
un ciclo virtuoso de rápido despliegue y validación del
software. El desarrollo y operación se maneja por el mismo
equipo
12
Creasoft.dev 2021
El proceso y las herramientas
PLANEA CODIFICA CONSTRUYE PRUEBA LANZA DESPLIEGA OPERA MONITOREA
Colabo-
ración
ChatOps Calidad de
código
IDE
Empaqueta
miento
Vulnera-
bilidad
Prueba
funcional
Prueba
Unitaria
Nube
bóveda
Roles
Autentic
Logs
Monitoreo
VCS Contenedor Artefactos CI/CD Orquestrador
Admin API
Provisión
Prueba Perf
& Caos
13
Creasoft.dev 2021
Ejemplos concretos
PLANEA CODIFICA CONSTRUYE PRUEBA LANZA DESPLIEGA OPERA MONITOREA
Colabo-
ración
ChatOps
IDE
Empaqueta
miento
Vulnera-
bilidad
Prueba
funcional
Prueba
Unitaria
Nube
bóveda
Roles
Autentica-
cion
Logs
Monitoreo
Git host Docker Artefactos CI/CD Kubernetes
k3s
Admin API
Provisión
(Terraform)
Prueba Perf
Calidad de
código
14
Creasoft.dev 2021
Docker - La plataforma de contenedores
¿Qué problemas resuelve?
● El paquete (imagen) generado include todo el entorno
completo. No más ¿Por que no funciona si funcionó en mi
máquina?
Facilita el empaquetamiento portable de software, los llamados
contenedores.
# Ejemplo: ejecuta el servicio nginx escuchando puerto 8080
$ docker run --rm --name mi-nginx -p 8080:80 nginx
# Ejemplo: ejecuta el servicio nginx escuchando puerto 8080
$ docker build -t miapp:latest -f docker/Dockerfile .
$ docker run miapp 15
Creasoft.dev 2021
Docker - Arquitectura
Fuente: https://docs.docker.com/get-started/overview/
16
Creasoft.dev 2021
Dockerfile
FROM node:12.13-alpine AS build
WORKDIR /usr/src/app
COPY package*.json yarn.lock ./
RUN yarn --frozen-lockfile
COPY . .
RUN yarn build
## Building the prod-only dependencies
FROM node:12.13-alpine AS deps
WORKDIR /usr/src/app
COPY package*.json yarn.lock ./
RUN yarn install --production
## Packaging the prod application
FROM node:12.13-alpine AS packaging
WORKDIR /usr/src/app
COPY --from=deps /usr/src/app/node_modules ./node_modules
COPY --from=build /usr/src/app/dist ./dist
COPY wait-for.sh ./
EXPOSE 3000
USER node
CMD ["node", "dist/main"]
FROM: Imagen base
COPY: Copia los archivos
para trabajar en ellos
RUN: Ejecuta comando, ej.
Compilar los codigos fuentes
FROM: Nuevo stage: ayuda a
reducir el tamaño de la imagen
CMD: ejecuta el comando al
correr la imagen. 17
Creasoft.dev 2021
docker-compose.yml
version: '3.7'
services:
mi-backend:
image: ${IMAGE_TAG}
ports:
- ${SERVER_PORT}:${SERVER_PORT}
command: sh -c "./wait-for.sh kno-db:5432 -- npx db-migrate.sh && node
dist/main"
env_file:
- ../.env.docker
depends_on:
- kno-db
mi-db:
image: postgres:12
container_name: postgres
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
PG_DATA: /var/lib/postgresql/data
ports:
- 5432:5432
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
services: lista de servicios
a correr
image: la imagen del docker a
correr
command: comando a ejecutar
depends_on: servicio a que
depende.
port: mapeo del puerto
[host]:[contenedor]
18
Creasoft.dev 2021
Kubernetes - El orquestrador de contenedores
¿Qué problemas resuelve?
● Mantiene el estado del servicio configurado de manera
declarativa
● Se encarga de los fallos automáticamente.
Automatiza el despliegue y escalamiento horizontal de las
aplicaciones.
# Ejemplo: Instala objetos (deployments) e incrementa replicas
$ kubectl apply -f k8-config.yaml
$ kubectl scale --replicas=3 -f k8-config.yaml
19
Creasoft.dev 2021
Kubernetes - Arquitectura
El despliegue en un cluster de Kubernetes Servicios expuestos a la red
Fuente: https://kubernetes.io/docs/tutorials/kubernetes-basics
20
Creasoft.dev 2021
Kubernetes - Ejemplo: k8-config.yaml
# Source: knoesia-backend/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: knoesia-backend
labels:
app.kubernetes.io/name: knoesia-backend
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: knoesia-backend
template:
metadata:
labels:
app.kubernetes.io/name: knoesia-backend
spec:
containers:
- name: knoesia-backend
image: "registry.gitlab.com/betternia/incubation/knoesia/knoesia-
backend:latest"
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /info
kind: tipo de objeto
replicas: cantidad procesos
corriendo
matchLabels: selector del
pods a mantener la
especificación
template: plantilla del pod
image: la imagen de docker a
instanciar
livenessProbe: ruta para
probar si el servisio esta vivo
21
Creasoft.dev 2021
Helm - El orquestrador de contenedores
¿Qué problemas resuelve?
● Simplifica la definición de las aplicaciones con
configuraciones complejas
● Maneja las instalaciones de las aplicaciones en k8s.
Administrador de paquetes para kubernetes. Incluye utilidades,
motor de plantilla para declaraciones y registro de paquetes.
# Ejemplo: Instala postgres, luego hace un upgrade (ej. Incr. replica)
$ helm install mi-postgres bitnami/postgresql
$ helm upgrade mi-postgres bitnami/postgresql
22
Creasoft.dev 2021
Playwright - Automatizador de browser
¿Qué problemas resuelve?
● Puede ejecutar pruebas funcionales en diferentes tipos de
browser y grabar errores.
● Aumenta la cobertura de las pruebas.
Automatiza la ejecución del browser usando Nodejs.
# Ejemplo: Ejecuta las pruebas
$ npx folio --param screenshotOnFailure browserName=chromium
23
Creasoft.dev 2021
miprueba.test.ts
import './env';
import { Page } from "playwright";
import { describe, it, expect } from "@playwright/test";
describe("Mi prueba funcional", () => {
it("Login", async ({ page }) => {
await page.goto("http://localhost:8100/");
const loginBtn = await page.waitForSelector('ion-button[data-qa="login-
btn"]');
await loginBtn.click();
const usernameInput = await
page.waitForSelector('input[name="username"]');
await usernameInput.type(process.env.USER_ID);
const passwordInput = await
page.waitForSelector('input[name="password"]');
await passwordInput.type(process.env.USER_PWD);
await passwordInput.press('Enter');
const name = await page.innerText("ion-title");
expect(name).toBe("Daily");
});
Incluir las librerías
Navega hacia una página
Selecciona un objeto DOM
Hace click al objeto (boton en
este caso)
Verifica el resultado: la prueba
en si
24
Creasoft.dev 2021
CI/CD - Integración y Entrega Continua
¿Qué problemas resuelve?
● Minimiza la necesidad de intervención humana para
empaquetamiento, ejecución de pruebas y despliegue
● Reduce el ciclo de lanzamiento
Opciones
● GitHub Actions, GitLab-CI
● Bamboo, CircleCI, Jenkins, TravisCI, TeamCity, GoCD
Ejecuta tareas (ej. scripts) para automatizar el proceso desde
compilación hasta despliegue de la aplicación.
25
Creasoft.dev 2021
GitLab CI
test:e2e:
stage: test
image: docker/compose:latest
variables:
DOCKER_DRIVER: overlay
services:
- docker:dind
script:
- cd miapp-backend
- docker-compose --env-file .env.test -f docker-compose.test.yml up -d --build
- docker-compose -f docker-compose.test.yml --env-file .env.test run miapp-backend
yarn test -runInBand
- docker-compose -f docker-compose.test.yml --env-file .env.test down
docker:build:
stage: build
image: docker
variables:
DOCKER_DRIVER: overlay
services:
- docker:dind
before_script:
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} $CI_REGISTRY
script:
- cd knoesia-backend
- docker build -t ${CI_REGISTRY}/miapp-backend:${CI_COMMIT_SHORT_SHA} -f
docker/Dockerfile .
- docker push ${CI_REGISTRY}/miapp-backend:${CI_COMMIT_SHORT_SHA}
El script se ejecuta al realizar un
merge a la rama primaria (master)
26
Creasoft.dev 2021
Snyk - Detección de vulnerabilidades
SImplemente registre su repositorio con la clave en
el sitio de Snyk, y el servicio analizará su código.
27
Creasoft.dev 2021
Referencias
● Google, Accelerate State of DevOps 2019
● Google SRE Book
● Accelerate: The Science of Lean Software and DevOps: Building and
Scaling High Performing Technology Organizations
● Neil Ford, Continuous Delivery Workshop, Slide deck 1, deck 2, deck 3, video
● Agile Alliance, Continuous Delivery deck,
● Eliyahu M. Goldratt, The Goal: A Process of Ongoing Improvement
Enlace util:
● https://free-for.dev
28
Creasoft.dev 2021
Colaboracion
● GitHub, GitLab, Jira, PivotalTracker
Codificación
● VSCode, IntelliJ
Calidad de codito
● SonarQube, LGTM, DeepCode, DeepSource
Admin de API
● Swagger, Apigee, Apiary
Manejo de dependencias y paquetes
● Maven, Gradle, yarn, crate, Helm
Detección de Vulnerabilidad
● Snyk
Herramientas
Pruebas
● Unitarias: Cucumber, JUnit, Jest, TL
● Funcional: Playwright, Cypress, Selenium
● Perf: Gatling, k6, JMeter
Repositorio de Artefactos
● DockerHub, Quay, GitHub, GitLab
Provision, IaaC
● Terraform, Ansible, Chef
CICD
● GitHub Actions, GitLab-CI
● Bamboo, CircleCI, Jenkins, TravisCI, GoCD
Monitoreo
● New Relic, DataDog, AppDynamics, ELK,
29
Creasoft.dev 2021
“You build it, you run it”
- Werner Vogels, Amazon CTO
La cultura ágil y colaborativa es el alma de Devops.
El equipo comparte la responsabilidad del desarrollo,
operación y evolución del sistema.
30
Creasoft.dev 2021
http://creasoft.dev/es/
info@creasoft.dev
31

Breve introducción práctica al DevOps - (es) 2021_03_18

  • 1.
    Creasoft.dev 2021 Breve introducciónpráctica al DevOps Desarrollando rápidamente y robustamente Young-Suk Ahn Park / MSEng. Marzo 2021
  • 2.
    Creasoft.dev 2021 Young SukAhn Park / MSEng Arquitecto de software. Con Maestría en ingeniería de software en Carnegie Mellon University. Preocupado por la crisis ambiental, actualmente está aprendiendo sobre sostenibilidad. 2 https://youngsukahn.com https://creasoft.dev https://empoderemosmas.com
  • 3.
    Creasoft.dev 2021 A cercadel documento Propósito Introducción al DevOps con ejemplos concretos de prácticas y herramientas. Audiencia Desarrolladores y líderes técnicos trabajando en proyectos de desarrollo de software Contenido 1. Contexto 2. DevOps y su importancia 3. Proceso y Herramientas a. Docker y contenedores b. Kubernetes c. Helm d. Prueba funcional e. Integracion Continua, Despliegue continuo (CD/CI) f. Detección de vulnerabilidad 4. Seguridad 3
  • 4.
    Creasoft.dev 2021 Desarrollo desoftware hoy día ¡Constante mejora de servicio sin comprometer calidad! 4
  • 5.
    Creasoft.dev 2021 Desarrollo enel pasado... Ágil sin devops Antes de ágil 5
  • 6.
  • 7.
    Creasoft.dev 2021 Importancia delDevOps CÓDIGO PRODUCCIÓN USUARIOS CICLO EN CUESTIÓN DE MESES - MIENTRAS LA COMPETENCIA SE ADELANTA Pruebas Unitarias Proceso manual de release Etiquetado de la versión Verifica Seguridad Rollback manual Compila- ción Pruebas de integración Pruebas carga .. manual ... IDEA RETROALIMENTACIÓN 7
  • 8.
    Creasoft.dev 2021 Aceleración conDevOps CÓDIGO PRODUCCIÓN USUARIOS CICLO EN CUESTIÓN DE DÍAS, HASTA HORAS - VALOR LLEGA AL CLIENTE MÁS RÁPIDO Compila- ción Pruebas Unitarias Etiquetado de la versión Verifica seguridad Pruebas de carga IDEA RETROALIMENTACIÓN 8
  • 9.
    Creasoft.dev 2021 AQUEL QUEPUEDE ITERAR MÁS RÁPIDAMENTE ES EL QUE LIDERA EN EL MERCADO 9
  • 10.
    Creasoft.dev 2021 ¿Que esDevOps? Seguri- dad 10
  • 11.
    Creasoft.dev 2021 CALMS Framework ●Cultura - DevOps es un cambio de mentalidad en donde el equipo trabaja en consona para mantener el producto. ● Automatización - Ciclo de desarrollo más rápido con mínima intervención humana ● Ligero (Lean) - Eliminación de actividades de poco valor ● Mensurado - Métricas para ayudar al equipo a enfocar ● Compartido (Sharing) - Los conocimientos y cargas de desarrolladores y operadores se comparten 11
  • 12.
    Creasoft.dev 2021 Prácticas deDevOps 1. Desarrollo continuo 2. Automatización de integración y despliegue 3. Retroalimentación continua basados en monitoreo y métricas 4. Análisis de raíz de la causa 5. Todo bajo control de versión - hasta la infraestructura Todo trabajo mecánico repetitivo se automatiza y entra en un ciclo virtuoso de rápido despliegue y validación del software. El desarrollo y operación se maneja por el mismo equipo 12
  • 13.
    Creasoft.dev 2021 El procesoy las herramientas PLANEA CODIFICA CONSTRUYE PRUEBA LANZA DESPLIEGA OPERA MONITOREA Colabo- ración ChatOps Calidad de código IDE Empaqueta miento Vulnera- bilidad Prueba funcional Prueba Unitaria Nube bóveda Roles Autentic Logs Monitoreo VCS Contenedor Artefactos CI/CD Orquestrador Admin API Provisión Prueba Perf & Caos 13
  • 14.
    Creasoft.dev 2021 Ejemplos concretos PLANEACODIFICA CONSTRUYE PRUEBA LANZA DESPLIEGA OPERA MONITOREA Colabo- ración ChatOps IDE Empaqueta miento Vulnera- bilidad Prueba funcional Prueba Unitaria Nube bóveda Roles Autentica- cion Logs Monitoreo Git host Docker Artefactos CI/CD Kubernetes k3s Admin API Provisión (Terraform) Prueba Perf Calidad de código 14
  • 15.
    Creasoft.dev 2021 Docker -La plataforma de contenedores ¿Qué problemas resuelve? ● El paquete (imagen) generado include todo el entorno completo. No más ¿Por que no funciona si funcionó en mi máquina? Facilita el empaquetamiento portable de software, los llamados contenedores. # Ejemplo: ejecuta el servicio nginx escuchando puerto 8080 $ docker run --rm --name mi-nginx -p 8080:80 nginx # Ejemplo: ejecuta el servicio nginx escuchando puerto 8080 $ docker build -t miapp:latest -f docker/Dockerfile . $ docker run miapp 15
  • 16.
    Creasoft.dev 2021 Docker -Arquitectura Fuente: https://docs.docker.com/get-started/overview/ 16
  • 17.
    Creasoft.dev 2021 Dockerfile FROM node:12.13-alpineAS build WORKDIR /usr/src/app COPY package*.json yarn.lock ./ RUN yarn --frozen-lockfile COPY . . RUN yarn build ## Building the prod-only dependencies FROM node:12.13-alpine AS deps WORKDIR /usr/src/app COPY package*.json yarn.lock ./ RUN yarn install --production ## Packaging the prod application FROM node:12.13-alpine AS packaging WORKDIR /usr/src/app COPY --from=deps /usr/src/app/node_modules ./node_modules COPY --from=build /usr/src/app/dist ./dist COPY wait-for.sh ./ EXPOSE 3000 USER node CMD ["node", "dist/main"] FROM: Imagen base COPY: Copia los archivos para trabajar en ellos RUN: Ejecuta comando, ej. Compilar los codigos fuentes FROM: Nuevo stage: ayuda a reducir el tamaño de la imagen CMD: ejecuta el comando al correr la imagen. 17
  • 18.
    Creasoft.dev 2021 docker-compose.yml version: '3.7' services: mi-backend: image:${IMAGE_TAG} ports: - ${SERVER_PORT}:${SERVER_PORT} command: sh -c "./wait-for.sh kno-db:5432 -- npx db-migrate.sh && node dist/main" env_file: - ../.env.docker depends_on: - kno-db mi-db: image: postgres:12 container_name: postgres environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} PG_DATA: /var/lib/postgresql/data ports: - 5432:5432 volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata: services: lista de servicios a correr image: la imagen del docker a correr command: comando a ejecutar depends_on: servicio a que depende. port: mapeo del puerto [host]:[contenedor] 18
  • 19.
    Creasoft.dev 2021 Kubernetes -El orquestrador de contenedores ¿Qué problemas resuelve? ● Mantiene el estado del servicio configurado de manera declarativa ● Se encarga de los fallos automáticamente. Automatiza el despliegue y escalamiento horizontal de las aplicaciones. # Ejemplo: Instala objetos (deployments) e incrementa replicas $ kubectl apply -f k8-config.yaml $ kubectl scale --replicas=3 -f k8-config.yaml 19
  • 20.
    Creasoft.dev 2021 Kubernetes -Arquitectura El despliegue en un cluster de Kubernetes Servicios expuestos a la red Fuente: https://kubernetes.io/docs/tutorials/kubernetes-basics 20
  • 21.
    Creasoft.dev 2021 Kubernetes -Ejemplo: k8-config.yaml # Source: knoesia-backend/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: knoesia-backend labels: app.kubernetes.io/name: knoesia-backend spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: knoesia-backend template: metadata: labels: app.kubernetes.io/name: knoesia-backend spec: containers: - name: knoesia-backend image: "registry.gitlab.com/betternia/incubation/knoesia/knoesia- backend:latest" ports: - name: http containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: /info kind: tipo de objeto replicas: cantidad procesos corriendo matchLabels: selector del pods a mantener la especificación template: plantilla del pod image: la imagen de docker a instanciar livenessProbe: ruta para probar si el servisio esta vivo 21
  • 22.
    Creasoft.dev 2021 Helm -El orquestrador de contenedores ¿Qué problemas resuelve? ● Simplifica la definición de las aplicaciones con configuraciones complejas ● Maneja las instalaciones de las aplicaciones en k8s. Administrador de paquetes para kubernetes. Incluye utilidades, motor de plantilla para declaraciones y registro de paquetes. # Ejemplo: Instala postgres, luego hace un upgrade (ej. Incr. replica) $ helm install mi-postgres bitnami/postgresql $ helm upgrade mi-postgres bitnami/postgresql 22
  • 23.
    Creasoft.dev 2021 Playwright -Automatizador de browser ¿Qué problemas resuelve? ● Puede ejecutar pruebas funcionales en diferentes tipos de browser y grabar errores. ● Aumenta la cobertura de las pruebas. Automatiza la ejecución del browser usando Nodejs. # Ejemplo: Ejecuta las pruebas $ npx folio --param screenshotOnFailure browserName=chromium 23
  • 24.
    Creasoft.dev 2021 miprueba.test.ts import './env'; import{ Page } from "playwright"; import { describe, it, expect } from "@playwright/test"; describe("Mi prueba funcional", () => { it("Login", async ({ page }) => { await page.goto("http://localhost:8100/"); const loginBtn = await page.waitForSelector('ion-button[data-qa="login- btn"]'); await loginBtn.click(); const usernameInput = await page.waitForSelector('input[name="username"]'); await usernameInput.type(process.env.USER_ID); const passwordInput = await page.waitForSelector('input[name="password"]'); await passwordInput.type(process.env.USER_PWD); await passwordInput.press('Enter'); const name = await page.innerText("ion-title"); expect(name).toBe("Daily"); }); Incluir las librerías Navega hacia una página Selecciona un objeto DOM Hace click al objeto (boton en este caso) Verifica el resultado: la prueba en si 24
  • 25.
    Creasoft.dev 2021 CI/CD -Integración y Entrega Continua ¿Qué problemas resuelve? ● Minimiza la necesidad de intervención humana para empaquetamiento, ejecución de pruebas y despliegue ● Reduce el ciclo de lanzamiento Opciones ● GitHub Actions, GitLab-CI ● Bamboo, CircleCI, Jenkins, TravisCI, TeamCity, GoCD Ejecuta tareas (ej. scripts) para automatizar el proceso desde compilación hasta despliegue de la aplicación. 25
  • 26.
    Creasoft.dev 2021 GitLab CI test:e2e: stage:test image: docker/compose:latest variables: DOCKER_DRIVER: overlay services: - docker:dind script: - cd miapp-backend - docker-compose --env-file .env.test -f docker-compose.test.yml up -d --build - docker-compose -f docker-compose.test.yml --env-file .env.test run miapp-backend yarn test -runInBand - docker-compose -f docker-compose.test.yml --env-file .env.test down docker:build: stage: build image: docker variables: DOCKER_DRIVER: overlay services: - docker:dind before_script: - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} $CI_REGISTRY script: - cd knoesia-backend - docker build -t ${CI_REGISTRY}/miapp-backend:${CI_COMMIT_SHORT_SHA} -f docker/Dockerfile . - docker push ${CI_REGISTRY}/miapp-backend:${CI_COMMIT_SHORT_SHA} El script se ejecuta al realizar un merge a la rama primaria (master) 26
  • 27.
    Creasoft.dev 2021 Snyk -Detección de vulnerabilidades SImplemente registre su repositorio con la clave en el sitio de Snyk, y el servicio analizará su código. 27
  • 28.
    Creasoft.dev 2021 Referencias ● Google,Accelerate State of DevOps 2019 ● Google SRE Book ● Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations ● Neil Ford, Continuous Delivery Workshop, Slide deck 1, deck 2, deck 3, video ● Agile Alliance, Continuous Delivery deck, ● Eliyahu M. Goldratt, The Goal: A Process of Ongoing Improvement Enlace util: ● https://free-for.dev 28
  • 29.
    Creasoft.dev 2021 Colaboracion ● GitHub,GitLab, Jira, PivotalTracker Codificación ● VSCode, IntelliJ Calidad de codito ● SonarQube, LGTM, DeepCode, DeepSource Admin de API ● Swagger, Apigee, Apiary Manejo de dependencias y paquetes ● Maven, Gradle, yarn, crate, Helm Detección de Vulnerabilidad ● Snyk Herramientas Pruebas ● Unitarias: Cucumber, JUnit, Jest, TL ● Funcional: Playwright, Cypress, Selenium ● Perf: Gatling, k6, JMeter Repositorio de Artefactos ● DockerHub, Quay, GitHub, GitLab Provision, IaaC ● Terraform, Ansible, Chef CICD ● GitHub Actions, GitLab-CI ● Bamboo, CircleCI, Jenkins, TravisCI, GoCD Monitoreo ● New Relic, DataDog, AppDynamics, ELK, 29
  • 30.
    Creasoft.dev 2021 “You buildit, you run it” - Werner Vogels, Amazon CTO La cultura ágil y colaborativa es el alma de Devops. El equipo comparte la responsabilidad del desarrollo, operación y evolución del sistema. 30
  • 31.

Notas del editor

  • #2 Breve introducción práctica al DevOps, ver. 1.0 (es) 2021/03/18 -- DESCRIPCIÓN -- DevOps es un cambio de cultura que acelera el ciclo de desarrollo de software sin comprometer la calidad. Esta diapositiva hace una breve introducción al devops con ejemplos concretos de proceso y herramientas. -- TAGS -- Devops, desarrollo, ciclo de vida de desarrollo, ingeniería de software, docker, kubernetes, helm, seguridad de software, CI/CD, integración continua, despliegue continuo Fotos: https://pixabay.com/illustrations/knot-fixing-connection-torus-242409/
  • #5 Como las diferentes empresas de tecnología y empresas que ofrecen servicios se adaptan diariamente, haciendo mejoras basados en métricas Estas empresas introducen mejoras a sus productos de software casi diariamente. Sin una cultura agil, tal velocidad no seria posible.
  • #6 https://www.pexels.com/photo/man-holding-shovel-3285094/
  • #7  https://www.shutterstock.com/image-photo/mindful-calm-businessman-suit-meditating-office-1289761645
  • #11 https://en.wiktionary.org/wiki/DevOps https://commons.wikimedia.org/wiki/File:Devops-toolchain.svg https://www.atlassian.com/devops/what-is-devops
  • #13 https://aws.amazon.com/devops/what-is-devops/ https://www.netapp.com/devops-solutions/what-is-devops/
  • #14 https://devopedia.org/devops
  • #20 https://kubernetes.io/docs/reference/kubectl/cheatsheet/
  • #21 https://kubernetes.io/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/ https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-intro/
  • #31 https://martinfowler.com/bliki/DevOpsCulture.html