Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Tecnologia Web

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

FACULTAD DE CIENCIAS E INGENIERÍA

CARRERA DE INGENIERÍA DE SOFTWARE

TEMA:
Diseño De La Arquitectura Y Selección De Tecnologías Para El
Desarrollo De Una Aplicación Web

AUTORES:
Ramirez Obando Johnny Mauricio
Arteaga Franco Abid Abraham
Padilla Valverde Steven David
Sanchez Lino Cristhian Alfredo
Trejo Herrera Karla Fernanda
Zuñiga Ochoa Valentina Katherine
ASIGNATURA:
Tecnologías para la web

CURSO: C4

DOCENTE:
Castillo Villegas Kevin Gabriel

FECHA DE ENTREGA:
12/10/24

PERIODO:
Agosto 2024 a Diciembre 2024

MILAGRO-ECUADOR
Contenido
Introducción .......................................................................................................... 3

LINK DEL VIDEO: ............................................................................................. 3

Desarrollo ............................................................................................................. 4

Analizar: ............................................................................................................... 4

¿Qué solución en cuanto a la arquitectura de la aplicación y tecnologías le


brindaría al gerente del local “El sitio frio”? .................................................................... 5

a. Listado de requerimientos de software ....................................................... 5

b. Análisis (Discusión sobre opciones de arquitecturas y tecnologías a utilizar) . 6

Opciones de Arquitectura ..................................................................................... 7

Opciones de Tecnologías ...................................................................................... 7

c. Selección de la arquitectura .............................................................................. 9

d. Selección de tecnologías ................................................................................... 9

e. Tabla resumen de la arquitectura y tecnologías seleccionadas en la práctica 10

f). - ¿Es necesario implementar en la nube o implementar un pequeño data center?


Explicar el porqué. .......................................................................................................... 11

Conclusión y Recomendaciones ......................................................................... 12

Referencias Bibliográficas .................................................................................. 13

Anexos ................................................................................................................ 14
Introducción

La heladería "El Sitio Frío" enfrenta un problema de gestión y operación de sus cuatro
sucursales, que actualmente llevan sus procesos de forma manual. La digitalización de
estos procesos es crucial para aumentar la eficiencia y la precisión en la gestión de
inventarios, el control de ventas, la facturación en tiempo real, y la generación de
reportes de pérdidas y ganancias. La empresa no cuenta con infraestructura tecnológica,
por lo que el desarrollo de una aplicación web adaptada a sus necesidades es esencial.
Esta aplicación deberá permitir gestionar usuarios y roles, facilitando el acceso y uso
de la herramienta de manera segura por el personal de la empresa.

El objetivo es diseñar una solución tecnológica que automatice y optimice los procesos
actuales, garantizando una adecuada integración de todos los locales y una plataforma
centralizada para la toma de decisiones. Se analizarán dos opciones: el despliegue en
la nube o la implementación de un pequeño data center, buscando la mejor opción
según las necesidades y recursos de la heladería.

LINK DEL VIDEO:

https://drive.google.com/file/d/1clHpbWbqy2ow5zTJuKHdUBdakWZOb7GB/vi
ew?usp=sharing
Desarrollo

Analizar:

Una heladería “El sitio frio” de una determinada ciudad, cuenta con 4 locales en
diferentes sitios, cada uno de ellos cuenta con personal, que está dividido en heladeros,
ayudantes de heladería, meseros que atienden, cajeros u otros cargos propios del
negocio. Cada trabajador cobra quincenal, se hacen compras para todos los locales,
pero en forma general y son repartidos para cada local los materiales para la preparación
de los helados y postres, cada local realiza sus ventas.

Se necesita controlar el inventario de su materia prima de su bodega general y de las


sucursales, así como controlar la facturación en tiempo real; además registrar datos que
garanticen obtener el estado de pérdidas o ganancias, que se obtiene de las ventas
menos los egresos que abarca las compras de materia prima y pago de empleados. Cabe
indicar que el local actualmente lleva todos estos procesos de forma manual.

Si estuviera a punto de desarrollar o gestionar un proyecto de desarrollo de software


que resuelva este problema. ¿Qué solución en cuanto a la arquitectura de la aplicación
y tecnologías le brindaría al gerente del local “El sitio frio”?

Para ello es importante recalcar que la empresa no dispone de infraestructura para alojar
sus aplicaciones, es decir se consideran como “cero tecnologías”. En función a lo
anterior se necesita desarrollar una aplicación web que solucione dicho problema sin
importar que se despliegue en las instalaciones de la sucursal principal “El sitio frio” o
en la nube. Para ello es necesario diseñar la arquitectura y seleccionar las tecnologías
adecuadas (software libre). Además, es necesario analizar de manera general qué le
conviene al local “El sitio frio”, o contratar el servicio en la nube para alojar su
infraestructura o invertir en un pequeño data center.
¿Qué solución en cuanto a la arquitectura de la aplicación y tecnologías le
brindaría al gerente del local “El sitio frio”?

Dado que la empresa actualmente no tiene ninguna infraestructura tecnológica ("cero


tecnologías"), la solución que debería brindar el gerente seria la siguiente:

• La creación de una aplicación web accesible desde cualquier lugar (incluyendo


los 4 locales).

• Una arquitectura que soporte tanto la gestión de inventario en la bodega general


y en las sucursales.

• Control de roles y usuarios para gestionar diferentes tipos de trabajadores con


accesos adecuados (heladeros, cajeros, meseros, gerentes, etc.).

• Control de la facturación y generación de reportes financieros.

Además, la empresa debe decidir si es conveniente:

• Contratar un servicio en la nube para alojar la infraestructura, o

• Invertir en un pequeño data center local para alojar la aplicación en sus


instalaciones.

a. Listado de requerimientos de software

1. Gestión de inventario centralizado: La aplicación debe permitir registrar,


monitorear y gestionar el inventario tanto de la bodega general como de cada
sucursal, con notificaciones automáticas cuando el stock esté bajo.

2. Control de ventas en tiempo real: Cada local debe poder registrar sus ventas
en tiempo real, permitiendo que la información se sincronice en una base de
datos centralizada.
3. Facturación electrónica: Generación de facturas electrónicas para cada venta
realizada, con soporte para integrarse con sistemas fiscales locales.

4. Gestión de usuarios y roles: Diferenciación clara de roles (administrador,


cajero, mesero, etc.) con permisos específicos para cada uno.

5. Generación de reportes financieros: Capacidad de generar reportes de ventas,


costos de materia prima, sueldos, y generar un balance de pérdidas y ganancias.

6. Historial de transacciones y auditoría: Registrar cada operación realizada en


el sistema para fines de auditoría interna, con capacidad de exportar los datos.

7. Integración de nómina: Registrar el salario de los empleados y calcular los


pagos quincenales en función del tipo de trabajador.

8. Control de egresos: Registro de compras de materia prima y cualquier otro


gasto relevante, que afecte directamente al estado de resultados.

9. Alerta de inventario bajo: Notificaciones automáticas para los


administradores cuando los niveles de inventario caen por debajo de un umbral
definido.

10. Escalabilidad: El sistema debe estar preparado para futuras expansiones de la


empresa, como la apertura de más sucursales o la incorporación de nuevos
productos.

b. Análisis (Discusión sobre opciones de arquitecturas y tecnologías a


utilizar)

Al comenzar el proyecto, decidimos analizar varias opciones de arquitecturas y


tecnologías que mejor se ajustaran a las necesidades de "El Sitio Frío". En conjunto
con el equipo, evaluamos diferentes alternativas teniendo en cuenta la situación actual
del negocio (sin infraestructura tecnológica), la necesidad de una solución escalable y
el uso de software libre.
Opciones de Arquitectura

Durante las primeras reuniones, discutimos la posibilidad de utilizar una arquitectura


cliente-servidor tradicional, donde todo el procesamiento se centralizaría en un servidor
y los clientes (navegadores web) simplemente consumirían los datos. Si bien esta
opción es simple y fácil de implementar, no la consideramos viable a largo plazo debido
a la falta de flexibilidad en cuanto a escalabilidad. Además, ante un aumento
significativo de usuarios o ventas, el servidor podría convertirse en un cuello de botella.

En cambio, nos inclinamos por una arquitectura en capas (n-tier), ya que permite una
mejor separación de responsabilidades y facilita tanto la escalabilidad como el
mantenimiento. Esta arquitectura divide la aplicación en tres capas:

1. Capa de presentación (frontend), responsable de la interacción con los usuarios.

2. Capa de lógica de negocio (backend), donde se implementan las reglas del


negocio, como el control de inventarios y la gestión de ventas.

3. Capa de acceso a datos, encargada de gestionar la interacción con la base de


datos.

Optamos por esta arquitectura porque nos ofrece la posibilidad de escalar cada capa de
manera independiente y nos permite que diferentes equipos trabajen simultáneamente
en distintas partes del sistema sin interferencias. Esto fue especialmente importante, ya
que queríamos una solución que pudiera adaptarse al crecimiento del negocio a medida
que abran más sucursales o aumenten sus ventas.

Opciones de Tecnologías

Frontend: En cuanto a la tecnología para el frontend, tuvimos varias discusiones


dentro del equipo sobre qué biblioteca o framework utilizar. Inicialmente,
consideramos Vue.js y React.js. Vue.js es conocido por ser ligero y tener una curva de
aprendizaje suave, mientras que React.js es ampliamente adoptado, tiene una
comunidad robusta y está diseñado para manejar interfaces de usuario complejas.
Después de evaluarlo, decidimos utilizar React.js porque nos brindaba una mayor
flexibilidad y modularidad a la hora de construir componentes reutilizables. Además,
el sistema necesitaba ser dinámico y React encajaba perfectamente en ese escenario,
permitiendo actualizaciones en tiempo real sin recargar la página completa.

Backend: Para el backend, una de las primeras opciones que se plantearon fue Django
debido a su robustez y las múltiples funcionalidades integradas. Sin embargo, dado que
queríamos un backend altamente escalable y con capacidad para manejar múltiples
solicitudes en tiempo real, optamos por utilizar Node.js con Express. Node.js es una
excelente opción cuando se trata de gestionar aplicaciones web que requieren alta
capacidad de respuesta, como el control en tiempo real de ventas y facturación.
Además, su naturaleza no bloqueante nos pareció ideal para manejar las interacciones
simultáneas provenientes de las diferentes sucursales de la heladería. Express, como un
framework minimalista, nos permitió tener control total sobre el backend y mantener
la simplicidad del código.

Base de datos: Otra parte crucial del sistema era la base de datos. Inicialmente,
barajamos entre bases de datos relacionales y NoSQL. Consideramos MongoDB por
su flexibilidad con datos no estructurados, pero finalmente nos decidimos por
PostgreSQL. La razón fue que PostgreSQL nos ofrecía una estructura más robusta para
gestionar las relaciones complejas entre ventas, inventarios y empleados, características
fundamentales para nuestro sistema. Además, al ser una base de datos relacional,
facilita las consultas SQL tradicionales, lo que hace que la gestión de datos sea más
sencilla y eficiente.

Contenedores y despliegue: Desde el principio, fue claro que necesitábamos una


solución que fuera fácilmente desplegable, tanto en la nube como en una infraestructura
local. Para ello, decidimos utilizar Docker. Docker nos proporcionó la ventaja de
empaquetar la aplicación y sus dependencias en contenedores, haciendo que el sistema
fuera extremadamente portátil. Esto también nos preparó para la posibilidad de escalar
el sistema en el futuro sin tener que preocuparnos por problemas de compatibilidad
entre diferentes entornos.

Al finalizar la discusión, llegamos a la conclusión de que la combinación de React.js


en el frontend, Node.js con Express en el backend, PostgreSQL como base de datos
y Docker como solución de despliegue nos proporcionaría una arquitectura flexible,
escalable y eficiente que cumplía con todos los requisitos del negocio.

c. Selección de la arquitectura

Arquitectura en capas (n-tier): Se recomienda esta arquitectura por su simplicidad y


organización clara, con una capa de presentación (frontend), una capa de lógica de
negocio (backend) y una capa de persistencia de datos (base de datos). Esta arquitectura
facilita el mantenimiento y el crecimiento del sistema a medida que se incorporan más
funcionalidades. Además, permite separar el frontend y el backend, lo cual es útil para
futuras integraciones.

d. Selección de tecnologías

1. Frontend: React.js. Se selecciona React.js por su capacidad de crear interfaces


de usuario rápidas y dinámicas, junto con su soporte extensivo para aplicaciones
complejas, ideal para un sistema de gestión integral.

2. Backend: Node.js con Express. Node.js es ideal para manejar múltiples


conexiones en tiempo real, algo crucial para la facturación en vivo y la gestión
de inventarios distribuidos.

3. Base de datos: PostgreSQL. Su capacidad para manejar datos estructurados y


relaciones complejas (como las entre inventarios, ventas y empleados) lo hace
la mejor opción.

4. Infraestructura: Docker. Facilita el despliegue, portabilidad y mantenimiento


de la aplicación, sea en la nube o en un servidor físico, además de permitir la
escalabilidad.
e. Tabla resumen de la arquitectura y tecnologías seleccionadas en la práctica
Tabla resumen de la arquitectura y tecnologías seleccionadas en la practica

Componente Tecnología Seleccionada Justificación

Permite separación de
responsabilidades,
Arquitectura en capas (n-
Arquitectura escalabilidad y facilita el
tier)
mantenimiento a largo
plazo.

Proporciona flexibilidad y
modularidad, ideal para
Frontend React.js
interfaces dinámicas y en
tiempo real.

Maneja múltiples
solicitudes en tiempo real
Backend Node.js con Express
con alta eficiencia y
escalabilidad.

Relacional, robusta y con


soporte para relaciones
Base de Datos PostgreSQL complejas, ideal para
gestionar ventas e
inventarios.

Facilita el despliegue, la
portabilidad y la
Contenedores Docker
escalabilidad en la nube o
en local.

Ligero y eficiente,
adecuado para servir
Servidor Web Nginx contenido estático y como
proxy inverso para
Node.js.
f). - ¿Es necesario implementar en la nube o implementar un pequeño data
center? Explicar el porqué.

Después de analizar las necesidades de "El Sitio Frío" y considerando la arquitectura


seleccionada, recomendamos implementarla en la nube en lugar de invertir en un
pequeño data center. Aquí las razones:

1. Escalabilidad:

• La nube permite escalar recursos rápidamente, lo cual es crucial para una


empresa en crecimiento como "El Sitio Frío", con múltiples sucursales. La
arquitectura en capas que hemos seleccionado puede beneficiarse de la
elasticidad de la nube para ajustar la capacidad de procesamiento y
almacenamiento en función de la demanda.

2. Costos Iniciales:

• La nube elimina la necesidad de realizar una inversión inicial considerable en


hardware y servidores físicos. Los proveedores de la nube, como Amazon Web
Services (AWS) o Microsoft Azure, ofrecen un modelo de pago por uso, lo cual
es ideal para un negocio que puede tener fluctuaciones en el volumen de ventas
y en la carga de trabajo.

3. Mantenimiento y Soporte:

• En un pequeño data center, la empresa tendría que gestionar y mantener tanto


el hardware como la infraestructura de red, lo que requiere personal técnico
capacitado. Al optar por la nube, la mayor parte de esta responsabilidad recae
en el proveedor, lo que reduce la carga operativa para el negocio.

4. Seguridad y Respaldo:

