Sunteți pe pagina 1din 24

UNIVERSIDAD POLITÉCNICA DE

JUVENTINO ROSAS
TESINA

“DESARROLLO DE MICROSERVICIOS A TRAVÉS DE


TECNOLOGÍAS WEB”

QUE PARA OBTENER EL TÍTULO DE


INGENIERO EN TELEMÁTICA

Presenta:
Francisco Fernando Ruiz Plascencia
Asesores:
M.I. Rebeca Eugenia Aguilar Durón
M.I. Juan Heriberto Gallegos Galindo

Santa Cruz de Juventino Rosas, Gto. 04 de Octubre de 2019


Agradecimientos

Primeramente, le agradezco a Dios, pues me ha dado la vida, la inteligencia, la fuerza


y la determinación para cumplir mis metas y propósitos y que él conoce el camino que he
llevado y lo que he crecido. A mis padres, Rosa Elena Plascencia Aguado y Jorge Ruiz Lo-
renzo, quienes se han esforzado por darme lo mejor para crecer como persona en todos los
aspectos, y que sus desvelos y sus esfuerzos por darnos lo mejor a mi y a mi hermano, es
algo que no se puede pagar ni con el diamante mejor valuado que pueda existir. Agradezco
a mi hermano Francisco Javier Ruiz Plascencia, que, a pesar de su carácter fuerte, siem-
pre me ha considerado lo que me ha faltado a lo largo de mi formación profesional. A mis
abuelos, quienes han visto por lo que he llegado a necesitar y que lo han procurado, ya que
eso me ha permitido poder concluir satisfactoriamente. También debo a agradecer a mis
familiares, quienes me han llegado a apoyar no solo ecnonómicamente, sino que a través
de sus consejos, lo cuales me han sido de mucha utilidad, y que en más de una ocasión
he aplicado dentro de mi formación y han sido de provecho. A mis amigos, lo que están
y los que no, porque aún en los momentos más complicados que tuvimos todos, siempre
hubo apoyo desinteresado para salir adelante. A los profesores M. C. Vı́ctor Lauro Pérez
Garcı́a y al M.I. Juan Heriberto Gallegos Galindo, quienes fueron mis tutores académi-
cos durante mi formación académico-profesional, y que siempre estuvieron al tanto de mi
desempeño dentro de la Universidad para guiarme por hacer las cosas de mejor forma y a
tener mejor sentido de responsabiliad, ası́ como darme motivación y consejos para superar
mis obstáculos. Al Dr. en C., Juan Israel Yañez Vargas, quien es uno de los profesores de
la academia que más admiro y respeto, y que gracias a sus consejos profesionales y perso-
nales, he logrado crecer mental y profesionalmente hablando y por descubrir capacidades
en mı́ que me ha propuesto a retar. A mi asesora, la M. en I. Rebeca Eugenia Aguilar
Durón, que me ha dado consejos para poder desempeñar como desarrollador y que me ha
apoyado en ese aspecto y además de permitirme crecer profesionalmente. Más que maes-
tros, algunos fueron realmente mis amigos, por lo cual estoy completamente agradecido
con ellos. Por cada una de las personas que he mencionado, muchas gracias.

I
Dedicatoria

Dedicado a
A Dios, y a mis padres.
A Dios porque ha estado conmigo a cada paso que doy
y porque me ha visto crecer,
cuidándome y dándome fortaleza para continuar.
A mis padres y mi hermano, quienes han sido el gran apoyo que tengo
para poder llegar a este punto de mi carrera
y que con sus esfuerzos se valora inmensamente.
A mis abuelos, que siempre han estado conmigo desde mi infancia,
y que su compañia y dedicación es algo que nutre siempre.
A ti Montserrat, que donde quiera que estés allá arriba,
sepas que esto va por ti.
A ustedes, con amor.

II
Resumen

III
Abstract

IV
Índice general

Índice de figuras VII

1. Introducción 1
1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Definición del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4.1. Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4.2. Objetivos Particulares del Desarrollo del sistema . . . . . . . . . . . 3
1.5. Contribuciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.6. Organización de esta tesina . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2. Marco Teórico 5
2.1. Angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1. Aplicaciones SPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.2. Antecedentes de Angular: AngularJS . . . . . . . . . . . . . . . . . 6
2.2. Spring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

