Arquitectura de microservicios para compras en lnea: caso de uso "ala orden"
Microservices architecture for online shopping: "to order" use case
Arquitetura de microsservios para compras online: caso de uso "sob encomenda"
Pal Quevedo-Avila I
paul.quevedo.15@psg.ucacue.edu.ec
https://orcid.org/0000-0002-9954-8054
Martin Geovanny Zhindn-Mora II
mgzhindonm@ucacue.edu.ec
https://orcid.org/0000-0003-4475-830X
Andrs Sebastin Quevedo-Sacoto III
asquevedos@ucacue.edu.ec
https://orcid.org/0000-0001-5585-0270
Correspondencia: paul.quevedo.15@psg.ucacue.edu.ec
Ciencias de la educacin
Artculo de revisin
*Recibido: 02 de septiembre de 2020 *Aceptado: 07 de octubre 2020 * Publicado: 06 de noviembre de 2020
I. Ingeniero de Sistemas, Jefatura de Posgrados. Universidad Catlica de Cuenca, Cuenca, Ecuador.
II. Ingeniero de Sistemas, Jefe de Tecnologas de la Informacin, Universidad Catlica de Cuenca, Cuenca, Ecuador.
III. Ingeniero de Sistemas, Docente de la Unidad Acadmica de Tecnologas de la Informacin y Comunicacin (TIC), Jefatura de Posgrados, Universidad Catlica de Cuenca, Cuenca, Ecuador.
Resumen
Este trabajo tiene el objetivo de presentar un patrn de diseo para la plataforma !ala orden, basado en un arquitectura de software de microservicios, mostrando su definicin, bondades y caractersticas, con la caracterizacin del proceso, adems, se presentan las capas empleadas en la implementacin de esta arquitectura, tales como: capa del cliente y capa del servidor, describiendo cada uno de los microservicios implementados, se menciona la tecnologa para la seguridad, acceso y persistencia de los datos, y, para finalizar, se detallan los resultados obtenidos, con el uso de la arquitectura de microservicios, en el diseo y desarrollo de esta plataforma.
Palabras claves: Microservicios; e-commerce; arquitectura; patrn de diseo; escalabilidad.
Abstract
This work has the objective of presenting a design pattern for the platform! To order, based on a microservices software architecture, showing its definition, benefits and characteristics, with the characterization of the process, in addition, the layers used in the implementation of this architecture, such as: client layer and server layer, describing each of the implemented microservices, mentioning the technology for data security, access and persistence, and, finally, the results obtained are detailed , with the use of microservices architecture, in the design and development of this platform.
Keywords: Microservices; e-commerce; architecture; Design pattern; scalability.
Resumo
Este trabalho tem o objetivo de apresentar um padro de design para a plataforma! Encomendar, com base em uma arquitetura de software de microsservios, mostrando sua definio, benefcios e caractersticas, com a caracterizao do processo, bem como as camadas utilizadas na a implementao desta arquitetura, tais como: camada cliente e camada servidor, descrevendo cada um dos microsservios implementados, mencionando a tecnologia para segurana, acesso e persistncia de dados e, por fim, detalham-se os resultados obtidos , com a utilizao de arquitetura de microsservios, na concepo e desenvolvimento desta plataforma.
Palavras-chave: Microsservios; comrcio eletrnico; arquitetura; Padro de design; escalabilidade.
Introduccin
Debido a la situacin que atraviesa el mundo ocasionada por la pandemia SARS-CoV-2, y el confinamiento obligatorio dispuesto por varios jefes de estado, existe un aumento del comercio por internet o comercio en lnea denominado e-commerce[1]. Esta forma de comercio ayuda al consumidor a obtener el producto conforme a sus expectativas, intereses o gustos, lo que permite agilizar la entrega, el pago y control de los bienes o servicios adquiridos por estos medios digitales de transacciones [2].
El comercio electrnico ha estimulado que la mayora de los mercados o negocios adopten este modelo, convirtiendo as al internet en un potencial canal de ventas, puesto que los consumidores pueden acceder y realizar sus pedidos en lnea desde un dispositivo electrnico inteligente[3] [4].
Segn la Cmara de Comercio del Ecuador [4], tras la llegada del Covid-9 se ha producido un incremento en la frecuencia de compra en lnea, como se muestra en la Figura 1.
Figura
1:
Tomado de: Transacciones electrnicas en Ecuador durante el Covid-19. En el
eje y observamos el porcentaje de incremento de compras en lnea.
Fuente: Elaboracin propia.
El incremento de ventas o de transacciones electrnicas tambin ha trado nuevos emprendimientos, los mismos que buscan automatizar y facilitar este tipo de transacciones en lnea [5].
Las aplicaciones monolticas han resultado en varios casos de uso a lo largo del mundo, pero con el paso del tiempo se ha generado problemas al escalar y mejorar su rendimiento, puesto que los cambios constantes en el modelo de negocio originan que se tenga que modificar toda la aplicacin, hacindola ms grande y compleja de mantener [6].
Para resolver los problemas que se ocasionan con las arquitecturas tradicionales, se han propuesto modelos mucho ms estables y eficientes, como las arquitecturas basadas en microservicios, que plantean la construccin de conjuntos de pequeos servicios independientes, , que se comunican entre s a travs de peticiones HTTP y se ejecutan de forma autnoma, esto permite que sean escalables y fciles de mantener, y que puedan ser escritos en diferentes lenguajes de programacin y por diferentes equipos de desarrollo[7].
Los microservicios se han convertido en una opcin de estilo arquitectnico dominante en la industria del desarrollo de software, presentndose como un patrn de arquitectura con nfasis en dividir el sistema en servicios pequeos y livianos que se construyen expresamente para realizar una funcin comercial muy cohesiva [8], considerndose como un refinamiento y simplificacin de la arquitectura orientada a servicios (SOA) [9].
Existen numerosos y diversos principios que presentan este patrn de diseo, entre los que se destacan.
Resilientes
Los microservicios son resistentes y tolerantes a fallos y se pueden solventar rpidamente [10], si algo falla en un microservicio y no estn en cascada se puede aislar el problema y el aplicativo contina operativo, en una arquitectura monoltica, la falla de un componente puede hacer fallar a todo el sistema.
Escalables
Al escalar sistemas monolticos se requiere escalar la aplicacin entera [11], demanda una gran inversin en hardware y complejidad en el cdigo. La capacidad de actualizar y escalar los servicios de forma aislada en un patrn de diseo basado en microservicios es ms sencillo [12], se pueden implementar, monitorear y escalar de forma independiente por definicin. El ser capaz de escalar horizontalmente un microservicio es fundamental para mejorar el rendimiento del software [13]. Cada microservicio puede implementarse en un servidor con diferentes capacidades de hardware, y pueden escribirse en el lenguaje de programacin ms apropiado [14]. Si hay un congestionamiento en un microservicio se puede transportar y ejecutar en varios hosts en paralelo [10].
Alta disponibilidad
La alta disponibilidad se logra mediante la capacidad de los microservicios de replicarse y distribuirse entre centros de datos y distancias geogrficas, lo que les permite distribuir la carga y hacer frente a hardware congestionado y con fallas. Otro aspecto relevante se refiere a la actualizacin y evolucin del sistema: si bien la actualizacin de una aplicacin monoltica requiere detenerla y volver a implementarla, esto incurre en tiempos de inactividad posiblemente prolongada, la replicabilidad y la independencia permiten que los microservicios resuelvan el problema [15].
En este contexto se plante la necesidad de desarrollar e implementar una plataforma de comercio electrnico que permita a los pequeos, medianos y grandes comercios ofrecer sus productos o servicios, y para esto resulta indispensable construir esta solucin bajo una arquitectura de microservicios, esto debido a que nos encontramos en un entorno voltil, incierto, complejo y ambiguo[16], lo que obliga que la plataforma y sus componentes brinden la oportunidad de que puedan ser ajustadas acorde a esta dinmica.
Metodologa
Caracterizacin del proceso
En esta fase se utiliz un mtodo sistmico, lo que permiti diagnosticar y evaluar lo que conforma el modelo, necesidades y requerimientos, as se logr establecer los respectivos objetivos (relaciones), por ejemplo, para los comerciantes es ofrecer sus productos/servicios y mejorar sus ventas, mientras que para la empresa de repartos (delivery) se determin su proceso de negocio; finalmente, para los usuarios es tener una mejor experiencia al momento de realizar una compra.
Para determinar las necesidades de las partes involucradas que implican este modelo, se traz de manera primaria el uso de fuentes, como: Observacin (experiencia personal del autor), uso de entrevistas a los comerciantes, empresas de reparto, expertos en proyectos y usuarios en general.
Con la informacin recolectada, se estableci presentar un diagrama de flujo, como el mostrado en la figura 2, para luego elaborar una gua para el direccionamiento del proyecto.
Figura
2:
Diagrama de flujo de la plataforma ala orden.
Fuente: Elaboracin propia.
Arquitectura
La arquitectura de la plataforma ala orden!, cuenta con un patrn de diseo basado en microservicios. En la figura 3 se muestra el diseo que conforma la arquitectura de la plataforma ala orden!
Figura
3:
Diagrama del diseo de la arquitectura del sistema ala orden.
Fuente: Elaboracin propia.
Lado del cliente
Esta capa, hace referencia frontend la misma que cuenta con los siguientes frameworks de desarrollo angular para desarrollo web, ionic para el desarrollo de aplicaciones mviles hbridas , bootstrap y angular material para el diseo de interfaces responsivos adaptables a los dispositivos inteligentes basados en el estndar html5 y css3 , y, por ltimo, la integracin de openstreetmap como proveedor de mapas en lnea.
Lado del servidor Backend
En el lado del servidor, la arquitectura del sistema propuesto est dividida en 4 secciones que se describen a continuacin:
Seguridad
Se encarga de gestionar los roles y permisos de acceso a la aplicacin. Este proceso es ejecutado por el sistema en dos pasos: un proceso de registro donde se identifica al usuario y un proceso de verificacin cada vez que el usuario inicia una nueva sesin en la aplicacin otorgndole un token, segn los roles asignado se tiene acceso a los microservicios que son mapeados de acuerdo a perfiles pre establecidos como: administrador, publicador, transporte, transportista y usuario en general.
El estndar de seguridad utilizado en la aplicacin es Open Authorization , que permite flujos de autorizacin para las API implementadas en los microservicios.
Gateway
En esta seccin de la Arquitectura, se implementa un proceso de puerta de enlace ente los requerimientos de consumo del cliente y por otra parte el servidor. Eureka hace el descubrimiento y balanceo de carga de los microservicios de la aplicacin, transformando la peticin segn lo requerido por el cliente.
Microservicios
En la Tabla 1 se detalla cada uno de los microservicios implementados en la lgica de negocios mediante el framework Spring Boot, cada uno de estos se definen independientes entre s.
Tabla 1: Detalle de los microservicios implementados.
Microservicio |
Objetivo |
Registro |
Permite a los usuarios realizar el registro de su informacin en la plataforma. |
Autenticacin |
Contiene la informacin del usuario y roles, la autenticacin en el sistema se realiza mediante el ingreso de su usuario y contrasea; Aqu se utiliza la herramienta Oauth2.0 el cual brinda token al cliente que permitir el acceso a los microservicios segn su rol. |
Categoras |
Permite crear un CRUD[1] de las categoras (rol administrador). |
Negocios |
Permite administrar la informacin de los comercios (rol publicador). |
Productos |
Este microservicio permite realizar un CRUD de los productos de cada negocio (rol publicador). |
Carrito de compras |
Es uno de los principales del sistema, ya que es el encargado de la gestin de pedidos en lnea por parte de los consumidores, notificando as a los negocios y a las empresas de delivery por cada solicitud de compra en la plataforma. |
Entregas |
Permite la gestin (entregas a domicilio, asignacin de un transporte) por cada solicitud de compra (rol transporte). |
Notificaciones
|
Se encarga de realizar las notificaciones (notificacin de compra, estado del pedido y promociones) a los usuarios, este servicio cuenta con una integracin con las APIs de chat-api[2]. |
Acceso a datos
Esta capa se implement a travs del ORM como se muestra en la figura 4, con el framework hiberbate, que permite la persistencia de los datos en una base de datos relacional y al mismo tiempo permite emplearla programacin orientada a objetos (POO) en la aplicacin.
Figura
4:
Mapeo objeto relacional de la plataforma ala orden!
Fuente: Elaboracin propia.
Resultados y discusin
La implementacin de un patrn arquitectnico de microservicios permiti realizar cambios en cualquier microservicio, debido a fallos o por cambios requeridos, siendo estos transparente para los clientes que consume dichos servicios. Esto permite un escalamiento rpido y eficiente, tambin permite implementar mejoras y aadir nuevas funcionalidades a la aplicacin de forma gil y sin interrupciones.
Se ha conseguido en el caso de que se presente problemas estos se puedan tratar de manera aislada, debido a que si se afecta un microservicio, los dems servicios de la aplicacin pueden continuar con el control de las solicitudes lo cual posibilita escalar horizontalmente.
La figura 5, muestra las interfaces de la aplicacin mvil ala orden!, usando ionic como framework y como microservicios como arquitectura de software.
Figura 5: Interfaces mvil
Fuente: aplicacin mvil ala orden!
Esta plataforma se encuentra disponible en la web ingresando a www.alaorden.io, y para los dispositivos mviles mediante sus tiendas oficiales como google play y app store, denominada !ala orden.
Conclusiones
Se ha investigado e implementado un modelo arquitectnico basado en microservicios para la plataforma ala orden!, que evidenci la utilidad de dicho patrn de diseo, ya que permiti adaptar a la plataforma mltiples cambios que se presentaron al momento del desarrollo, implementacin y primera fase de puesta en operacin.
La independencia de cada uno de los microservicios posibilit un desarrollo, mantenimiento y despliegue ms eficiente, ya que el enfoque esta puesto en esta actividad y en ese contexto en especfico.
Este patrn de diseo se presenta como una alternativa moderna que brinda flexibilidad, escalabilidad e independencia a momento de disear y construir software.
En este trabajo se ha evidenciado la razn por la que se ha visto un incremento de nuevas herramientas y frameworks, para el diseo, construccin e implementacin de aplicativos basado en microservicios debido a las bondades y beneficios que brinda esta arquitectura de software.
Referencias
1. A. Bhatti, H. Akram, H. M. Basit, A. U. Khan, and S. M. Raza, E-commerce trends during COVID-19 Pandemic, vol. 13, no. 2, pp. 14491452, 2020.
2. L. Periolo et al., Marketing + internet = e-commerce : oportunidades, Cuad. Econ. y Dir. la Empres., vol. 13, no. 16, p. 118, 2013, doi: 10.1016/s1138-5758(07)70081-6.
3. J. Thnes, Microservices, IEEE Softw., vol. 32, no. 1, 2015, doi: 10.1109/MS.2015.11.
4. S. Dakduk, R. Dicarlo, L. Ottati, and A. Portalanza, Transacciones electrnicas en Ecuador durante el Covid- 19., Cmara Ecuatoriana Comer. Electrnico, vol. 1du, no. 1, p. 16, 2020.
5. R. Marcelo, M. Hinojosa, . Omar, M. Pazmio, H. Patricio, and D. Sols, Emprendimiento y marketing durante el aislamiento social por la pandemia Entrepreneurship and marketing during social isolation due to the pandemic, pp. 01.
6. B. Familiar and B. Familiar, Microservice Architecture. 2015.
7. D. Barrios Contreras, Arquitectura de Microservicios, Tecnol. Investig. y Acad., vol. 6, no. 1, pp. 3646, 2018.
8. Microservices Guide. https://martinfowler.com/microservices/ (accessed Oct. 01, 2020).
9. M. Amaral, J. Polo, D. Carrera, I. Mohomed, M. Unuvar, and M. Steinder, Performance evaluation of microservices architectures using containers, Proc. - 2015 IEEE 14th Int. Symp. Netw. Comput. Appl. NCA 2015, pp. 2734, 2016, doi: 10.1109/NCA.2015.49.
10. D. Taibi, V. Lenarduzzi, and C. Pahl, Processes, Motivations, and Issues for Migrating to Microservices Architectures: An Empirical Investigation, IEEE Cloud Comput., vol. 4, no. 5, pp. 2232, 2017, doi: 10.1109/MCC.2017.4250931.
11. D. Maya, E., y Lpez, Arquitectura de Software basada en Microservicios para Desarrollo de Aplicaciones Web, Septima Conf. Dir. Tecnol. Inf. 2017, no. July, p. 12, 2017, [Online]. Available: http://dspace.redclara.net:8080/bitstream/10786/1277/1/93 Arquitectura de Software basada en Microservicios para Desarrollo de Aplicaciones Web.pdf.
12. D. Namiot and M. Sneps-Sneppe, On microservices Architecture International journal of open information technologies., Int. J. Open Inf. Technol., vol. 2, no. 9, pp. 2427, 2014, [Online]. Available: http://injoit.org/index.php/j1/article/view/139.
13. A. Brogi, A. Canciani, D. Neri, L. Rinaldi, and J. Soldani, Towards a reference dataset of microservice-based applications, Lect. Notes Comput. Sci. (including Subser. Lect. Notes Artif. Intell. Lect. Notes Bioinformatics), vol. 10729 LNCS, pp. 219229, 2018, doi: 10.1007/978-3-319-74781-1_16.
14. Scaling Microservices at Gilt with Scala, Docker and AWS. https://www.infoq.com/news/2015/04/scaling-microservices-gilt/ (accessed Oct. 01, 2020).
15. A. Bucchiarone, N. Dragoni, S. Dustdar, S. T. Larsen, and M. Mazzara, From Monolithic to Microservices: An Experience Report from the Banking Domain, IEEE Softw., vol. 35, no. 3, pp. 5055, 2018, doi: 10.1109/MS.2018.2141026.
16. L. James and N. Bennett, What VUCA Really, Harv. Bus. Rev., vol. 92, no. February, p. 2014, 2014
2020 por los autores. Este artculo es de acceso abierto y distribuido segn los trminos y condiciones de la licencia Creative Commons Atribucin-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0) (https://creativecommons.org/licenses/by-nc-sa/4.0/).
[1] Es el acrnimo de "Crear, Leer, Actualizar y Borrar", que se usa para referirse a las funciones bsicas en bases de datos o la capa de persistencia en un software
[2] https://chat-api.com/
Enlaces de Referencia
- Por el momento, no existen enlaces de referencia
Polo del Conocimiento
Revista Científico-Académica Multidisciplinaria
ISSN: 2550-682X
Casa Editora del Polo
Manta - Ecuador
Dirección: Ciudadela El Palmar, II Etapa, Manta - Manabí - Ecuador.
Código Postal: 130801
Teléfonos: 056051775/0991871420
Email: polodelconocimientorevista@gmail.com / director@polodelconocimiento.com
URL: https://www.polodelconocimiento.com/