• Los proveedores de nube ofrecen altos niveles de seguridad, cumplimiento


normativo y redundancia de datos, lo que garantiza la protección de la
información crítica de la empresa. Además, la nube permite realizar copias de
seguridad automáticas sin necesidad de configuraciones complejas.

5. Disponibilidad y Acceso Remoto:

• Con la nube, "El Sitio Frío" puede acceder a su sistema desde cualquier lugar,
lo cual es beneficioso para la gestión de múltiples sucursales en tiempo real.
Esto proporciona flexibilidad operativa y permite que el sistema esté disponible
24/7.

Conclusión y Recomendaciones

A lo largo del desarrollo de este proyecto, adquirimos una serie de experiencias valiosas tanto a
nivel técnico como organizativo. La selección de la arquitectura y las tecnologías implicó un
proceso exhaustivo de análisis de las necesidades del negocio, así como de evaluación de
diferentes opciones tecnológicas. Estas son algunas de las principales lecciones aprendidas:

1. Importancia de una arquitectura escalable: Al optar por una arquitectura en capas (n-
tier), comprendimos la relevancia de diseñar sistemas que no solo solucionen problemas
actuales, sino que también estén preparados para el crecimiento y la expansión futura del
negocio. Esta experiencia nos hizo valorar la flexibilidad y adaptabilidad que ofrecen las
arquitecturas modulares.