V
2.3. Inversión de control (IOC) e Inyección de dependencia (DI) en Spring . . . 7
2.4. Apache Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5. Caracterı́sticas de Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.6. MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3. Análisis y Diseño 11
3.1. Análisis de Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.1. Etapas del Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2. Desarrollo Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4. Descripción de la Implementación 12
4.1. Sección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2. Aplicación de Escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5. Pruebas y Resultados 13
5.1. De la Aplicación de Escritorio . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.1.1. Validación de los Registros en la Base de Datos . . . . . . . . . . . 13

6. Conclusiones 14
6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.2. Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.2.1. Del Sitio Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.2.2. De la Aplicación de Escritorio . . . . . . . . . . . . . . . . . . . . . 14

VI
Índice de figuras

VII
Capı́tulo 1

Introducción

En este capı́tulo se presentan los antecedentes y el contexto de la problemática para


conocer el enfoque principal. Con base en la solución propuesta y el establecimiento de
objetivos general y particulares, se puede considerar el panorama general que se estará
dando seguimiento.

1.1. Motivación

Dicha tesina, se centra en el desarrollo de un sistema, que su objetivo puede llegar


a pasar desapercibido, sin embargo, éste resulta peculiar al momento de presentar su
caso de uso e implementarse dentro de la misma fábrica en donde se ha encontrado en
desarrollo. Algunas de las preguntas clave que surgen es: ¿Qué impacto tiene al momento
de implementarse dentro de la empresa? ¿Realmente colabora y permite a conocer el grado
de control y rentabilidad de la empresa? Es importante destacar los objetivos, los cuáles
se abordarán mas adelante, para conocer realmente cual es el concepto de dicho sistema.

1
1.2. Antecedentes

1.3. Definición del Problema

Vision Consulting, al ser una de las empresas de TI con mayor número de clientes
en la república mexicana basada en soluciones de negocio, debe de tener un grado de
control del flujo de actividades que permita conocer cual es el estatus actual o en que
fase de desarrollo se encuentra cada proyecto, lo que también permite como resultado la
rentabilidad de la empresa, ası́ como el impacto que pueda tener algún proyecto, como
brevemente se pueden mencionar los proyectos en desarrollo de Sura, o las versiones
concluidas o actualizaciones de los multivendores de Isban, correspondientes a Banco
Santander. El Sistema de Control y Rentabilidad (por sus siglas SICORE), desarrollado
de forma interna en la fábrica de software de Vision Consulting, se destina a ser utilizado
por los desarrolladores, independiente de la categorı́a, que forman parte de la célula de
Tecnologı́a, considerando que funge en el rol de administrador, el MasterChief Developers
de dicha célula. La implementación de éste sistema, permite conocer de forma particular, el
flujo de actividades de cada desarrollador, y en el proyecto que corresponde. La necesidad
de su implementación, surge debido a que no se conocı́a como se tenı́a el flujo general de
las actividade y asignaciones por cada proyecto, lo que podı́a repercutir en demoras en
cumplimiento de las actividades de finalización de asignaciones.

2
1.4. Objetivos

1.4.1. Objetivo General

El objetivo general del proyecto es desarrollar e implementar un sistema presentado


como un sitio web, que permita llevar a cabo por usuario el registro de actividades rea-
lizadas por jornada laboral, a través de la construcción de microservicios para consultas
y catálogos (back-end) enlazados a través del entorno visual para el usuario (front-end)
como parte de las soluciones de rentabilidad de Vision Consulting.

1.4.2. Objetivos Particulares del Desarrollo del sistema

Conocer y estructurar la lógica de negocio de los microservicios para ser incorporado


al sistema de registro.

Construir los microservicios previamente definidos para sentencias y consultas que


conribuyan al funcionamiento del sistema de registro.

Realizar las pruebas de las sentencias, ası́ como querys de consulta para comprobar
el correcto funcionamiento de los microservicios.

Realizar las validacionez correspondientes a través de la base de datos, considerando


el inicio de la validación desde el back-end.

1.5. Contribuciones

Las contribuciones esperadas tras el desarrollo de las estadı́as en la empresa Vision


Consulting son las siguientes:

3
Microservicios construidos para la base de datos.

Una interfaz gráfica en conjunto con lo mencionado anteriormente para su imple-


mentación.

1.6. Organización de esta tesina

Capı́tulo 1. Introducción: Este primer capı́tulo, presenta la problemática res-


pecto a la situación dentro de la empresa, donde ya existe una implementación, sin
embargo, las nuevas fases de implementación, deben de traer consigo las mejora o
nuevas funcionalidades, las cuales, se plantean en los objetivos para su cumplimien-
to.

Capı́tulo 2. Marco Teórico: El segundo capı́tulo, define los conceptos fundamen-


tales que se manejarán y que sustentan al trabajo realizado, además de mostrar
a grandes rasgos, la arquitectura del sistema y la estructura de comportamiento
respecto a los servicios REST para considerar la viabilidad del desarrollo de los
microservicios.

Capı́tulo 3. Análisis y Diseño:

Capı́tulo 4. Descripción de la Implementación:

4
Capı́tulo 2

Marco Teórico

En este capı́tulo se presentan los conceptos fundamentales necesarios para el desarrollo


del presente trabajo de tesina, tanto para el desarrollo de front-end, como de back-end
del sistema de registro.

2.1. Angular

Angular es un framework de desarrollo para JavaScript creado por Google. La fina-


lidad de Angular es la accesibilidad el desarrollo de aplicaciones web SPA y además de
brindar herramientas para trabajar con los elementos de una web de una manera más
sencilla y óptima. Otro propósito que tiene Angular es la separación completa entre el
front-end y el back-end en una aplicación web [9].

5
2.1.1. Aplicaciones SPA

Una aplicación web SPA creada con Angular es una web de una sola página, en la
cual la navegación entre secciones y páginas de la aplicación, ası́ como la carga de datos,
se realiza de manera dinámica, casi instantánea, ası́ncronamente haciendo llamadas al
servidor (backend con un API REST) y sobre todo sin actualizaciones de la página en
ningún momento. Es decir las aplicaciones web que se pueden desarrollar con Angular son
reactivas y no recargan el navegador, todo es muy dinámico y ası́ncrono con ajax.

2.1.2. Antecedentes de Angular: AngularJS

Angular comenzó con la primera versión de AngularJS, que estaba escrito en puro
JavaScript, y con el que era bastante sencillo crear una aplicación. AngularJS ofrecı́a
un concepto muy novedoso, como era el two-way data binding, que era una forma de
interactuar entre la vista y el modelo, lo que se conoce como view model [3]. Gracias
al mismo, indicando en ciertas propiedades de HTML la directiva ng-model se podı́a
interactuar con las propiedades del modelo, y se actualizaban tanto desde la vista como
desde el modelo, es decir, era totalmente bidireccional. Esto revolucionó todo lo que hasta
ese momento habı́a en el frontend.

2.2. Spring

Spring es un framework del lenguaje de programación Java, y un framework en pro-


gramación es el resultado de la evolucion de la ingenierı́a del software, estos son creados
por programadores para programadores, con la finalidad de estandarizar el trabajo, resol-

6
ver, agilizar y manejar los problemas y complejidades que van apareciendo en el mundo de
la programación, a medida las exigencias van creciendo, creando ası́, en la comunidad de
desarrolladores, un abanico de posibilidades para una creación cada vez más evolucionada
de aplicaciones [7].

2.3. Inversión de control (IOC) e Inyección de depen-

dencia (DI) en Spring

