Gestionando el ciclo de vida de aplicaciones MEAN desplegadas en contenedores Docker con Azure DevOps

Coronado Castro, Pablo (2019). Gestionando el ciclo de vida de aplicaciones MEAN desplegadas en contenedores Docker con Azure DevOps. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S.I. de Sistemas Informáticos (UPM), Madrid.

Description

Title: Gestionando el ciclo de vida de aplicaciones MEAN desplegadas en contenedores Docker con Azure DevOps
Author/s:
  • Coronado Castro, Pablo
Contributor/s:
  • Díaz Fernández, Jessica
Item Type: Final Project
Degree: Grado en Ingeniería del Software
Date: 2019
Subjects:
Freetext Keywords: Desarrollo de software
Faculty: E.T.S.I. de Sistemas Informáticos (UPM)
Department: Sistemas Informáticos
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img]
Preview
PDF - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (6MB) | Preview
[img] Archive (ZIP) (Anexos) - Users in campus UPM only
Download (10MB)

Abstract

Las empresas de desarrollo de software buscan constantemente producir productos en menos tiempo para satisfacer las necesidades del mercado actual. El auge de enfoques como Agile & Lean Software Development han producido mejoras considerables en la velocidad y calidad de los productos lanzados al mercado. No obstante, las empresas en muchas ocasiones ven frenadas estás mejoras debido a la falta de comunicación y colaboración entre los diferentes departamentos de TI. Uno de los casos más evidentes de esta división es la que se da entre los desarrolladores de software y los equipos de operaciones que gestionan la infraestructura donde se despliegan las aplicaciones desarrolladas. La diferencia de objetivos y la falta de comunicación entre estos equipos producen un distanciamiento entre ellos que acaba generando silos. Por un lado, desarrollo tiene por objetivo acelerar el time-to-market del mayor número posible de características identificadas por negocio, mientras que el equipo de operación persigue la estabilidad del sistema y servicios operados y los cambios rápidos ponen en peligro esa estabilidad. Este choque de objetivos y de entendimiento suele repercutir en un aumento de los tiempos de entrega y un empeoramiento de la calidad de los productos o servicios, lo cual frena la innovación. Para abordar este problema, DevOps se puede definir como un movimiento organizativo y cultural que tiene como objetivo promover la colaboración entre los equipos de desarrollo de software (Dev) y de operación del software (Ops). DevOps defiende, entre otros principios, ciclos muy rápidos de desarrollo y despliegue, que permitan obtener un feedback muy rápido del cliente con el fin de mejorar el desarrollo e innovar muy rápido (o fracasar muy rápido). Para ello, es básico la automatización y la monitorización de todos los pasos de la construcción del software, desde la integración, las pruebas, hasta el despliegue y entrega de versiones, así como la gestión ágil de la infraestructura donde se despliega este software. La visión end-to-end y la responsabilidad compartida de todas las fases del ciclo de vida del producto o servicio hasta su despliegue y operación por parte de todo el equipo DevOps es clave para acabar con los silos que frenaban la innovación. Este proyecto aborda un ciclo de vida de aplicaciones desarrolladas con el stack tecnológico MEAN (abreviación de MongoDB, Express, Angular y NodeJS) basado en los principios y prácticas DevOps. En particular, este proyecto aborda la automatización del pipeline de despliegue de aplicaciones MEAN desplegadas en contenedores Docker. Mediante el desarrollo y despliegue de una aplicación MEAN se ilustra paso a paso la definición y configuración del pipeline de construcción, prueba y despliegue mediante Azure DevOps. Azure DevOps es un servicio en la nube que proporciona servicios y herramientas para apoyar el desarrollo y entrega continua de software. El pipeline de despliegue definido ha sido validado en un caso de estudio que consiste en el desarrollo de una aplicación web que permite a estudiantes y profesores complementar la docencia mediante la gestión de cursos. La automatización del pipeline de despliegue permite a los equipos gestionar el ciclo de vida completo del producto software generando software compilado, probado y preparado para desplegarse en producción en cualquier momento a través de un proceso totalmente automatizado. Abstract: Software development companies are constantly looking to produce new products in less time to meet the needs of the current market. Approaches such as Agile & Lean Software Development have improved the speed and quality of released products. However, the lack of communication and collaboration between different IT departments, such as the division between developers and operations, slow down improvements. Traditionally, the two departments work towards different objectives, becoming silos. Development encourage change to build new features and accelerate time-to-market, whereas operations resist change to ensure operational stability in production environments. These contradictory purposes negatively affect to delivery time and product quality, which slows down innovation. DevOps is about breaking down the silos of development and operations. It can be defined as an organizational and cultural movement that aims to promote collaboration between software development (Dev) and software operation (Ops) teams. DevOps advocates, among other principles, fast development and deployment cycles, which allows fast feedback from the customer in order to innovate faster (or fail faster). Automating and monitoring all the steps of software product lifecycle, from integration, testing, to deployment and delivery, as well as the agile infrastructure management, are essential practices. The end-to-end vision and shared responsibility of all stages of the software lifecycle by the entire DevOps team are key to breaking the silos that hamper innovation. This project addresses the lifecycle of MEAN applications (short for MongoDB, Express, Angular and NodeJS) based on DevOps principles and practices. This project defines the build and deployment pipelines for MEAN applications deployed in Docker containers. It is illustrated, step by step, the definition and configuration of a pipeline for building, testing, and deployment a MEAN application by using Azure DevOps. Azure DevOps is a cloud service that provides services and tools to support continuous integration and delivery (CI/CD). The CI/CD pipelines have been validated in a case study for a web application that allows students and teachers managing courses. The automation of deployment pipelines enables teams to manage the entire software product lifecycle by generating software that is compiled, tested, and ready to be deployed into production at any time through a fully automated process.

More information

Item ID: 54268
DC Identifier: http://oa.upm.es/54268/
OAI Identifier: oai:oa.upm.es:54268
Deposited by: Biblioteca Universitaria Campus Sur
Deposited on: 13 Mar 2019 07:54
Last Modified: 13 Mar 2019 07:54
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM