Diseño e implementación de un sistema de aprovisionamiento automático de herramientas DevOps para una organización dedicada al desarrollo de software

Muchas empresas dedicadas al desarrollo de software tienen la necesidad de automatizar tareas tales como el aprovisionamiento y configuración de sus diferentes servidores o máquinas de trabajo, automatizar este tipo de tareas puede hacer que la productividad de los desarrolladores, analistas y perso...

Full description

Autores:
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2018
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/14203
Acceso en línea:
http://hdl.handle.net/11349/14203
Palabra clave:
Aprovisionamiento
Automático
DevOps
Ambientes de trabajo
Ansible
Spring Boot
Ingeniería Telemática - Tesis y disertaciones académicas
Desarrollo de programas para computador
Ingeniería de software
Transferencia de estado representacional (arquitectura de software)
Provisioning
Automated
DevOps
Work environments
Ansible
Spring boot
Rights
License
Atribución-NoComercial-SinDerivadas 4.0 Internacional
Description
Summary:Muchas empresas dedicadas al desarrollo de software tienen la necesidad de automatizar tareas tales como el aprovisionamiento y configuración de sus diferentes servidores o máquinas de trabajo, automatizar este tipo de tareas puede hacer que la productividad de los desarrolladores, analistas y personal de operaciones incremente sustancialmente.El presente trabajo de informe mostrará el proceso de desarrollo e implementación del sistema PROVISIONER para la creación y administración de ambientes de trabajo, comprendidos en: ambiente de desarrollo, ambiente de pruebas y ambiente de producción; siguiendo la metodología RUP, basándose en el patrón de arquitectura MVC y desarrollado en STS IDE bajo el lenguaje Java Spring Boot en el Back-End y Angular 6/Ionic 3 en el Front-End.Spring Boot permite desarrollar servicios HTTP, dando como resultado una serie de interfaces llamadas REST, que permiten obtener información en formato JSON, el cual es mucho más liviano comparado con el formato XML.En conjunto con el lenguaje java, el sistema PROVISIONER se desarrolló con Angular 6 en el proyecto Front-End, un framework de JavaScript que permite, precisamente, realizar peticiones HTTP sin dificultad alguna hacia el Back-End y, una vez realizada la petición evita sobrecargar con peticiones al servidor.El desarrollo del presente proyecto permite que cualquier empresa pueda realizar el aprovisionamiento de “x” cantidad de máquinas y/o servidores en cada ambiente de trabajo, sin tener que invertir horas de trabajo humano realizando estas tareas, lo que produce mayor productividad y reduce el tiempo ocioso en los integrantes de los equipos de trabajo, además de mantener integración continua en los proyectos de la empresa.El aprovisionamiento de los ambientes de desarrollo y pruebas se realiza en máquinas conectadas en redes de área local, para el ambiente productivo, el sistema se conecta a instancias EC2 Amazon en la nube que contiene el producto estable de la empresa y mantiene aislado al mismo.Los ambientes de trabajo ayudan a aumentar la organización de un proyecto, y reducir los riesgos debido a errores técnicos y humanos que puedan afectar de forma adversa a clientes y propios. Estos están organizados a tres capas: ambiente de desarrollo, ambiente de pruebas y, por último, ambiente de producción.El proyecto fue diseñado siguiendo la metodología RUP, basándose en el patrón de arquitectura MVC orientada a Microservicios, con el fin de que en un futuro permita la posibilidad de expandir o implementar nuevos módulos en el aplicativo. De igual forma se muestran los diagramas UML que describen mejor la funcionalidad de cada uno de los módulos del aplicativo, sus requerimientos técnicos y el manual de usuario.Adicionalmente se utiliza como herramienta clave Ansible, un software libre que logra realizar instalación y configuración de software en múltiples terminales; cuyo funcionamiento se basa en archivos llamados Task con extensión YML, que contienen el paso a paso del qué y cómo realizar aprovisionamiento.