Inversión de control es un término que puede confundirse, sin embargo, hay que con-
siderar la expresión que se utiliza para referirse al cambio en el flujo de ejecución y vida
de los objetos con respecto a la programación tradicional, básicamente de lo que se tra-
ta es de invertir la forma en que se controla la aplicación, lo qué antes dependı́a del
programador, como por ejemplo, el orden en que se llaman los métodos para darle un
comportamiento particular a la aplicación, ahora depende completamente de otro ente,
en este caso, el framework, todo esto con la finalidad de crear aplicaciones más complejas
y con funcionamientos más encapsulados y automáticos [5].
La inyección de dependencia, es un tipo de inversion de control, donde el manejo de
las propiedades de un objeto son inyectadas a través de un constructor, un setter, un
servicio, etc., creando de esta manera un control diferente para un comportamiento más
conveniente en nuestra aplicación, como se mencionó anteriormente.
Sabiendo esto, una de las caracteristicas principales de Spring framework es el Spring
container. El Spring Container es un IoC Container (Contenedor de Inversion de control,
por sus siglas en inglés), estos son frameworks o partes de un framework, en este caso, que

7
se encargan de realizar inyección de dependencia sin la necesidad de realizar la definición
en java (o el lenguaje de POO que esté utilizando) a través de archivos de metadata, por
ejemplo un xml.
Este IOC container se encargará de crear los objetos, relacionarlos, configurarlos y
manejar su ciclo de vida completo, desde la creación de estos hasta su destrucción, es por
esto que se usa el término Inversion of control en Spring, porque como se ha mencionado
anteriormente, el Spring container será el que controle una gran parte de la creación de
los objetos y de la inyección de dependencia en estos [?].

2.4. Apache Maven

Apache Maven es una herramienta que estandariza la configuración de un proyecto


en todo su ciclo de vida, como por ejemplo en todas las fases de compilación y empa-
quetado y la instalación de mecanismos de distribución de librerı́as, para que puedan ser
utilizadas por otros desarrolladores y equipos de desarrollo [6].
También contempla temas relacionados con la integración continua, para poder realizar
la ejecución de test unitarios y pruebas automatizadas, test de integración, etc.

2.5. Caracterı́sticas de Maven

Básicamente, Apache Maven no deja de ser la base de los compiladores actuales, de


IDES como Eclipse, NetBeans o IntelliJ, a los que ofrece soporte gracias a algunas de sus
caracterı́sticas, como por ejemplo:

Un sistema de gestión dependencias.

8
Un mecanismo distribuido de distribución de librerı́as. El comportamiento distri-
buido es siempre desde el repositorio local de Maven hacia los repositorios que están
publicados en Internet o en la red corporativa.

Mecanismos para ser extensible, por la creación de plugins customizables.

Es multi-plataforma, puede funcionar tanto en entornos Linux como Windows al ser


una aplicación Java.

Es software libre, con lo cual es el código está disponible, se podrı́a modificar y


customizar en caso de que fuera necesario.

Fomenta la reutilización de código y de librerı́as. El hecho de que Apache Maven


ofrezca repositorios oficiales y públicos de software libre, con librerı́as desplegadas,
que toda la comunidad de desarrolladores de software utiliza, hace que este concepto
también pueda trasladarse al mundo empresarial, a través de repositorios remotos
corporativos, compartidos por distintos equipos de proyectos o el propio equipo de
desarrollo [10].

Es compatible con múltiples IDEs.

2.6. MySQL

MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo licencia


dual GPL/Licencia comercial por Oracle Corporation y está considerada como la base
datos open source más popular del mundo, y una de las más populares en general junto
a Oracle y Microsoft SQL Server, sobre todo para entornos de desarrollo web.

9
MySQL fue inicialmente desarrollado por MySQL AB (empresa fundada por David
Axmark, Allan Larsson y Michael Widenius). MySQL A.B. fue adquirida por Sun Mi-
crosystems en 2008, y ésta a su vez fue comprada por Oracle Corporation en 2010, la cual
ya era dueña desde 2005 de Innobase Oy, empresa finlandesa desarrolladora del motor
InnoDB para MySQL.
Al contrario de proyectos como Apache, donde el software es desarrollado por una
comunidad pública y los derechos de autor del código están en poder del autor individual,
MySQL es patrocinado por una empresa privada, que posee el copyright de la mayor
parte del código. Esto es lo que posibilita el esquema de doble licenciamiento anterior-
mente mencionado. La base de datos se distribuye en varias versiones, una Community,
distribuida bajo la Licencia pública general de GNU, versión 2, y varias versiones En-
terprise, para aquellas empresas que quieran incorporarlo en productos privativos. Las
versiones Enterprise incluyen productos o servicios addicionales tales como herramientas
de monitorización y soporte oficial. En 2009 se creó un fork denominado MariaDB por
algunos desarrolladores (incluido algunos desarrolladores originales de MySQL) descon-
tentos con el modelo de desarrollo y el hecho de que una misma empresa controle a la vez
los productos MySQL y Oracle Database.

