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

Fecha

Autor corporativo

Título de la revista

ISSN de la revista

Título del volumen

Editor

Compartir

Altmetric

Resumen

Many companies dedicated to the development of software have the need to automate tasks such as the provisioning of their different servers or machines, automating this type of tasks can cause the productivity of the developers, analysts and maintenance personnel to increase substantially. This report will show the process of development and implementation of the PROVISIOINER system for the creation and administration of work environment environments, including: development environment, testing environment and production environment, following the RUP methodology, based on the MVC architecture pattern and developed in STS IDE under the Java Spring Boot language in the Back-End, which allows to develop HTTP services, resulting in a series of interfaces called REST, which allow obtaining information in JSON format, which is much lighter than the XML data format. In conjunction with the java language, the PROVISIONER system was developed with Angular 6 in the Front-End project, a JavaScript framework that allows, precisely, to make HTTP requests without any difficulty towards the Back-End and, once the request is made, it avoids performing new requests to the server. The development of this project allows any company to perform the supply of "x" number of machines and / or servers, without having to invest hours of human work performing these tasks, which produces greater productivity and reduce idle time in the members of work teams. The provisioning of the development and test environments is done in machines connected in local area networks, for the productive environment, the system connects to Amazon EC2 instances in the cloud that contains the stable product of the company and keeps it isolated. Work environments help reduce risks due to technical errors that can adversely affect customers and employees, and are organized into three layers: development environment, testing environment and, finally, production environment. The project was designed following the RUP methodology, based on the MVC architecture standard, so that in the future it allows the possibility of expanding or implementing new modules in the application. Likewise, the UML diagrams that best describe the functionality of each of the modules of the application, its technical requirements and the user manual are shown. Additionally, Ansible is a key tool, free software that manages installation and configuration of software in multiple terminals, whose operation is based on files called Task with YML extension, which contain the step-by-step of how and how to perform provisioning.

Descripción

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.

Palabras clave

Aprovisionamiento, Automático, DevOps, Ambientes de trabajo, Ansible, Spring Boot

Materias

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)

Citación