Table Of ContentUNIVERSIDAD TÉCNICA PARTICULAR DE LOJA
La Universidad Católica de Loja
ÁREA TÉCNICA
TITULACIÓN DE INGENIERO EN INFORMÁTICA
Definición de un ambiente de construcción de aplicaciones empresariales a
través de Devops, Microservicios y Contenedores
TRABAJO DE FIN DE TITULACIÓN
AUTORA: Farías Alejandro, Ivonne Karina
DIRECTOR: Cabrera Silva, Armando Augusto, Ing.
CENTRO UNIVERSITARIO SALINAS
2017
Esta versión digital, ha sido acreditada bajo la licencia Creative Commons 4.0, CC BY-NY-
SA: Reconocimiento-No comercial-Compartir igual; la cual permite copiar, distribuir y
comunicar públicamente la obra, mientras se reconozca la autoría original, no se utilice con
fines comerciales y se permiten obras derivadas, siempre que mantenga la misma licencia al
ser divulgada. http://creativecommons.org/licenses/by-nc-sa/4.0/deed.es
Septiembre, 2017
DECLARACIÓN DE AUTORÍA Y CESIÓN DE DERECHOS
“Yo Farías Alejandro Ivonne Karina declaro ser autora del presente trabajo de fin de
titulación: Definición de un ambiente de construcción de aplicaciones empresariales a través
de Devops, Microservicios y Contenedores, de la Titulación de Ingeniero en Informática,
siendo el Ing. Armando Augusto Cabrera Silva director del presente trabajo; y eximo
expresamente a la Universidad Técnica Particular de Loja y a sus representantes legales de
posibles reclamos o acciones legales. Además certifico que las ideas, conceptos,
procedimientos y resultados vertidos en el presente trabajo investigativo, son de mi
exclusiva responsabilidad.
Adicionalmente declaro conocer y aceptar la disposición del Art. 88 del Estatuto Orgánico de
la Universidad Técnica Particular de Loja que en su parte pertinente textualmente dice:
“Forman parte del patrimonio de la Universidad la propiedad intelectual de investigaciones,
trabajos científicos o técnicos y tesis de grado o trabajos de titulación que se realicen con el
apoyo financiero, académico o institucional (operativo) de la Universidad”.
f.
Autor Ivonne Karina Farías Alejandro
Cédula 0918914169
ii
DEDICATORIA
Dedico este trabajo de tesis a Dios, el principal motor de mi vida y mi ayuda en todo
momento.
A mi familia quienes me han apoyado incondicionalmente, cada uno ha representado un
pilar fundamental para poder avanzar esta travesía.
iii
AGRADECIMIENTO
Agradezco a Dios en primer lugar por ser mi guía y mi fortaleza, por renovar mis fuerzas
cada día.
Agradezco a mi familia y amigos, a cada miembro de ella, mis padres, tíos, abuelitos,
primos, por estar a mi lado, por su apoyo y comprensión.
Agradezco a mis maestros y compañeros de la Universidad Técnica Particular de Loja por
compartir sus conocimientos y a la distancia hemos podido apoyarnos para poder cumplir
una nueva meta.
Un agradecimiento especial a mi director de tesis el Ingeniero Armando Cabrera por sus
consejos y la dirección respectiva para poder culminar este trabajo.
iv
INDICE DE CONTENIDOS
DECLARACIÓN DE AUTORÍA Y CESIÓN DE DERECHOS ................................................ II
DEDICATORIA .................................................................................................................... III
AGRADECIMIENTO ............................................................................................................ IV
RESUMEN ............................................................................................................................ 1
ABSTRACT .......................................................................................................................... 2
INTRODUCCIÓN .................................................................................................................. 3
OBJETIVOS ......................................................................................................................... 5
General ............................................................................................................................. 5
Específicos ........................................................................................................................ 5
CAPÍTULO I ......................................................................................................................... 6
MARCO TEÓRICO ............................................................................................................... 6
1.1 Arquitectura de Software ............................................................................................. 7
1.2 Diseño de la Arquitectura ............................................................................................ 9
1.2.1 Estilos de Arquitectura .......................................................................................... 9
1.2.2 Arquitectura en capas ......................................................................................... 10
1.2.3 Arquitectura Orientada a Servicios ...................................................................... 12
1.2.3.1 Vista Lógica de la Arquitectura SOA ............................................................. 12
1.2.3.2 Ciclo de Vida de un Servicio ......................................................................... 14
1.2.3.3 Principios SOA ............................................................................................. 15
1.2.4 Arquitectura de Microservicios ............................................................................ 15
1.2.4.1 Despliegue de Microservicios ....................................................................... 17
1.2.4.2 Docker .......................................................................................................... 18
v
1.2.4.3 Diseño de comunicación entre servicios ...................................................... 21
1.3 Patrones de Arquitectura .......................................................................................... 21
1.3.1 Patrón arquitectónico Modelo Vista Controlador (Model-View-Controler) ............ 22
1.3.2 Diseño para una Estructura en Capas ................................................................. 23
1.3.2.1 Capa de Presentación .................................................................................. 24
1.3.2.2 Capa de Negocio .......................................................................................... 25
1.3.2.3 Capa de Datos .............................................................................................. 25
1.3.2.4 Capa de Servicios ........................................................................................ 26
1.4 Vista Arquitectónica de Philippe Kruchten-Modelo 4+1 .............................................. 27
1.5 Métodos Ágiles y DevOps ......................................................................................... 29
1.5.1 Scaled Agile (SAFe) ............................................................................................ 29
1.5.2 Scrum ................................................................................................................. 30
1.5.2.1 Principios de Scrum ...................................................................................... 30
1.5.2.2 Fases y Procesos de Scrum ......................................................................... 31
1.5.2.3 Framework de Scrum ................................................................................... 32
1.6 Prácticas ágiles de Desarrollo de Software ................................................................ 33
1.6.1 Entrega Continua ................................................................................................ 34
1.6.2 Despliegue Continuo ........................................................................................... 35
1.6.3 Integración Continua ........................................................................................... 35
1.7 Movimiento DevOps .................................................................................................. 36
1.7.1 Origen ................................................................................................................. 38
1.7.2 Definición y Objetivo ........................................................................................... 38
1.8 Cultura Devops .......................................................................................................... 40
1.8.1 Personal .............................................................................................................. 40
1.8.2 Procesos ............................................................................................................. 41
1.8.3 Tecnología .......................................................................................................... 42
1.9 Etapas del Pipeline de DevOps ................................................................................. 44
vi
CAPÍTULO II ...................................................................................................................... 46
IMPACTO DE LOS MICROSERVICIOS Y CONTENEDORES ........................................... 46
2.1 Arquitectura de Microservicios ................................................................................... 47
2.1.1 Características .................................................................................................... 47
2.1.2 REST (Representational State Transfer) ............................................................. 48
2.2 Despliegue de Microservicios en Contenedores ........................................................ 50
2.3 Contenedores ............................................................................................................ 51
2.3.1 Componentes ...................................................................................................... 51
2.3.2 Herramientas ...................................................................................................... 52
2.4 Beneficios de la integración de Microservicios y Contenedores en las aplicaciones .. 52
2.4.1 Implementación Independiente ........................................................................... 52
2.4.2 Cambios pequeños, impactos pequeños ............................................................. 53
2.4.3 Despliegue, rollback y aislamiento de fallos ........................................................ 53
2.4.4 Escalabilidad ....................................................................................................... 54
CAPÍTULO III...................................................................................................................... 55
ESQUEMA DE INTEGRACIÓN ENTRE DEVOPS, MICROSERVICIOS Y
CONTENEDORES .............................................................................................................. 55
3.1 Esquema de integración ............................................................................................ 57
3.2 Fases de DevOps ...................................................................................................... 58
3.3 Scrum como Metodología ágil ................................................................................... 59
3.4 Integración Continua ................................................................................................. 62
3.4.1 Requerimientos para implementar Integración Continua ..................................... 63
3.4.1.1. Control de Versiones ................................................................................... 63
3.4.1.2. Estructura Automatizada.............................................................................. 64
3.4.1.3. Acuerdo del equipo ...................................................................................... 65
3.5 Entrega Continua ....................................................................................................... 65
vii
3.5.1 Procesos de la Entrega Continua ........................................................................ 66
3.6 Despliegue Continuo. ................................................................................................ 67
3.6.1 Pipeline de Despliegue Continuo ........................................................................ 67
3.6.2 Entrega Continua-Despliegue Continuo, Microservicios y Contenedores ............ 69
3.7 Pruebas Continuas .................................................................................................... 71
3.8 Monitoreo Continuo ................................................................................................... 72
3.8.1 Retroalimentación Continua ................................................................................ 72
3.9 Caso de Estudio ........................................................................................................ 73
CAPÍTULO IV ..................................................................................................................... 77
HERRAMIENTAS REQUERIDAS PARA LA CONSTRUCCIÓN DEL AMBIENTE DE
DESARROLLO ................................................................................................................... 77
4.1 Consideraciones ........................................................................................................ 79
4.2 Herramientas que abarcan el ciclo de vida de DevOps y los flujos de Integración-
Entrega-Despliegue Continuo .......................................................................................... 79
4.2.1 Planificación ........................................................................................................ 81
4.2.2 Codificación ........................................................................................................ 81
4.2.2.1 Control de Versiones .................................................................................... 82
4.2.3 Construcción ....................................................................................................... 85
4.2.3.1 Análisis de Código ........................................................................................ 88
4.2.3.2 Repositorio ................................................................................................... 91
4.2.4 Pruebas .............................................................................................................. 93
4.2.5 Despliegue .......................................................................................................... 95
4.2.6 Monitoreo ............................................................................................................ 98
4.2.7 Servidores de Integración/Entrega Continua ..................................................... 100
CAPÍTULO V .................................................................................................................... 104
MODELO PARA LA CONSTRUCCIÓN DEL AMBIENTE DE DESARROLLO ................. 104
viii
5.1 Modelo basado en Herramientas con licencias Open Source .................................. 106
5.2 Modelo basado en Herramientas con licencias Propietarias .................................... 114
CONCLUSIONES ............................................................................................................. 121
RECOMENDACIONES ..................................................................................................... 122
BIBLIOGRAFÍA ................................................................................................................ 123
ANEXOS ........................................................................................................................... 128
INDICE DE FIGURAS
Figura 1: Descripción de Arquitectura de un estilo específico ............................................... 8
Figura 2: Tipos de componentes de la arquitectura en capas ............................................. 10
Figura 3: Vista Lógica de la Arquitectura SOA .................................................................... 13
Figura 4: Ciclo de vida de un Servicio ................................................................................. 14
Figura 5: Arquitectura de Microservicios con múltiples lenguajes y tecnologías .................. 16
Figura 6: Despliegue en el contenedor ................................................................................ 18
Figura 7: Despliegue en contenedores Docker.................................................................... 19
Figura 8. Componentes de Docker ...................................................................................... 20
Figura 9: Modelo vista controlador (MVC) ........................................................................... 23
Figura 10: Modelo 4 + 1 Vistas............................................................................................ 27
Figura 11: Framework de Scrum ......................................................................................... 32
Figura 12: Arquitectura de referencia de DevOps ............................................................... 36
Figura 13: ¿Qué es DevOps? ............................................................................................. 39
Figura 14: Procesos Continuos DevOps ............................................................................. 40
Figura 15: Etapas del Pipeline de DevOps .......................................................................... 44
Figura 16: Cachés intermedios en una Arquitectura REST ................................................. 49
Figura 17: Despliegue de Microservicio en un Contenedor ................................................. 50
ix
Description:de Devops, Microservicios y Contenedores, de la Titulación de Ingeniero en Informática, siendo el Ing. Scrum divide el tiempo en periodos cortos de trabajo conocidos como Sprints, generalmente en una o dos Hudson, TeamCity, Bambú, Team Foundation Server, Chef, Puppet, Ansible, Docker.