10
Capı́tulo 3

Análisis y Diseño

El desarrollo del capı́tulo abarca la presentación de conceptos vinculados a la meto-


dologı́a de desarrollo de software aplicada junto con los requerimientos y restricciones
identificados del producto.

3.1. Análisis de Requerimientos

Cabe mencionar que actualmente utilizan hojas de Excel, macros para su control
de inventarios, piezas, orden de servicio, clientes, piezas dañadas en tránsito, reportes y
contratos.

3.1.1. Etapas del Desarrollo

3.2. Desarrollo Web

11
Capı́tulo 4

Descripción de la Implementación

En esta sección se describe la implementación tanto del sitio web como de la aplicación
de escritorio. Es posible también encontrar los resultados visuales y la navegabilidad de
los sistemas.

4.1. Sección

SMTO LEADER IN ELECTRONIC MANUFACTURING INDUSTRY IN MEXICO

4.2. Aplicación de Escritorio

12
Capı́tulo 5

Pruebas y Resultados

En esta sección se muestra el conjunto de pruebas realizadas tanto a la aplicación de


escritorio como al desarrollo web.

5.1. De la Aplicación de Escritorio

5.1.1. Validación de los Registros en la Base de Datos

13
Capı́tulo 6

Conclusiones

6.1. Conclusiones

6.2. Trabajo Futuro

6.2.1. Del Sitio Web

6.2.2. De la Aplicación de Escritorio

14
Bibliografı́a

[1]

[2] Cecilio Álvarez. Qué es Maven. GenBeta, 2014. [Acceso online; accesado el 03-
Octubre-2019] https://www.genbeta.com/desarrollo/que-es-maven.

[3] Nacho Blanco. Qué es Angular. OpenWebinairs, 2018. [Acceso online; accesado el
02/Octubre/2019] https://openwebinars.net/blog/que-es-angular/.

[4] DB-Engines. DB-Engines Ranking. DB-Engines, 2016. [Acceso online; accesado el


26-Julio-2016] http://db-engines.com/en/ranking.

[5] Universidad de Alicante Dpto. de Ciencia de la Computación. Spring Framework


y aplicaciones Java EE. Universidad de Alicante, 2014. [Acceso online; accesado
el 03-Octubre-2019] http://www.jtech.ua.es/j2ee/publico/spring-2012-13/
sesion01-apuntes.htm.

[6] Antony Garcı́a González. Que es Maven y para que se utiliza. PanamaHitek,
2015. [Acceso online; accesado el 03-Octubre-2019] http://panamahitek.com/
que-es-maven-y-para-que-se-utiliza/.

[7] Luis Miguel López Maga na. Spring Framework. OpenWebinairs, 2018. [Ac-
ceso online; accesado el 02/Octubre/2019] https://openwebinars.net/blog/
que-es-spring-framework/.

[8] ORACLE. The World’s Most Popular Open Source Database. ORACLE, 2016.
[Acceso online; accesado el 26-Julio-2016] http://www.oracle.com/us/products/
mysql/overview/index.html.

[9] Vı́ctor Robles. Qué es Angular y para qué sirve. VictorRobles.web, 2018. [Acceso
online; accesado el 02-Octubre-2019] https://victorroblesweb.es/2017/08/05/
que-es-angular-y-para-que-sirve/.

15
[10] Carlos Yague. Apache Maven. OpenWebinairs, 2019. [Acceso online; accesado el
03-Octubre-2019] https://openwebinars.net/blog/que-es-apache-maven/.

16

S-ar putea să vă placă și