Entrega 2 Semana 5 - Arquitectura de Software
April 16, 2024 | Author: Anonymous | Category: N/A
Short Description
Download Entrega 2 Semana 5 - Arquitectura de Software...
Description
ARQUITECTURA DE SOFTWARE
ENTREGA 2 – ESCENARIO 5 – GRUPO 1
TUTOR: Wilson Soto
HARRISON LEONARDO AVELLA AREVALO GUILLERMO FELIPE QUINTERO LOZANO IVAN DARIO GARZÓN PEÑA
INSTITUCIÓN UNIVERSITARIA POLITÉCNICO GRANCOLOMBIANO FACULTAD DE INGENIERÍA, DISEÑO E INNOVACIÓN COLOMBIA – 2023
Tabla de contenido
Descripción detallada de la situación problema identificada..................................................3 Referentes...................................................................................................................................4 Justificación...............................................................................................................................5 Objetivo......................................................................................................................................6 Propuesta Componentes Arquitectónicos.................................................................................7 Servicios............................................................................................................................................7 Interfaz del Servicio.........................................................................................................................8 Proveedor de Servicios.....................................................................................................................9 Registro de Servicios........................................................................................................................9
Referencias Bibliográfica........................................................................................................10
Descripción detallada de la situación problema identificada La empresa familiar Colchones Dulces Sueños fundada en 1985 se ha mantenido en el mercado durante décadas gracias a la excelente calidad de sus productos, sin embargo, con el pasar de los tiempos la cantidad de clientes a incrementado considerablemente. La empresa como estrategia de mercado ha vendido bajo la modalidad puerta a puerta donde sus asesores comerciales usan catálogos impresos para mostrar a los clientes la variedad de los productos, pero en los últimos años la situación en la fábrica se ha tornado caótica ya que muchas ventas se realizan sin tener en cuenta las existencias disponibles de productos en los almacenes y esto ha llevado a que la empresa incumpla las ordenes de entrega a los clientes y en consecuencia han perdido ventas, no obstante lo que más preocupa a la empresa es que gracias a las redes sociales su inconveniente con los inventarios se ha hecho público y la imagen de la compañía ha desmejorado. La empresa necesita de manera urgente reemplazar sus sistemas diseñado en un comienzo bajo arquitectura monolítica on-premise sin salida a internet, a un sistema que les permita a sus asesores comerciales poder consultar los catálogos de los productos y sus existencias en bodega en tiempo real por medio de tabletas electrónicas y de esta manera poderle ofrecer a sus clientes un mejor servicio y recuperar la buena imagen que los ha caracterizado durante décadas.
Referentes Profundizando sobre el problema que actualmente tiene La empresa Colchones Dulces Sueños se puede identificar claramente que están utilizando una arquitectura de software monolítica. De forma muy resumida, puede decirse que la arquitectura monolítica se estructura de forma que todos los aspectos funcionales del mismo quedan acoplados y sujetos al mismo programa, por consiguiente, estas son algunas desventajas de una arquitectura monolítica:
Velocidad de desarrollo más lenta: con una aplicación grande y monolítica, el desarrollo es más complejo y lento. Escalabilidad: no se pueden escalar componentes individuales. Fiabilidad: si hay un error en algún módulo, puede afectar a la disponibilidad de toda la aplicación. Barrera para la adopción de tecnología: cualquier cambio en el marco o el lenguaje afecta a toda la aplicación, lo que hace que los cambios suelan ser costosos y lentos. Falta de flexibilidad: un monolito está limitado por las tecnologías que se utilizan en él. Implementación: un pequeño cambio en una aplicación monolítica requiere una nueva implementación de todo el monolito.
Teniendo esto claro, optar por una arquitectura SOA, podría solucionar cada uno de los inconvenientes presentados por la empresa Colchones Dulces Sueños.
Justificación La empresa Colchones Dulces Sueños ha identificado una problemática en su arquitectura monolítica que ha llevado a la pérdida de ventas y deterioro de su imagen en el mercado. Es necesario adoptar una arquitectura más moderna y escalable, como la arquitectura SOA, que permita una mejor gestión de inventarios y una atención más eficiente a los clientes. Esta implementación traerá beneficios a la empresa en términos de aumento en las ventas, mejora en la satisfacción del cliente y un sistema más flexible y actualizado.
Objetivo El objetivo principal es implementar una arquitectura SOA que permita a los asesores comerciales de la empresa Colchones Dulces Sueños consultar los catálogos y existencias de productos en tiempo real por medio de tabletas electrónicas, mejorando así la atención al cliente y la gestión de inventarios. Como resultado, se espera recuperar la buena imagen de la empresa y aumentar las ventas, así como mejorar la eficiencia y flexibilidad del sistema. Se deberá también capacitar al personal en el uso de la nueva arquitectura y establecer un plan de mantenimiento y actualización constante.
Propuesta Componentes Arquitectónicos Como es de conocimiento, nuestro cliente no cuenta con un sistema de información basado en servicios, a continuación presentaremos la propuesta arquitectónica para poder dar solución a la problemática. El consumo de los servicios es de uso exclusivo de los vendedores de la compañía, es decir usuarios internos.
Servicios A nivel de código se construirán 2 servicios básicos que permitirán consultar los productos disponibles para vender a los clientes. Login: servicio encargado de autorizar la autenticación del vendedor. Producto: servicio encargado de suministrar los productos disponibles en bodega y permite realizar la reserva de los mismos por parte del vendedor.
Diagrama de secuencia Logueo de Usuario, elaboración propia
Diagrama de secuencia Obtener Inventario de Productos, elaboración propia
Interfaz del Servicio Login operación de Solicitud Respuesta getLogin(), cuando se invoca valida si un usuario existe en el sistema y cuenta con los permisos para acceder al módulo de consulta de productos. Entrada: para getLogin() se envían las variables de usuario y password. Salida: getLogin() retorna un valor de tipo booleano indicando si tiene o no acceso al modulo de producto. Producto operación de Solicitud Respuesta getProductosDisponibles(), cuando se invoca trae el catálogo de productos disponibles para venta.
Entrada: para getProductosDisponibles() se envían las variables de id y producto. Salida: getProductosDisponibles() si el valor de las variables id y producto son vacío el método retorna el catálogo de productos disponibles completo, si no, trae el o los productos por búsqueda especifica a menos que exista. Producto operación Unidireccional setReservarProducto(), cuando se invoca separa la cantidad de productos disponibles a un cliente en específico. Entrada: para setReservarProducto() se envía el id del producto seleccionado, la cantidad, el nombre del cliente y su dirección. Salida: setReservarProducto() retorna un booleano indicando si la reserva fue exitosa o no.
Proveedor de Servicios Para la implementación de esta solución tecnológica, el equipo de arquitectura e infraestructura de la compañía decidió implementar para el desarrollo la tecnología Java SE con Spring Boot y como infraestructura una solución en la nube con AWS Elastic Beanstalk, esta tecnología permite escalar aplicaciones web y servicios, Elastic Beanstalk se encarga de manera automática de la implementación, desde el aprovisionamiento de la capacidad, el equilibrio de la carga hasta la supervisión del estado de la aplicación. (AWS, 2022).
Registro de Servicios El diseño de nuestra solución tecnológica tiene un enfoque moderno basado en microservicios distribuidos que no están interconectados entre sí.
Con el objetivo de mantener la integridad de los datos crearemos el registro de servicios, esto nos permite controlar y administrar los posibles cambios en las estructuras del o los servicios y así evitar la falla general del sistema. En nuestro caso hemos decidido implementar JSON Schema para que lo desarrolladores de aplicaciones puedan registrar sus esquemas y a su vez consumirlos.
Patrón SOA como solución a la situación problema
Requerimiento: La arquitectura SOA puede ser una solución viable para la empresa Colchones Dulces Sueños, ya que permite la integración de sistemas y la exposición de servicios a través de la web. En este caso, se podría diseñar una arquitectura SOA que permita a los asesores comerciales acceder a los catálogos de productos y a las existencias en bodega en tiempo real, lo que les permitiría ofrecer un mejor servicio a los clientes y evitar problemas con las órdenes de entrega. La arquitectura SOA también puede ofrecer otros beneficios a la empresa, como la posibilidad de escalar el sistema en caso de un aumento en la demanda de los clientes, la integración con otros sistemas de la empresa y la posibilidad de implementar medidas de seguridad para proteger la información de la empresa. Además, la arquitectura SOA puede ofrecer una mayor flexibilidad y adaptabilidad a los cambios en el negocio, ya que permite la integración de sistemas heterogéneos y la exposición de servicios a través de la web. La implementación de la arquitectura SOA podría resultar en una solución adecuada para la empresa Colchones Dulces Sueños, dado que les permitiría mejorar su servicio al cliente,
recuperar su buena reputación y obtener beneficios adicionales tales como la escalabilidad, integración con otros sistemas y capacidad de adaptarse a los cambios del negocio. Problema Causa del problema: La empresa Colchones Dulces Sueños enfrenta un problema en su proceso de ventas, ya que la modalidad puerta a puerta que utiliza no le permite a sus asesores comerciales conocer en tiempo real la disponibilidad de productos en sus almacenes, lo que lleva a incumplir las órdenes de entrega y afectar la satisfacción del cliente. Este problema se debe a que la arquitectura monolítica on-premise que la empresa utiliza en sus sistemas no está diseñada para interactuar con la web y para ser escalable en caso de un aumento en la demanda de los clientes. Circunstancias que rodean el problema: La situación se agrava porque la empresa ha perdido ventas debido al incumplimiento en las entregas y a la mala imagen que ha generado en redes sociales. Además, la empresa no cuenta con sistemas adecuados para la integración de los procesos de ventas y los sistemas de inventario, lo que dificulta la gestión de los pedidos y la administración de los almacenes. Diagrama arquitectónico: Para abordar la problemática, se puede diseñar una arquitectura SOA que permita a los asesores comerciales consultar los catálogos de productos y las existencias en bodega en tiempo real a través de tabletas electrónicas, lo que permitiría una mejor gestión de los pedidos y la entrega de productos a los clientes. Solución
La solución propuesta para la empresa Colchones Dulces Sueños es implementar una arquitectura SOA que les permita a sus asesores comerciales consultar los catálogos de los productos y las existencias en bodega en tiempo real a través de tabletas electrónicas, para así ofrecer a los clientes un mejor servicio y recuperar la buena imagen que ha caracterizado a la empresa durante décadas. La arquitectura SOA les permitiría tener un enfoque más modular y flexible para sus sistemas, lo que les permitiría agregar, eliminar o actualizar servicios sin tener que cambiar toda la estructura de sus sistemas. Además, la arquitectura SOA les permitiría aprovechar la nube y las tecnologías web para tener un acceso más fácil a sus sistemas y servicios, lo que podría mejorar la eficiencia y escalabilidad de su negocio.
La solución propuesta también implicaría la integración de servicios de catálogo, inventario, pedidos, facturación y seguimiento de pedidos, lo que permitiría a los asesores comerciales tener una visión completa de los procesos de venta y entrega de productos, y así poder brindar un mejor servicio a los clientes. Para resolver los problemas de la empresa Colchones Dulces Sueños, se propone la implementación de una arquitectura SOA con el fin de mejorar la eficiencia y flexibilidad en sus procesos de venta, lo que les permitiría cumplir con los pedidos de los clientes y recuperar su reputación en el mercado. Aplicación Una de las problemáticas identificadas en la empresa Colchones Dulces Sueños es que su sistema actual fue diseñado bajo una arquitectura monolítica on-premise sin salida a internet, lo que
limita la accesibilidad a los datos y la posibilidad de actualización y expansión de los sistemas. Por tanto, para abordar esta problemática, se puede aplicar el patrón de arquitectura SOA. El patrón de arquitectura SOA (Service-Oriented Architecture) se centra en la construcción de aplicaciones que están formadas por servicios, que son unidades autónomas e independientes que pueden comunicarse entre sí a través de interfaces estándar. Cada servicio ofrece una funcionalidad específica y puede ser utilizado por otras aplicaciones o servicios de manera independiente. La aplicación del patrón SOA permitiría a la empresa Colchones Dulces Sueños tener un enfoque más modular y flexible para sus sistemas, lo que les permitiría agregar, eliminar o actualizar servicios sin tener que cambiar toda la estructura de sus sistemas. Además, la arquitectura SOA les permitiría aprovechar la nube y las tecnologías web para tener un acceso más fácil a sus sistemas y servicios, lo que podría mejorar la eficiencia y escalabilidad de su negocio. A continuación, se presenta una guía sobre cómo se puede aplicar el patrón de arquitectura SOA en la empresa Colchones Dulces Sueños: Identificar los servicios necesarios: se debe identificar los servicios necesarios para satisfacer las necesidades del negocio, como por ejemplo, servicio de catálogo, inventario, pedidos, facturación y seguimiento de pedidos. Definir las interfaces de los servicios: se deben definir las interfaces de los servicios y establecer los estándares de comunicación entre ellos. Implementar los servicios: se deben implementar los servicios utilizando tecnologías que permitan la interoperabilidad, como por ejemplo, XML, SOAP y REST.
Integrar los servicios: se deben integrar los servicios utilizando un Bus de Servicios Empresariales (ESB) para permitir la comunicación entre ellos. Desplegar los servicios: se deben desplegar los servicios en una infraestructura de nube que permita una fácil gestión y escalabilidad. Monitorear los servicios: se debe monitorear el funcionamiento de los servicios para asegurarse de que están operando correctamente y cumpliendo con las expectativas del negocio. Mediante la implementación del patrón arquitectónico SOA, la empresa Colchones Dulces Sueños podría adoptar un enfoque modular y flexible para sus sistemas, lo que les permitiría adaptarse a los cambios del mercado y mejorar su capacidad para satisfacer las demandas de los clientes. Impacto La implementación de una arquitectura SOA en la empresa Colchones Dulces Sueños tendría varios impactos en diferentes aspectos del negocio. Algunos de ellos son: Ventajas: Mayor flexibilidad y escalabilidad: una arquitectura SOA permite que los diferentes componentes de software sean independientes entre sí y se puedan escalar horizontalmente según las necesidades del negocio. Mejora en la eficiencia operativa: al tener una mejor visibilidad y control sobre las existencias de productos en bodega, se pueden tomar decisiones más informadas y reducir el tiempo de espera de los clientes.
Incremento en la satisfacción del cliente: al poder consultar en tiempo real las existencias de productos y ofrecer una mejor atención al cliente, se puede mejorar la percepción de la marca y recuperar la confianza perdida. Desventajas: Mayor complejidad en la gestión de la arquitectura: una arquitectura SOA implica una mayor cantidad de componentes de software y servicios que deben ser gestionados y mantenidos, lo cual puede aumentar la complejidad y los costos. Mayor dependencia de proveedores externos: al depender de servicios externos, se pueden presentar problemas de disponibilidad o calidad del servicio que afecten el negocio. Mayor tiempo y costo de implementación: la implementación de una arquitectura SOA implica un proceso de migración que puede ser costoso y requerir un tiempo significativo. Es importante tener en cuenta que el impacto de la implementación de una arquitectura SOA dependerá del contexto particular de la empresa Colchones Dulces Sueños y sus necesidades específicas. Por lo tanto, se debe realizar un análisis detallado de los beneficios y costos asociados antes de tomar una decisión. Principios Enfoque en el cliente: La empresa debe centrar sus esfuerzos en satisfacer las necesidades y expectativas de sus clientes, lo que implica ofrecerles un mejor servicio, acceso a la información y una experiencia de compra más agradable.
Mejora continua: La empresa debe estar en constante mejora, evaluando su desempeño, identificando áreas de oportunidad y buscando soluciones para optimizar sus procesos y servicios. Eficiencia y eficacia: La empresa debe buscar una solución que le permita mejorar la eficiencia y eficacia de sus procesos, a través de la optimización del uso de sus recursos y la mejora en la toma de decisiones. Adaptabilidad: La empresa debe ser capaz de adaptarse a los cambios y desafíos del entorno, como la evolución de las tecnologías y las demandas de los clientes. Innovación: La empresa debe estar dispuesta a explorar nuevas soluciones y tecnologías, que le permitan ofrecer mejores servicios y procesos a sus clientes. Colaboración: La empresa debe fomentar la colaboración entre sus áreas y equipos, para lograr una solución integrada y alineada con los objetivos de la organización. Transparencia: La empresa debe ser transparente en sus procesos y servicios, brindando información clara y precisa a sus clientes y trabajando en la construcción de una imagen de confianza y credibilidad. Arquitectura La arquitectura sugerida para solucionar la problemática de la empresa Colchones Dulces Sueños podría ser una arquitectura basada en servicios (SOA). Esta arquitectura permitiría la integración de los sistemas existentes con los nuevos sistemas necesarios para la consulta de los catálogos y las existencias en tiempo real.
La arquitectura SOA se basa en la creación de servicios independientes y autónomos que pueden ser utilizados por diferentes aplicaciones y sistemas. Estos servicios pueden ser creados en diferentes tecnologías y lenguajes de programación, lo que permite la integración de sistemas heterogéneos. Además, esta arquitectura permite la reutilización de los servicios y la adaptación a futuros cambios en los sistemas. En el caso de Colchones Dulces Sueños, se podrían crear servicios para la consulta de los catálogos y las existencias en tiempo real, que podrían ser utilizados por los sistemas existentes y por las nuevas aplicaciones para tabletas electrónicas. Estos servicios podrían ser creados utilizando tecnologías como REST o SOAP, y se podrían implementar utilizando lenguajes de programación como Java o .NET. Relaciones En la solución propuesta para la problemática planteada en la empresa Colchones Dulces Sueños, se pueden identificar diversas dependencias con otros patrones y principios de arquitectura. Algunos de ellos son: Arquitectura SOA: En la solución propuesta se utiliza una arquitectura SOA (Service-Oriented Architecture) para implementar el sistema que permita a los asesores comerciales consultar los catálogos de los productos y sus existencias en tiempo real por medio de tabletas electrónicas. Este patrón arquitectónico permite la integración de los diferentes servicios y sistemas de la empresa, y facilita la interoperabilidad y el reuso de componentes. Principio de Separación de Responsabilidades (SoC): En la solución propuesta se busca separar las responsabilidades de los diferentes componentes del sistema para lograr una mayor modularidad y escalabilidad. Por ejemplo, se pueden separar las responsabilidades del servicio
de catálogo de productos del servicio de gestión de inventarios, de tal forma que cada uno pueda ser desarrollado y escalado de manera independiente. Patrón de Capas: En la solución propuesta se puede utilizar el patrón de capas para separar las diferentes responsabilidades del sistema en capas lógicas. Por ejemplo, se pueden definir capas para la presentación de la información, para la lógica de negocio y para la persistencia de datos. Principio de Abstracción: La solución propuesta se basa en el principio de abstracción, ya que se busca ocultar la complejidad y los detalles de implementación de los diferentes componentes del sistema a los usuarios finales. Por ejemplo, los asesores comerciales no necesitan conocer los detalles de implementación del servicio de gestión de inventarios, sino solamente conocer la forma de consultar los datos en tiempo real. La solución propuesta para abordar la problemática planteada en la empresa Colchones Dulces Sueños depende de la combinación de diversos patrones y principios de arquitectura que permiten lograr un sistema modular, escalable y flexible.
Diagramas Como se encuentra actualmente Actualmente la aplicación es monolítica donde el Font y el Back están mezclados en el código, HTML5, CSS3, Javascript, y la parte de la lógica fuerte del negocio se hace con PHP puro. Esto es un problema para la escalabilidad de la aplicación ya que una nueva funcionalidad que se quiera agregar o cualquier improvisto que se tenga, se corre el riesgo de dejar sin funcionamiento la aplicación y que sea difícil encontrar el error, aumentando los costos. Como vemos en el
diagrama es muy sencillo y por abstracción representamos un Front y un Back que están en una misma aplicación.
Lo que se quiere lograr Actualmente se tiene pensado usar las facilidades de AWS para construir la nueva aplicación, implementando las herramientas de seguridad y disponibilidad que ellos nos ofrecen. Dentro del ecosistema de AWS esta aplicación estará en la región con mejor disponibilidad para Colombia, y tendremos una VPC Virtual prívate cloud para tener nuestro espacio privado dentro de su ecosistemas con nuestros propios permisos de acceso. La aplicacion Back-end estará desarrollada con java Spring Boot, implementando paradigma de programación reactivo, esta aplicacion estará dentro de una instancia EC2 con SO Linux, una instancia pequeña ya que por el momento no se requiere el uso de muchos recursos, se piensa ir escalándola por microservicios según la necesidad, y que estos microservicios se puedan comunicar con el bróker de mensajeria RabbitMQ para manejar asincronismo y comunicación entre los microservicios. El Front por el momento estará alojado en un bucket s3, ya que aws nos permite correr de manera ligera y economica codigo react en un bucket. Y se tiene pensado también usar un bucket para guardar
copia de las facturas, y algunos catálogos en PDF según se requiera. La base de datos es relacional seria una RDS Posgresql.
Referencias Bibliográfica a. Patrones de arquitectura: Martin Fowler. (2002). Patterns of Enterprise Application Architecture. Addison-Wesley Professional. Chris Richardson. (2019). Microservices Patterns: With examples in Java. Manning Publications. Sam Newman. (2015). Building Microservices: Designing Fine-Grained Systems. O'Reilly Media, Inc. b. Libros y artículos de investigaciones relacionadas:
J. Michael McCarthy. (2006). Service-Oriented Architecture (SOA): A Planning and Implementation Guide for Business and Technology. Wiley. Thomas Erl. (2007). SOA Principles of Service Design. Prentice Hall. Eric A. Marks. (2006). Service-Oriented Architecture (SOA): Concepts, Technology, and Design. Wiley. c. Informes técnicos de herramientas relacionadas: Apache CXF: esta herramienta de software libre proporciona una plataforma para desarrollar y desplegar servicios web utilizando el estándar de servicios web SOAP. Kubernetes: esta plataforma de orquestación de contenedores es útil para implementar y administrar aplicaciones distribuidas que utilizan la arquitectura de software orientada a servicios. AWS Lambda: este servicio de computación sin servidor permite ejecutar código sin tener que administrar los servidores.
View more...
Comments