2. Uso eficiente de tecnologías modernas: Trabajar con tecnologías como React.js y


Node.js nos permitió familiarizarnos con herramientas poderosas que facilitan el
desarrollo de aplicaciones dinámicas y en tiempo real. Esto nos enseñó a maximizar las
ventajas de frameworks y bibliotecas modernas, aprendiendo a optimizar el rendimiento
y la mantenibilidad del código.

3. Despliegue con Docker y su portabilidad: La implementación de contenedores Docker


fue una experiencia reveladora en cuanto a la estandarización del entorno de desarrollo y
la facilidad para desplegar la aplicación en diferentes infraestructuras. Este enfoque nos
mostró cómo las tecnologías de contenedores son esenciales para asegurar consistencia
entre desarrollo y producción.

4. Toma de decisiones sobre la infraestructura: Al evaluar las opciones entre la nube y


un data center local, adquirimos una comprensión más profunda de las ventajas que ofrece
la nube, como la escalabilidad y el bajo costo inicial. Este análisis nos proporcionó una
visión más clara sobre cómo las decisiones de infraestructura impactan en el costo,
mantenimiento y futuro de un sistema.

5. Trabajo colaborativo y gestión de equipos: Colaborar en equipo, dividiendo tareas


entre el frontend, backend y la base de datos, nos enseñó la importancia de una buena
coordinación y comunicación en proyectos de desarrollo de software. Esta experiencia
reforzó nuestras habilidades de trabajo en equipo y nos permitió aplicar metodologías
ágiles para organizar el progreso del proyecto de manera efectiva.

Referencias Bibliográficas

• Tanenbaum, A. S., & Van Steen, M. (2016). Distributed systems: Principles and
paradigms. Pearson Education.
• Fowler, M. (2012). Patterns of enterprise application architecture. Addison-
Wesley.
• Jansen, S., & Bosch, J. (2010). Software Architecture. Springer.
• Freeman, E., & Robson, E. (2014). Head First JavaScript Programming.
O'Reilly Media.
• Duckett, J. (2014). JavaScript and JQuery: Interactive Front-End Web
Development. Wiley.
• Sholtz, J. (2021). Mastering Node.js. Packt Publishing.
• Kurniawan, B. (2020). Mastering Express.js. Mercury Learning.
• Meehan, E. (2019). React.js Essentials. Packt Publishing.
• Valentin, S., & Tarasov, S. (2017). Pro PostgreSQL Database for Engineers.
Springer.
• Merkel, D. (2014). Docker: Lightweight Linux containers for consistent
development and deployment. Linux Journal.
Anexos

React.js

-Interaccion con el usuario final, gestiomando el interfas y


proporciomando una experiencia dinamica y responsiva

Funciones

Capa de presentacion (Frontend)

-Actualizaciones en tiempo real sin recargar la pagina


-Envio de recepcion de datos hacia el backend

La capa de presentacion, construida con React.js, es


responsable de mostrar la interfaz de usuario (UI). permite la
Descripcion interaccion directa con la aplicacion, enviando solicitudes al
back y actualizando la vista de manera eficiente. Gracias a
react.js, las interfaces con más dinámica y modulares,
mejorando la experiencia del usuario.

Node.js con Express

- Procesar las solicitudes del fronted.


Capa de lógico de negocio (Backenk) Funciones -Control del inventario y ventas
- Gestion de roles.
Capas

El backend se encarga de la lógica de negocio, aplicando las reglas


Descripcion necesarias para gestionar ventas, inventarios, y facturación en tiempo
real.

-Almacenar y gestionar lo datos relacionados con inventarios. ventas,


PostegrsSQL empleados y otras transacciones. -
Garantizar la integridad y consistencia de los datos.

Caoa de Acceso de Negocio (Backend)

PostgreSQL maneja las relaciones entre ventas, inventarios y


Deacripción empleados, garantizando la integridad de los datos y permitiendo
informes detallados.

También podría gustarte