Introducción a DevOps: Metodología y Práctica
Introducción a DevOps: Metodología y Práctica
INTRODUCCIÓN A
DEVOPS: ANÁLISIS DE
LA METODOLOGÍA Y
EJEMPLO DE
APLICACIÓN PRÁCTICA
Septiembre, 2022
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
1
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
ÍNDICE
1. INTRODUCCIÓN ................................................................................................. 9
3. HERRAMIENTAS DE DEVOPS..........................................................................14
3.8.1. Azure......................................................................................................30
2
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
5. PRINCIPIOS DE DEVOPS, VENTAJAS E INCONVENIENTES .........................40
3
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
11.2. Herramientas utilizadas para el desarrollo software .................................82
BIBLIOGRAFÍA .........................................................................................................99
4
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
5
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
TABLA DE ILUSTRACIONES
6
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Ilustración 35. Gráfico de población encuestada según si conoce DevOps [73] ...................62
Ilustración 36. Gráfico de opinión del trabajo en equipo [74] ................................................63
Ilustración 37. Gráfico de opinión sobre equipos fusionados [75] .........................................64
Ilustración 38. Gráfico de opinión sobre equipos multidisciplinares [76] ...............................65
Ilustración 39. Gráfico de opinión a priori sobre responsabilidad compartida [77] .................66
Ilustración 40. Gráfico de opinión sobre situación real según responsabilidad compartida [78]
.............................................................................................................................................67
Ilustración 41. Gráfico de opinión a posteriori sobre responsabilidad compartida [79] ..........68
Ilustración 42. Gráfico de opinión de importancia sobre acción centrada en el cliente [80] ...69
Ilustración 43. Gráfico de opinión de eficacia sobre acción centrada en el cliente [81] .........69
Ilustración 44. Gráfico de opinión sobre posibilidad de fallar durante la producción [82].......70
Ilustración 45. Gráfico de opinión sobre automatización de procesos [83] ............................71
Ilustración 46. Gráfico de opinión según situación real [84] ..................................................72
Ilustración 47. Ciclo DevOps [85] .........................................................................................78
Ilustración 48. Tablero Kanban correspondiente al proyecto de nuestra aplicación [86] .......83
Ilustración 49. Panel de control Xampp [87] .........................................................................84
Ilustración 50. Página principal del servidor Apache de Xampp [88] .....................................85
Ilustración 51. Tabla tareas de la base de datos aplicaciontareas - PHPMyAdmin [89] ........86
Ilustración 52. Tabla usuarios de la base de datos aplicaciontareas - PHPMyAdmin [90].....86
Ilustración 53. Repositorio GitHub donde se aloja nuestro proyecto [91] ..............................87
Ilustración 54. Servidor Ionos contratado para alojar nuestra aplicación [92] ........................88
Ilustración 55. Script del cron creado para la automatización del despliegue [93].................89
Ilustración 56. Directorio Crontab que contiene el comando para ejecutar el cron [94] .........89
Ilustración 57. Página principal de nuestra aplicación V1.0 [95] ...........................................90
Ilustración 58. Worflow para automatización de pruebas [96] ...............................................91
Ilustración 59. Fichero composer.json [97] ...........................................................................92
Ilustración 60. Página de registro de nuestra aplicación V1.0 [98] ........................................92
Ilustración 61. Página de login de nuestra aplicación V1.0 [99] ............................................93
Ilustración 62. Página principal del usuario de nuestra aplicación V1.0 [100] .......................93
Ilustración 63. Página de registro de nueva tarea de nuestra aplicación V1.0 [101] .............94
Ilustración 64. Página de registro de nuestra aplicación V2.0 [102] ......................................95
Ilustración 65. Página de registro de nuestra aplicación V2.0 [103] ......................................95
Ilustración 66. Página de login de nuestra aplicación V2.0 [104] ..........................................96
Ilustración 67. Página de registro de nueva tarea de nuestra aplicación V2.0 [105] .............96
Ilustración 68. Página principal del usuario de nuestra aplicación V2.0 [106] .......................97
Ilustración 69. Página de información de tarea V2.0 [107] ....................................................97
7
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
8
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
1. INTRODUCCIÓN
1.1. Motivación
Por último, mencionar que DevOps, tanto como metodología e, incluso, como
simple concepto, resulta bastante desconocido en general, especialmente en la
población ajena al ámbito del desarrollo software, algo que veremos más adelante en
otros apartados. Aún así, personalmente yo tampoco conocía DevOps hasta empezar
a realizar el análisis de la metodología, por lo que durante estos meses he ido
adquiriendo nuevos conceptos sobre esta, e incluso sobre el desarrollo software en
general.
9
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
1.2. Objetivos
¿Qué es lo primero que se nos viene a la cabeza cuando alguien nos menciona
el término DevOps? La realidad es que prácticamente cualquier persona que no esté
relacionada con el mundo de la informática y el desarrollo software desconoce tal
concepto y su origen. Por ello, pretendo dedicar la primera parte del proyecto a aportar
información a cualquier lector para que le sea posible conocer qué es DevOps, de
donde viene dicho término, qué función aspira a desempeñar y los objetivos que busca
conseguir.
10
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
manera que se reduzca el tiempo de trabajo, se lleve a cabo una mejor coordinación
entre todas las partes que intervienen en dicho desarrollo y, así, se ofrezcan mejores
resultados al cliente. [1]
Por un lado, tenemos el concepto de desarrollo software, que suele ser bastante
conocido o al menos escuchado por cualquier persona, esté o no relacionada con el
mundo de la informática. Dicho concepto trata sobre el proceso mediante el cual se
lleva a cabo la producción, evaluación y mantenimiento de productos software. Por
otra parte, está el concepto de operaciones TI, basado en la unión de 3 conceptos
pertenecientes a una empresa, que serían las personas, los procesos y la tecnología,
con la intención de sacar el máximo partido posible de estos tres elementos para que
la organización obtenga beneficio de ello en diferentes aspectos.
El desarrollo de software supone una actividad que surgió hace muchos más
años que DevOps. Es por ello que podemos preguntarnos acerca de cómo se llevaba
a cabo dicha actividad antes de que esta metodología se creara. Lo cierto es que
hasta que este momento llegó, existían marcos de trabajo de carácter más
convencionales, caracterizados por un mayor nivel de aislamiento entre los diferentes
sectores pertenecientes al proceso de creación de software. Esto reflejaba una serie
de aspectos negativos que afectaban de diferente manera a todo lo relacionado con
esta actividad, pasando por una deficiencia en la comunicación interna, una extensión
de la duración de dicho proceso, dificultades a la hora de incluir modificaciones e
innovaciones, y una falta de regularidad de aportaciones de trabajo. Todo ello se
reflejaba en la productividad del equipo de trabajo, la calidad de los resultados que se
11
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
obtenían, un incremento del precio del producto y el esfuerzo dedicado, una mayor
cantidad de fallos y situaciones de conflicto, y una entrega más retardada al cliente.
[4]
Debois pasa durante dos años, en los que mantiene presente la problemática
existente en el mundo del desarrollo, acudiendo a exposiciones celebradas a nivel
mundial, en las que recopila información sobre temas tratados de importancia en su
investigación. Es a mediados de 2009, cuando obtiene la clave para llevar a cabo
soluciones aplicables a su preocupación: colaboración de grupos de desarrolladores
con el ámbito de operaciones.
Unos meses más tarde, en octubre, organiza una exposición para presentar los
conceptos sobre el tema interpretados a raíz de las ideas que ha ido tomando durante
esos años, la cual toma sede en la ciudad de Gante, en Bélgica, y para ello busca una
12
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
denominación con la que designar a dicha exposición. Toma en cuenta los dos
ámbitos en los que pretende establecer cooperación (Development y Operations), y
de ahí surge la conferencia DevOpsDays, evento al que deciden asistir un gran elenco
de profesionales del medio. Una vez finalizado, se decide crear una etiqueta en Twitter
para que la gente exponga cualquier aspecto u opinión relacionado con dicho evento:
DevOps, por lo que, finalmente, la metodología adquiere esta designación. [4]
13
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
establecerán un vínculo más cohesionado, lo que favorecerá una sintetización del
desarrollo y mantenimiento del producto.
3. HERRAMIENTAS DE DEVOPS
14
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
DevOps. Vamos a ver cuáles son estos grupos y analizaremos las herramientas más
conocidas de cada uno de ellos. [7]
Estas herramientas se encargan de que los equipos puedan exponer una serie
de requisitos para un proyecto, interpretarlos para establecer un conjunto de tareas y
supervisarlas hasta su cumplimiento. La gestión de proyectos, vista como una
actividad dentro del desarrollo software, engloba funciones a llevar a cabo, como la
organización del trabajo, la cooperación del equipo o la valoración del progreso. Como
ejemplos de este tipo de herramientas, podemos encontrar GitHub Issues o Jira.
3.1.1. Jira
15
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
como el manejo de requerimientos, tareas, proyectos, fallos, etc. Es por ello por lo que
Jira puede ser usada por personas con diferentes tipos de roles dentro de un equipo.
[8]
Jira es una herramienta útil para múltiples tipos de proyectos, aunque está
especialmente enfocada como recurso propio de metodologías ágiles.
3.2.1. Jenkins
16
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
abierto cuya utilidad se centra en gestionar proyectos de forma autónoma con el
objetivo de aportar rapidez al desarrollo y beneficiar al equipo en cuanto a la
integración de modificaciones.
Entender cómo trabaja Jenkins es bastante sencillo: en primer lugar, una vez
que un miembro del equipo realice una aportación al repositorio de trabajo, la
herramienta estará al tanto de ello, pues constantemente lleva a cabo chequeos en
busca de nuevas modificaciones. En ese momento, se encarga de compilar y se
genera un build, que puede dar dos resultados. Si fracasa, se comunica al equipo
sobre el error; en cambio, si resulta válido, pasa a un proceso de pruebas del que se
obtendrán unos resultados que serán comunicados al equipo. Una vez se haya
completado todo esto, Jenkins vuelve a repetir la secuencia. Todo este proceso de
funcionamiento constituye lo que es un pipeline de Jenkins, concepto que ya vimos en
otro de los apartados anteriores. Este consta de una serie de elementos: el primero
sería el fichero donde se recogería el propio pipeline, conocido como Jenkinsfile.
Dentro de él, se encuentran las fases o Stages, que comprenden cualquier conjunto
de acciones que suponen un proceso concreto, y estas a su vez contienen a los pasos
o Steps, que constituyen acciones simples. [11]
17
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Con todo esto, podemos deducir que Jenkins es una herramienta que ofrece
un método más autónomo de tratar y probar el código sobre el que trabaja un equipo.
Además, ofrece una serie de ventajas respecto a otras herramientas: es una
herramienta disponible para cualquier usuario, sin coste alguno, multiplataforma y que
ofrece una amplia funcionalidad gracias a los complementos de los que dispone. Aun
así, la interfaz que Jenkins ofrece resulta bastante obsoleta y complicada de
comprender, al igual que algunos de sus complementos.
3.3.1. GitHub
18
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
GitHub es una herramienta de acceso libre para cualquier usuario de la web sin
coste alguno, aunque dispone de planes de pago que ofrecen más funcionalidades en
función de la cuota seleccionada. Para hacer uso de este servicio, el usuario debe
disponer o crear una cuenta con la que acceder y en la que almacenar información
sobre el progreso que llevará a cabo. Cuando se crea un repositorio, se ofrece la
opción de decidir la visibilidad del mismo, pudiendo ser público (accesible para
cualquier usuario, aunque no esté registrado en el servicio) o privado (sólo accesible
para usuarios a los que previamente se les ha permitido el acceso al mismo). Aunque
GitHub ofrece una interfaz de usuario muy intiuitiva y fácil de comprender y utilizar,
también puede ser controlada mediante una consola de línea de comandos instalable
que ofrece Git para sus herramientas, conocida como Git Bash.
20
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
3.4.1. Selenium
Selenium ofrece una serie de componentes con los que trabajar, en lugar de
centrarlos todos en una sola herramienta. En primer lugar, tenemos Selenium IDE:
como bien sabemos, un IDE (Integrated Development Enviroment) en el ámbito de la
informática es un entorno en el que llevar a cabo desarrollo software, por lo que
21
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
aplicado a la herramienta que estamos viendo, podemos definirlo como el entorno
utilizado por los usuarios de Selenium para crear y desarrollar distintos test de
evaluación. Ofrece varias funcionalidades: usando el IDE se pueden crear tests
independientes, o crear un conjunto completo de pruebas, también permite, como
hemos mencionado anteriormente, la ejecución simultánea de pruebas en varios
navegadores, algo que es necesario para considerar válido el proceso de testeo y que
es conocido como proceso de pruebas de navegación cruzada, ofrece la opción de
depurar las pruebas, y dispone de numerosas órdenes que el usuario puede utilizar.
Por otro lado, tenemos Selenium RC, basado principalmente en un servidor que actúa
como mediador entre las órdenes y los navegadores sobre los que se aplican las
pruebas, y unas bibliotecas en la parte del cliente. Para hacer uso de esta herramienta,
debemos tener la aplicación de control remoto (Selenium Remote Control Server). En
la actualidad, este componente se considera bastante complejo, y por ello se ha
sustituido prácticamente por otro de los componentes que vamos a ver: Selenium
WebDriver, que consiste en una aplicación de automatización de pruebas de interfaz
de usuario, aunque a diferencia de la versión de control remoto expuesta
anteriormente, esta vez la comunicación con el navegador está libre de intermediarios.
Por ello, esta versión de la herramienta se considera como una mejora de la anterior,
además de que cuenta con una estructura mucho más manejable y, al establecer
comunicación directa, trabaja con mayor rapidez; otra mejora que presenta con
respecto a la versión anterior es la disponibilidad para dispositivos móviles.
Finalmente, tenemos un último componente, Selenium Grid. Su objetivo
principalmente es la ejecución simultánea de varios testeos en diferentes dispositivos,
y esto lo lleva a cabo haciendo uso de un servidor (HUB) que se encarga de enlazar
máquinas remotas (nodos) donde se llevan a cabo dichos procesos de testeo. [15]
22
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
3.5.1. Ansible
Esta herramienta, cuyo software es Open Source y de uso gratuito, fue creada
por Michael DeHaan en 2012, año en el que se llevó a cabo el lanzamiento de su
primera versión. Tres años después, en 2015, la empresa Red Hat lleva a cabo la
adquisición de Ansible con la intención de ofrecer a sus clientes un servicio orientado
a la filosofía DevOps. [16]
23
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Ansible lleva a cabo su funcionamiento haciendo uso del protocolo SSH, el cual
permite administrar a distancia equipos remotos haciendo uso de la red. Antes de
hacer uso de la herramienta, debemos asegurarnos que todos los sistemas que se
vayan a gestionar cuenten con Python, y debido al soporte que Ansible ofrece, el
equipo desde el que se lleve a cabo la gestión de los demás no puede tener como
sistema operativo Windows. Una vez se esté haciendo uso de la herramienta, el
dispositivo desde el que se llevará a cabo todo el proceso (controlador) establecerá
conexión con los demás equipos (nodos), en los que ejecutará una serie de módulos,
que serán suprimidos una vez hayan sido instaladas las aplicaciones que se precisan.
[17]
Ansible ofrece, además, una funcionalidad conocida como roles, la cual ofrece
a quienes la usan la posibilidad de organizar según una distribución determinada
elementos usados para la gestión remota de los equipos. Esta distribución se basa en
directorios dictaminados por Ansible (ver figura 3.7), y cada cual incluye un fichero
(main.yml) que contiene el conjunto de tareas que va a llevar a cabo cada uno de los
roles (ver figura 3.8). Los ficheros con esta extensión (.yml) contienen información
representada en YAML, un lenguaje de serialización de datos considerado como más
comprensible que otros para los usuarios. Además, como los roles pueden ser usados
más de una vez y por más de un usuario, se puede hacer una búsqueda sobre roles
disponibles en una de las herramientas complementarias de Ansible que recopila
multitud de roles creados por usuarios de este servicio, conocida como Galaxy. [18]
24
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
25
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
relevante (variables para el rol, tareas que realizará cada uno, plantillas para cambios
en los mismos, metadatos, etc.).
26
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
3.6.1. Nagios
27
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Una vez se lleva a cabo el chequeo, el servidor comunica los resultados
haciendo uso de uno de estos valores: 0 para indicar que todo ha ido bien y no se ha
encontrado ningún conflicto; 1 para indicar que se ha generado una alerta; 2 para
indicar que ha ocurrido un conflicto importante; y 3 cuando no ha sido posible precisar
un resultado concreto.
Como hemos visto, DevOps es una metodología que busca establecer una
mayor cohesión entre las diferentes partes pertenecientes al proceso de desarrollo
software, en la que se promueven aspectos como una comunicación más óptima con
respecto al equipo de trabajo, automatización de procesos o entregas más frecuentes
y continuas, entre otros. Para llevar esto a cabo y alcanzar los objetivos que esta
metodología persigue, suele recurrirse a lo que conocemos como Cloud Computing,
que en definitiva se refiere a servicios informáticos en la nube.
28
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
29
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
3.8.1. Azure
4. MÉTODOS DE DEVOPS
30
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
4.1. Scrum
Nos encontramos ante la metodología ágil más conocida, Scrum. Su principal objetivo
es facilitar la labor de trabajo del equipo en cuanto al desarrollo llevado a cabo,
pudiendo ofrecer así mejores resultados finales. El uso de este método está enfocado
a proyectos de mayor nivel de complejidad.
En primer lugar, encontramos el Equipo Scrum (Scrum Team), cuyas dos propiedades
destacadas son autoorganización (siempre escogen la mejor manera de cumplir con
su labor de forma autónoma) y multifuncionalidad (el propio equipo es autosuficiente
por sí mismo). Está formado por una serie de miembros que cumplen unos roles
establecidos: el Dueño del Producto (Product Owner), quien se encarga de comunicar
al equipo un panorama de lo que se pretende conseguir, algo que plasma en el
31
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Product Backlog, que veremos más adelante en otro apartado; y, por otra parte,
tenemos el Scrum Master, figura líder cuya función se basa en hacer que el equipo
cumpla con su labor para obtener los resultados esperados.
Scrum cuenta también con una serie de eventos encargados de mantener controlado
el progreso del desarrollo del equipo sobre el producto de forma regular. Como primer
evento, nos encontramos con el Sprint, considerado como un período de tiempo no
más largo de un mes en el que se desarrolla un resultado parcial del producto que
puede ser usado, aunque no con toda la funcionalidad al completo. A estas entregas
se les conoce como incrementos. La finalización de un Sprint supone el comienzo del
siguiente, a excepción del Sprint Final, donde se pretende disponer del resultado final
del producto.
Dentro de un Sprint, se encuentran y se basan todos los demás eventos. Por un lado,
tenemos los Daily Scrums (reuniones diarias), que son reuniones fechadas a una
misma hora y lugar diariamente, en las que en 15 minutos (tiempo que duran estas
reuniones), el equipo de trabajo se reúne para comentar sobre el trabajo realizado en
las últimas 24 horas y, a partir de esto, planificar el trabajo que se realizará hasta la
siguiente reunión; otro de los eventos es el Sprint Planning (planificación del sprint),
en el que se reúne el equipo para discutir y decidir sobre qué es lo que se pretende
llevar a cabo durante el Sprint y cuál será el resultado esperado al finalizar. Una vez
finalizado un Sprint, se lleva a cabo otro evento conocido como Sprint Review (revisión
del sprint), en el que se lleva a cabo una revisión del trabajo realizado durante el
tiempo que se ha dedicado al último incremento. A partir de aquí, se decide si se
deben aplicar cambios sobre el Product Backlog a modo de añadir mejorías sobre el
producto. Por último, una vez haya finalizado esta reunión de revisión del producto, se
lleva a cabo el último de los eventos que nos queda por ver: el Sprint Retrospective
(retrospectiva del sprint). Esta reunión, la cual tiene lugar antes del siguiente Sprint
Planning, tiene como objetivo obtener valoraciones sobre el desarrollo del último
Sprint, es decir, realizar autocrítica sobre cómo se está llevando a cabo la forma de
trabajo del equipo a modo de poder considerar modificaciones en la misma para
obtener siempre mejores resultados.
32
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Una vez visto esto, trataremos sobre los artefactos propios de Scrum. Estos elementos
se encargan de ofrecer una visión sobre lo que es el producto a desarrollar, los
requisitos que se ofertan para la obtención del mismo y la organización que se está
llevando a cabo durante el progreso de trabajo. De esta manera, encontramos 3
artefactos: el Product Backlog (mencionado anteriormente), que es un registro de los
requerimientos modificable durante el desarrollo del producto, y del que es propietario
el Product Owner; el Sprint Backlog, correspondiente al Sprint en el cual se está
trabajando en el momento, recoge los requisitos que se están desarrollando durante
dicho Sprint, y acepta cambios mientras dicho período aún no haya finalizado.
Finalmente, tenemos el Incremento, supone una acumulación de todos los requisitos
desarrollados hasta la entrega del mismo, en la que se ofrece una versión del producto
parcialmente utilizable.
Un último aspecto de Scrum son las reglas: algunas de ellas han sido mencionadas
previamente para explicar todos los aspectos que ya se han visto de la metodología,
como por ejemplo la duración de algunos eventos, el orden y el momento concretos
en el que se deben dar dichos eventos, las restricciones del Daily Scrum, etc. Otras
reglas que Scrum establece es la improrrogabilidad de las fechas establecidas para la
finalización de los Sprints y la imposibilidad de modificar la planificación que se ha
hecho para el Sprint en curso, pues esto afectaría al seguimiento que se lleva a cabo
33
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
sobre el ritmo de trabajo; además, no se considerará que un requisito ha sido
finalizado hasta el momento en que pase por una validación determinada. [23]
4.2. Kanban
Kanban, visto como una metodología de trabajo, tiene como objetivo ayudar a
los equipos de desarrollo a organizar sus labores dentro de un proyecto, aportando
una visión general de estas que irá siendo modificada a medida que se lleva a cabo
el desarrollo de dicho proyecto. De esta manera, se busca que el equipo conozca cuál
es la distribución a seguir y que pueda llevarse a cabo un seguimiento informativo en
todo momento sobre el estado de las asignaciones en las que se divide el proyecto.
34
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Tiempo después, aproximadamente a mediados del siglo XX, la empresa
Toyota que conocemos hoy en día atravesaba momentos complicados: su producción,
en relación con la competencia americana, no lograba alcanzar los niveles esperados,
algo que la empresa decidió tratar de cambiar a base de realizar modificaciones en
cuanto a la forma de llevar a cabo las labores de producción. Por aquel entonces, el
ingeniero industrial Taiichi Ohno acababa de acceder a la empresa y fue escalando
puestos rápidamente. Ante el presente problema que se planteaba en la organización,
encontró varios aspectos negativos, entre los cuales estaba el problema de una
producción con excedentes. La solución a esto podía llevarse a cabo ejecutando una
producción basada en la necesidad instantánea, es decir, producir únicamente lo que
se pedía y en el momento que se pedía, algo que radicaba en una duda sobre cómo
indicar el requerimiento de nuevas producciones. Para intentar averiguar cómo llevar
a cabo esta situación, emprendió un viaje hasta las empresas americanas, donde
observó la manera en la que trabajaban y producían de forma eficiente, basada en el
uso de tarjetas para indicar la necesidad de nuevas fabricaciones a raíz de lo que los
clientes solicitaban. En el momento de regreso, adoptó dicha forma de producción, la
cual supuso un beneficio en cuanto a la gestión del inventario y aportó eficiencia al
proceso de fabricación. Esto, finalmente, hizo que la empresa experimentara un auge
realmente significativo dentro del sector.
35
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
sobrecargas en la medida de lo posible. También resulta interesante evaluar lo que se
está llevando a cabo en cuanto al tiempo que conlleva.
Existe una herramienta con la que poder desarrollar un proyecto en base a esta
metodología que acabamos de ver: tableros de Kanban. Estos se basan en el uso de
tarjetas que recogen la división del trabajo a realizar en tareas, que son asignadas a
los diferentes miembros del grupo de desarrollo.
36
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
momento en el que se encuentren. Es por ello que existe otra modalidad para esta
herramienta: tableros virtuales. Para un escenario en el que las labores de desarrollo
se llevan a cabo de forma no presencial, este tipo de tableros resulta de mucha
utilidad, pues permite a los equipos plasmar toda la información necesaria en un
espacio al que todo el equipo puede acceder desde cualquier dispositivo y desde
cualquier lugar, además de poder hacerlo en cualquier momento al tener disponible
dicha herramienta durante la totalidad del tiempo, por lo que ofrece, así, más
disponibilidad y libertad a los miembros del equipo. Este tipo de tableros también basa
su estructura en todo lo que hemos visto anteriormente, haciendo uso de columnas y
de ítems que recojan las tareas a realizar, las cuales irán atravesando dichas
columnas. Además, este tipo de herramientas siempre suele resultar de fácil
comprensión y manejo, ya que ofrecen interfaces muy intuitivas y que no suelen ser
complejas, aunque con multitud de funcionalidades para configurar, de forma que se
adapten al máximo a las necesidades de cada proyecto. [25]
4.3. Scrumban
Con respecto a los dos métodos que acabamos de ver, es cierto que existen
multitud de equipos que utilizan Scrum, aunque muchos otros prefieren hacer uso de
Kanban. Aun así, ciertos aspectos de las metodologías pueden resultar bastante
interesantes para ambos equipos, por lo que, en ciertas ocasiones, un equipo que
utilice normalmente Scrum pretenda comenzar a hacer uso de funcionalidades de
Kanban, y, al contrario, equipos fieles a Kanban empiecen a interesarse por aspectos
que ofrezca Scrum. Por tanto, principalmente es por ello por lo que surgió una nueva
metodología resultado de una conjugación de ambas, conocida como Scrumban, la
cual pretende reunir las mejores características de cada una de ellas. Por tanto, su
creación tiene como objetivo principal servir de ayuda para los equipos que pretenden
cambiar de una metodología a otra, minimizando en la medida de lo posible la
dificultad que supondría pasar de una a otra de manera radical. Visto esto, aunque es
una metodología de la que cualquiera puede hacer uso, es cierto que está más
orientada a equipos acostumbrados a trabajar con Scrum o Kanban. De hecho, si
profundizamos aún más, veremos que esta metodología está especialmente más
enfocada a Kanban que a Scrum por el hecho de no imponer tantas limitaciones como
37
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
lo hace esta última, y es incluso algo más utilizada por equipos Scrum que necesiten
trasladarse parcialmente a Kanban. Sí que es cierto que los resultados que se
obtienen mediante la técnica Scrum suelen ser bastante satisfactorios: el problema
aparece cuando un equipo pretende adherirse a dicha metodología, ya que no resulta
algo fácil y requiere demasiado tiempo y personal de apoyo para adquirir formación,
cosa que no interesa a algunas empresas en ciertas ocasiones.
38
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
variadas, mientras que Kanban admite grupos con habilidades más específicas. Por
último, en cuanto a la organización de la carga de trabajo, en Scrum se calcula de
manera aproximadamente al tiempo que llevará la realización de las tareas según el
ritmo de los equipos, algo que no ocurre en Kanban. Como vemos, son numerosas
las diferencias entre ambas metodologías, y aunque son más destacadas, existen
otras.
39
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
por último el grado de libertad que brinda a los miembros de un grupo al no existir
tantas restricciones como en otras metodologías. Sin embargo, como es lógico,
presenta también aspectos en contra. Si bien es cierto que Scrumban ofrece mucha
más capacidad de autogestión a los equipos, esto puede provocar también situaciones
de desorden y conflictos; además, debido a que es un método bastante reciente en el
tiempo, carece de referencias sobre las que guiarse y estándares a los que ajustarse.
Por tanto, consideramos que Scrunban es una metodología que ofrece multitud de
aspectos positivos y beneficiosos, al mismo tiempo que presenta inconvenientes a
tener en cuenta, por lo que la decisión sobre qué método usar debe comenzar por
realizar un análisis en busca de aspectos en los que el equipo de trabajo funciona
correctamente, y aspectos en los que no se estiman resultados no tan satisfactorios.
[26]
40
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Otro de los principios de DevOps trata sobre los miembros del equipo de
desarrollo y su fiel compromiso con el proyecto desde su inicio hasta su finalización,
asumiendo en todo momento una responsabilidad con las labores que se están
llevando a cabo y con el producto que se está creando. Esto tiene una lógica bastante
simple y fácil de comprender: un equipo DevOps busca la cooperación de todos sus
miembros, es decir, no basta con que uno de ellos realice sus asignaciones y se
desentienda de las de sus compañeros, pues la filosofía de DevOps persigue fomentar
una buena comunicación y forma conjunta de trabajar entre los componentes del
grupo de trabajo. De este modo, cuando uno de los miembros experimente conflictos
durante el desarrollo de alguna de las partes, pueda encontrar un punto de apoyo por
parte de los demás compañeros, algo que evitaría retrasos en las labores de trabajo
y generaría mejores resultados.
41
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
42
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
43
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
mencionado en otras ocasiones, los miembros del equipo poseen una cualificación
variada, con destrezas aplicables a diferentes ámbitos, aportando y adquiriendo
feedback entre ellos.
44
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
5.1. Ventajas
45
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
implicación por la totalidad del proyecto y no únicamente por las correspondientes
asignaciones individuales, es decir, todos los miembros tendrán en cuenta las labores
que se están llevando a cabo durante el desarrollo aunque no estén dentro de sus
atribuciones, por lo que se creará un clima de trabajo mucho más participativo que
ofrecerá mayor nivel de tranquilidad a los trabajadores, y esto conllevará a una
obtención más rápida de resultados y con mayor valor.
Otra de las ventajas que ofrece DevOps es una reducción del tiempo de
desarrollo y gastos a raíz de la integración de herramientas que permiten llevar a
cabo procesos de forma autónoma, como hemos visto previamente. Además,
aplicando esta técnica de autogestión de procesos, se experimenta también una
reducción de fallos en el desarrollo del proyecto, al mismo tiempo que los períodos
para corregir fallos se llevan a cabo con menor duración.
Por tanto, podemos considerar que DevOps resulta una metodología que ofrece
ventajas en prácticamente todos los ámbitos dentro del desarrollo software, ya sea en
46
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
referencia al equipo, al ritmo de trabajo, a la calidad de los resultados y a la
satisfacción del cliente, entre otros aspectos.
5.2. Inconvenientes
Ahora bien, existen también una serie de factores que no resultan tan
favorables y se deben tener en cuenta antes de recurrir a esta metodología, pues,
aunque presente numerosos aspectos positivos, también nos encontraremos con
ciertas complicaciones.
47
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
aspectos más importantes, incluso se podría considerar el más imprescindible, resulta
ser el equipo de trabajo. En este caso, nos encontramos con que existen una serie de
papeles que adoptan sus miembros, los cuales definen claramente sus funciones
dentro del equipo. Vamos a ver cuáles son los principales roles que nos podemos
encontrar dentro de un equipo DevOps y en qué consisten. [30]
48
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Por tanto, su finalidad es analizar y gestionar los aspectos que contribuyen a
obtener resultados satisfactorios.
49
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
6.3. Automation Architect
50
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
6.4. Software Developer and Tester
51
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
compromiso con las necesidades que este presenta. Para ello, define unos estándares
a los que el producto debe ajustarse. Estos estándares de calidad comprenden una
serie de requisitos y restricciones que consigan que el producto lleve a cabo las
funciones por las cuales ha sido creado y poder así ofrecer al cliente los mejores
resultados.
52
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
ámbito basado en tácticas en las que el ingeniero de calidad delibera sobre los
modelos a seguir para que el producto adquiera el valor deseado.
Por último, nos trasladamos a un ámbito bastante importante dentro del mundo
de la informática y las tecnologías de la información. La seguridad es un aspecto
fundamental que nunca debe caer en el olvido o considerar como secundario. Es por
ello que esta figura de ingeniero se encarga de mantener en todo momento un
ambiente de trabajo protegido contra posibles amenazas y daños.
53
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
7. DEVOPS EN COMPARACIÓN CON OTRAS METODOLOGÍAS
Esta metodología, conocida como ingeniería de fiabilidad del sitio, tiene como
objetivo la creación de productos y servicios software que presenten más confianza e
incrementos cada vez más rápidos. Su origen se remonta a 2003, cuando Benjamin
Treynor se puso al mando de un grupo de trabajo que pretendía hacer de Google un
elemento de fiabilidad, repartiendo las labores del grupo en dos particiones iguales,
de las cuáles una estaría enfocada al ámbito de desarrollo y otra al de operaciones.
Haciendo una comparativa con DevOps, vemos que son dos metodologías que
comparten muchos aspectos. Ambas promueven la cooperación dentro del equipo de
trabajo y pretenden acabar con el aislamiento que existe entre la parte de desarrollo
y la de operaciones. Ahora bien, sí que es cierto que SRE muestra un especial interés
por la fiabilidad reflejada en los productos que desarrolla; además, aunque se
pretenda establecer una equidad entre ambas partes mencionadas anteriormente, la
de desarrollo adopta un papel más enfocado al liderazgo sobre la de operaciones. Por
su parte, y como bien sabemos, DevOps se decanta por la velocidad en el proceso de
desarrollo, además de implicarse en la automatización y aplicarla dentro de este en la
medida de lo posible. [31]
7.2. Agile
54
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
por las necesidades del cliente, y pretende que el equipo de desarrollo esté preparado
y sepa reaccionar y actuar en situaciones en las que se produzcan modificaciones no
contempladas dentro de la planificación del trabajo establecida.
Si comparamos Agile con DevOps, debemos tener en cuenta que son dos
metodologías muy parecidas entre sí. Es más, a veces incluso se permite y es
conveniente hacer un uso combinado de las dos en lugar de decantarse por una o por
otra. Aun así, muestran pequeñas diferencias entre ellas. En primer lugar, nos
encontramos con el objetivo principal de Agile, el cual se centra primordialmente en el
concepto de las modificaciones de forma reiterada y en reforzar el vínculo con el
cliente, al mismo tiempo que DevOps busca reforzar el vínculo entre desarrollo y
operaciones y muestra una preferencia por los continuos incrementos del producto.
En cuanto al equipo de trabajo, Agile se caracteriza por grupos de menor tamaño al
contrario que DevOps. Por último, Agile presta una especial atención a aspectos
técnicos del producto, mientras que DevOps se centra en la puesta a disponibilidad
del cliente. [33]
55
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
desconocer otros aspectos, como metodologías, herramientas o términos y conceptos
propios de dicho ámbito, entre otras cosas.
56
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
8.1. Cuestiones planteadas en la encuesta
57
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
paraliza el proceso de producción completo hasta encontrar una
solución. ¿En qué ámbito de los anteriores crees que sería mejor
reaccionar ante esta situación?
• ¿Consideras ahora que la responsabilidad compartida es un factor
beneficioso dentro de un equipo de trabajo?
• ¿En qué grado crees que una empresa debe tener en cuenta a un
cliente que requiera de sus productos o servicios?
• ¿Crees que los resultados pueden mejorar cuando la producción gira
en torno al cliente?
• ¿Crees que los equipos de trabajo se pueden permitir cometer fallos
durante el proceso de producción?
• ¿Crees que la automatización de procesos es un aspecto beneficioso
para una empresa?
• Por último, vamos a analizar un ejemplo real. WhatsApp, entre muchas
otras aplicaciones, es una herramienta la cual ha ido evolucionando a
lo largo de los años mediante la implementación de nuevas
funcionalidades: confirmaciones de lectura, envío de archivos,
opciones de llamada y videollamada, etc. Estas novedades no han sido
incluidas en la aplicación al mismo tiempo, sino que se han ido
desarrollando y poniendo a disposición de los usuarios
progresivamente. Visto esto, elige la opción que consideres más
adecuada: a) Prefiero una aplicación que incluya todas las funciones
que ofrece en una sola entrega, aunque tenga que esperar más tiempo
para que esté disponible. b) Prefiero una aplicación que no tenga
muchas funcionalidades desde el principio, pero que funcione
correctamente, la cual vaya adquiriendo novedades de forma
progresiva y se incluyan cada vez más funciones en pequeños períodos
de tiempo.
58
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
8.2. Población encuestada
Como podemos apreciar, existe una gran variación entre las personas
encuestadas, aunque podemos apreciar que los datos obtenidos son
mayoritariamente por parte de generaciones jóvenes, pues prácticamente el 80% de
las respuestas obtenida pertenecen a participantes de menos de 25 años. La razón
de esta distribución dentro de la población se debe, en gran parte, al uso de las nuevas
tecnologías y las redes sociales, algo más usual en los jóvenes; aun así, estos últimos
años, se ha experimentado un incremento de uso de las mismas por parte de las
generaciones más adultas. Esto puede reflejar en los resultados una mayor relación
de los participantes con el mundo de la informática, pues las nuevas generaciones
cada vez están más familiarizadas con el uso de tecnologías de la información.
59
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
60
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
8.3. Interpretación de resultados y obtención de conclusiones
Ilustración 34. Gráfico de población encuestada según relación con la informática [72]
61
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Uno de los aspectos sobre los que se ha pedido opinión popular es el trabajo
en equipo, uno de los pilares fundamentales de DevOps.
62
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
63
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Como vemos, las opiniones sobre este aspecto están bastante equilibradas,
aunque comprobamos que la gente se decanta ligeramente por atribuir un carácter de
dificultad al hecho de poner de acuerdo a todos los miembros de un equipo. Aun así,
prácticamente nadie lo considera ni extremadamente fácil, ni tampoco imposible de
conseguir.
Otro de las preguntas que se han formulado está directamente relacionada con
las responsabilidades de los miembros del equipo de desarrollo. Para tratar de poner
en situación a todos los encuestados de una forma más comprensible, se ha planteado
un escenario basado en las labores de trabajo dentro de una empresa de producción
alimentaria, en la que existen varias secciones con puestos de trabajo y asignaciones
diferentes.
64
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
65
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Además, haciendo uso del ejemplo anterior, se pone a los participantes ante
una situación de conflicto en la empresa que afecta directamente a los procesos de
producción y, de esta forma, se lanza una pregunta para saber si la opción de
responsabilidades en común sería la más acertada para poder tratar lo más rápido
posible dicho problema.
66
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Ilustración 40. Gráfico de opinión sobre situación real según responsabilidad compartida [78]
67
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Otro de los aspectos sobre los cuales se ha querido conocer la opinión popular
está relacionado con el cliente, una figura que la filosofía DevOps considera de vital
importancia de cara al proceso de desarrollo.
68
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Ilustración 42. Gráfico de opinión de importancia sobre acción centrada en el cliente [80]
Ilustración 43. Gráfico de opinión de eficacia sobre acción centrada en el cliente [81]
Es por ello, por lo que en la siguiente pregunta se aprecia cómo los encuestados
consideran que el establecer la figura del cliente como central dentro del proceso de
desarrollo resulta favorable para los resultados que se obtienen a partir de ello.
69
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Si recordamos lo visto en el apartado 5 sobre los que se sustenta DevOps, es
muy importante hacer que los equipos de trabajo no se sientan presionados, por lo
que se debe contemplar y asumir que puedan darse situaciones en las que se cometan
fallos.
Ilustración 44. Gráfico de opinión sobre posibilidad de fallar durante la producción [82]
Esta vez, las opiniones relacionadas con este aspecto se encuentran mucho
más divididas, donde prácticamente la mitad de los encuestados comprenden que,
durante el desarrollo, el grupo de trabajo pueda fallar en ciertas ocasiones.
Continuando con los aspectos sobre los cuáles se han analizado opiniones, nos
encontramos con la automatización de procesos, algo que caracteriza a DevOps en
gran parte.
70
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
71
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
72
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
9. MÉTRICAS DE DEVOPS
73
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Esta métrica se obtiene registrando puntos temporales, los cuales
corresponden a la introducción de una modificación y a su puesta en disponibilidad.
Una vez hayamos obtenido estas dos referencias, se comprueba la diferencia de
tiempos entre ambas y así sabremos qué duración tiene el período de cambios. Con
estas medidas, podemos hacer una estimación promedio, pues no con todas las
modificaciones obtendremos los mismos resultados.
Esta métrica, conocida también con las siglas MTTR (Mean Time To Restore),
está basada en el período promedio de tiempo que pasa desde que se produce un
problema hasta que se soluciona y se reestablece el funcionamiento normal del
proceso de desarrollo. Entre otras cosas, representa información sobre la rapidez de
respuesta que mostraría el equipo ante una situación de conflicto, aunque este
período no dependa únicamente de este factor.
74
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
75
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
al momento de aplicar procesos de testeo y, además, reducir la necesidad de aplicar
modificaciones sobre dichas aportaciones al existir menos factores que pueda dar
lugar a fallos o conflictos.
Esta es una muy buena e importante práctica a llevar a cabo, pues el hecho de
realizar aportaciones de pequeño tamaño, pero de forma más frecuente, contribuye a
76
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
reducir las posibilidades de que aparezcan fallos y problemas, y, en caso de que esto
ocurra, se facilita el proceso de resolución de los mismos. Por esto, dicha práctica
requiere que se trabaje añadiendo las aportaciones del equipo a una rama principal
en la que estará alojado el progreso del proyecto, y para ello, se debe recurrir a un
VCS (Version Control System) que controle dichas aportaciones, comprobando los
posibles errores que puedan surgir al realizar la unión; además, junto con el VCS, se
llevan a cabo otros procesos de evaluación.
Por otro lado, tenemos la entrega continua, la cual se usa para la puesta en
disponibilidad del producto, que puede verse fraccionado en diferentes versiones. Esto
pasa por una serie de procesos, en los cuales se aplican procesos de evaluación de
forma autónoma y alojamiento de las nuevas modificaciones en el almacén de código
correspondiente.
77
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Para entender mejor esta práctica, podemos utilizar un símil, basado en una
tubería, que representa el camino que atraviesa el software pasando por una serie de
fases hasta alcanzar un estado de disponibilidad.
Aun así, a pesar de que todo esto constituye un proceso lineal, pueden darse
situaciones de fallos en cada una de las etapas que hemos visto, a las que se debe
reaccionar alertando al equipo sobre dichos conflictos para su resolución. Una vez se
hayan subsanado, se vuelve a atravesar este camino, por lo que se entiende que,
78
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
hasta que el ciclo de vida del software haya sido completado, se pueden realizar varias
repeticiones. [36]
Por otro lado, tenemos el monitoreo continuo como otra práctica de DevOps. El
monitoreo nos ofrece información acerca de la productividad del software que se ha
creado para ofrecer al cliente, con el objetivo de supervisar los niveles de eficacia y
eficiencia que caracterizan a nuestro producto para, posteriormente, y si fuese
necesario, llevar a cabo modificaciones para mejorar dichas características. Hemos
de saber que el monitoreo no lleva a cabo la búsqueda de fallos en el producto, pues
de esto se encargan los procesos de pruebas: simplemente trata de obtener la máxima
79
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
optimización del servicio que estamos ofreciendo y analizar adecuadamente qué
estamos construyendo y qué se podría perfeccionar. [37]
10.3. Automatización
En cuanto a las prácticas que hemos visto previamente, contienen procesos los
cuales son compatibles con una automatización de los mismos. Dentro de la
integración continua, los procesos de compilación y fusión de aportaciones de código,
en los cuales se produce la detección de fallos y conflictos, se realizan de forma
autónoma; en el ámbito de evaluación, los procesos de comprobación de errores
también se llevan a cabo automáticamente, pues en numerosas ocasiones, suponen
una gran dificultad o, incluso imposibilidad de realizar de forma manual, ya sea por la
gran cantidad de chequeos que haya que aplicar o por elevadas cuantías de tiempo
que haya que dedicar a estos procesos. Y, como acabamos de ver recientemente, el
despliegue también supone otro proceso que se realiza mecánicamente sin necesidad
de personal para ello. [38]
80
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
únicamente por una persona que ha llevado a cabo tanto la parte de desarrollo como
la parte de operaciones; por otro lado, debemos ser conscientes que dicha persona
no es profesional DevOps, es decir, no cuenta con una cualificación equiparable a la
de especialistas de este ámbito.
81
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Por otro lado, se ha elegido GitHub como repositorio de código, que actúa de
intermediario entre el área local de desarrollo y el servidor donde se aloja la aplicación.
Además, debido a la gran cantidad de funcionalidades que esta herramienta ofrece,
se ha utilizado para otros aspectos dentro del proceso de desarrollo, como por ejemplo
la automatización de pruebas.
82
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Como podemos apreciar, se han creado una serie de tarjetas para representar
dichas historias de usuarios, colocadas automáticamente en la columna inicial y listas
para comenzar a trabajar con ellas. A medida que atraviesen el período en el que se
desarrollen y finalicen, se irán desplazando por las columnas del tablero, por lo que el
desarrollador será consciente en todo momento sobre el estado del progreso en el
que se encuentra el proyecto.
83
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
La aplicación web ha sido escrita en PHP y MySQL, por lo que requerimos tanto
de un servidor que interprete dicho código PHP, como de un servicio de base de datos
al que se conecte la aplicación para el almacenamiento de datos que esta maneje.
Por ello, en un principio se ha optado por utilizar el paquete Xampp en su versión
8.1.6, el cual ofrece servicios de servidor Apache y base de datos MariaDB de MySQL
Server.
Como podemos ver, Xampp ofrece un panel de control para administrar y configurar
los servicios que ofrece. Para comprobar que el servidor Apache funciona
correctamente, simplemente debíamos utilizar un navegador cualquiera para
acceder a la dirección localhost, y como respuesta debería redirigirnos a la siguiente
84
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
página:
85
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Una vez vistos los requisitos, sabemos que la aplicación requiere de un registro
de usuarios para poder hacer uso de la misma, por lo que es evidente que dichos
usuarios deben ser almacenados en la base de datos, por lo que se ha creado una
tabla específica para ello con los atributos a registrar de cada uno de ellos.
86
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Una vez la base de datos haya sido creada correctamente, pasamos a
administrar GitHub. Lo primero que hemos hecho ha sido crear un nuevo repositorio
remoto, accesible mediante este enlace https://github.com/jgr00059/tfgjesus-2122
donde iremos almacenando nuestro progreso en cuanto al código de la aplicación se
refiere.
Una vez hecho esto, debemos tener en cuenta que la aplicación debe alojarse
en un servidor para que sea accesible y desplegable para cualquier usuario que desee
hacer uso de la misma. Es por ello que, en un principio, recurrimos al servicio de
hosting gratuito https://www.000webhost.com/. En nuestro caso particular, resultó
bastante fácil de manejar y administrar, pero experimentamos un problema
relacionado con el uso de Git en dicho servidor, por lo que recurrimos como segunda
opción a un servicio VPS (Virtual Private Server) de pago perteneciente a la empresa
IONOS, accesible mediante este enlace https://www.ionos.es/.
87
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Ilustración 54. Servidor Ionos contratado para alojar nuestra aplicación [92]
88
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Ilustración 55. Script del cron creado para la automatización del despliegue [93]
Ilustración 56. Directorio Crontab que contiene el comando para ejecutar el cron [94]
Una vez tenemos listo esto, accedemos al fichero crontab, el cual se encarga
de ejecutar una serie de comandos con una frecuencia de tiempo concreta. En la figura
89
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
11.9 podemos apreciar, en la última línea, el comando correspondiente a nuestro cron,
el cual dictamina que cada 5 minutos se ejecute el script que hemos visto previamente.
Por tanto, con esto quedaría automatizado el proceso de despliegue de la aplicación,
y así, comenzamos realmente con el proceso de diseño e implementación de la
aplicación web, dividido como hemos comentado anteriormente en tres incrementos.
90
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
simular como sería la automatización del proceso de pruebas como parte del uso de
la metodología DevOps. Dicho test consiste en comprobar que la conexión a la base
de datos es correcta, y para ello realiza una serie de comprobaciones muy sencillas.
91
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
92
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
acceso registradas en la base de datos para permitir o rechazar dicha conexión al
sistema.
Ilustración 62. Página principal del usuario de nuestra aplicación V1.0 [100]
93
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
tarea). Además, creamos el fichero encargado de gestionar el cierre de sesión del
sistema, el cual no tiene vista asociada.
Ilustración 63. Página de registro de nueva tarea de nuestra aplicación V1.0 [101]
Una vez hayamos llevado a cabo todo esto, subimos este contenido al
repositorio Git para aplicar las pertinentes pruebas y, posteriormente, incluirlo en la
rama release para su despliegue automático en el servidor. Así, habremos concluido
con las historias de usuario más prioritarias del tablero que creamos para la gestión
del proyecto, pudiendo así ofrecer una versión de la aplicación mínimamente funcional
(v1.0).
94
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
95
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Ilustración 67. Página de registro de nueva tarea de nuestra aplicación V2.0 [105]
Lo mismo ocurre con las páginas de registro de usuarios (figura 11.18), login
(figura 11.19) y registro de nuevas tareas (figura 11.20), las cuáles ofrecen ahora
formularios mucho más cuidados y ordenados.
96
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Ilustración 68. Página principal del usuario de nuestra aplicación V2.0 [106]
97
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
Esta vista, además, ofrece al usuario la información completa sobre una tarea
en concreto, además de la opción previamente mencionada de eliminar dicho
elemento del sistema.
Para finalizar, se ha creado una última versión de la aplicación, la cual tan sólo
ha incluido una nueva funcionalidad que permite al usuario eliminar su cuenta del
sistema y, en consecuencia, las tareas que haya almacenado en la misma.
Como hemos podido ver, se ha desarrollado una aplicación web muy simple,
pero hemos de recordar que, con la realización de este ejemplo práctico no
pretendíamos demostrar tanto habilidades de programación y diseño web, sino la
capacidad de seguir la metodología DevOps para el desarrollo de proyectos software,
automatizando en todo momento y siempre que sea posible los distintos procesos
necesarios para llevar a cabo dicho desarrollo y ofrecer continuamente resultados al
cliente, motivo por el cual se ha decidido dividir el proyecto en tres incrementos con
pocas actualizaciones en lugar de tan sólo dos.
12. CONCLUSIONES
Una vez hayamos concluido con el trabajo, obtendremos, como resultado del
mismo, una serie de conclusiones sobre nuevos conocimientos acerca del tema
elegido y/o más ámbitos relacionados con el mismo, y sobre el mismo trabajo
realizado.
98
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
dediquen todos sus esfuerzos para adaptarse a la metodología y, en la medida de lo
posible, cumplir con la filosofía DevOps y con los principios que la definen.
BIBLIOGRAFÍA
[4] Paul, F. (2014). The incredible true story of how DevOps got its name.
Recuperado el 21 de mayo de 2022, de https://newrelic.com/blog/nerd-life/devops-
name
99
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
[8] Muradas, Y. (2020). Qué es Jira. Recuperado el 28 de abril de 2022, de
https://openwebinars.net/blog/que-es-jira/
[9] Nissen, R. (2021). Dando tus primeros pasos: Conceptos básicos de Jira.
Recuperado el 04 de mayo de 2022, de https://blog.deiser.com/es/primeros-pasos-
con-conceptos-basicos-de-jira
[10] Sentrio. (2021). Introducción a Jenkins: ¿qué es, para qué sirve y cómo
funciona?. Recuperado el 21 de abril de 2022, de https://sentrio.io/blog/que-es-
jenkins/
[18] Redacción KeepCoding. (2022). ¿Qué son los roles de Ansible y para qué
sirven?. Recuperado el 24 de abril de 2022, de https://keepcoding.io/blog/que-son-los-
roles-de-ansible-y-para-que-sirven/
100
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
[19] North Team. (2022). ¿Qué es Nagios?. Recuperado el 25 de abril de 2022, de
https://www.north-networks.com/que-es-nagios/
[23] Schwaber, K., Sutherland, J. (2016). La guía definitive de Scrum: las reglas del
juego. Recuperado el 20 de abril de 2022, de
https://scrumguides.org/docs/scrumguide/v2016/2016-Scrum-Guide-Spanish.pdf
101
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
[29] Mell, E. (2020). Supere estos cinco desafíos DevOps. Recuperado el 11 de
mayo de 2022, de https://www.computerweekly.com/es/cronica/Supere-estos-cinco-
desafios-DevOps
[30] 6 essential DevOps roles you need on your team. Recuperado el 12 de mayo
de 2022, de https://www.pagerduty.com/resources/learn/essential-devops-roles/
[34] Sentrio. (2021). Cómo medir el éxito DevOps a través de las Four Key Metrics.
Recuperado el 19 de mayo de 2022, de https://sentrio.io/blog/four-key-
metrics/#:~:text=M%C3%A9tricas%20DevOps%3A%20Four%20Key%20Metrics&tex
t=Estas%20m%C3%A9tricas%20se%20pueden%20usar,y%20consiguen%20una%2
0mayor%20eficiencia.
[36] Cómo construir una tubería CI/CD desde cero. Recuperado el 20 de mayo de
2022, de https://programmerclick.com/article/4731859977/
102
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
[38] (2019). Claves de los procesos de automatización en DevOps. Recuperado el
20 de mayo de 2022, de https://oasys-sw.com/claves-de-los-procesos-de-
automatizacion-en-devops/
[46] Fuente:
https://docs.ansible.com/ansible/latest/user_guide/sample_setup.html#sample-
directory-layout
[47] Fuente:
https://docs.ansible.com/ansible/latest/user_guide/sample_setup.html#sample-task-
and-handler-files-in-a-function-based-role
103
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
[54] Fuente: https://comparecamp.com/kanban-tool-review-pricing-pros-cons-
features/
104
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
[70] Fuente: Imagen de autoría propia
105
Escuela Politécnica Superior de Jaén
Jesús García Rodríguez Introducción a DevOps: análisis de la
metodología y ejemplo de aplicación
práctica
[91] Fuente: Imagen de autoría propia
106
Escuela Politécnica Superior de Jaén