Seleccion de tecnologias - ISIS2503-202310-S2-LasDivinas/Documentacion_Arquitectura GitHub Wiki

Sprint 3

Selección del Framework Django

Decidimos usar Django, entre otras razones porque es un framework gratuito y de código abierto para Python que ofrece múltiples ventajas en comparación con otras tecnologías. En primer lugar, Django permite que el proceso de desarrollo finalice de manera rápida y eficiente, permite la autenticación de usuario, administración de contenido y permite escalar de forma rápida y flexible para satisfacer las demandas de alto tráfico. Dado que ya hemos tenido experiencia trabajando con Python, trabajar con Django nos brinda mayor facilidad.

Decidimos usar está aplicación ya que, al ser un framework de Python se adapta a el lenguaje que elegimos trabajar. Además, este permite crear una página web con sus componentes básicos sin necesidad de empezar a construirla desde cero, permitiéndonos manejar convenciones ya planteadas para realizar una mejor aplicación. Está aplicación además es capaz de recibir y responder peticiones HTTP y mapear urls de enpoints de la aplicación, lo cual va de acuerdo con los diagrama planteados. Al seguir un patrón MVT (Model View Template) django permite representar la cantidad de datos que queremos manejar, procesar las múltiples solicitudes que puedan llegar y, adicionalmente, nos permite definir la forma en la que el usuario interactúa con nuestra aplicación de forma sencilla y poco tediosa, además de permitirnos reutilizar estos templates de ser necesario. Django nos permite poder crear nuestra aplicación basándonos directamente en el diagrama de componentes según el cual definimos tres capas (basándonos en la táctica de 3-tier), que son acordes con las capas que deberían usarse en las buenas prácticas de Django y permite que podamos corregir identificar fácilmente errores en la aplicación gracias a que reduce el acoplamiento del sistema.

Selección de Auth0

Elegimos utilizar Auth0 para el proceso de autenticación en tanto que es gratis, ofrece documentación detallada que facilita la implementación de la autenticación en tu aplicación, permite integrar fácilmente diferentes proveedores de identidad, como Google o Facebook, provee una interfaz de administración intuitiva que te permite gestionar usuarios, roles y permisos de forma centralizada. Además, es una plataforma ampliamente reconocida, lo cual garantiza su buen funcionamiento.

Alternativas evaluadas

A Django

Una alternativa popular al framework Django es Flask. Aunque Flask es ligero, flexible y ofrece gran libertad al desarrollador, Django proporciona una arquitectura sólida y bien definida, y cuenta con un ORM (Object-Relational Mapping) que facilita el manejo de las bases de datos sin incurrir en riesgos de seguridad.

A Auth0

Una alternativa popular a Auth0 es Firebase Authentication, que también ofrece una solución de autenticación fácil de usar. Sin embargo, Auth0 se destaca como una opción superior por varias razones. Auth0 ofrece una mayor flexibilidad en términos de integración con diferentes proveedores de identidad, lo que permite a los usuarios autenticarse utilizando sus credenciales existentes. Además, Auth0 proporciona funciones de seguridad avanzadas, como la autenticación multifactor y el análisis de riesgos, que pueden mejorar la protección de tus aplicaciones

Sprint 2

Selección del Framework Django

Decidimos usar Django, entre otras razones porque es un framework gratuito y de código abierto para Python que ofrece múltiples ventajas en comparación con otras tecnologías. En primer lugar, Django permite que el proceso de desarrollo finalice de manera rápida y eficiente, permite la autenticación de usuario, administración de contenido y permite escalar de forma rápida y flexible para satisfacer las demandas de alto tráfico. Dado que ya hemos tenido experiencia trabajando con Python, trabajar con Django nos brinda mayor facilidad.

Decidimos usar está aplicación ya que, al ser un framework de Python se adapta a el lenguaje que elegimos trabajar. Además, este permite crear una página web con sus componentes básicos sin necesidad de empezar a construirla desde cero, permitiéndonos manejar convenciones ya planteadas para realizar una mejor aplicación. Está aplicación además es capaz de recibir y responder peticiones HTTP y mapear urls de enpoints de la aplicación, lo cual va de acuerdo con los diagrama planteados. Al seguir un patrón MVT (Model View Template) django permite representar la cantidad de datos que queremos manejar, procesar las múltiples solicitudes que puedan llegar y, adicionalmente, nos permite definir la forma en la que el usuario interactúa con nuestra aplicación de forma sencilla y poco tediosa, además de permitirnos reutilizar estos templates de ser necesario. Django nos permite poder crear nuestra aplicación basándonos directamente en el diagrama de componentes según el cual definimos tres capas (basándonos en la táctica de 3-tier), que son acordes con las capas que deberían usarse en las buenas prácticas de Django y permite que podamos corregir identificar fácilmente errores en la aplicación gracias a que reduce el acoplamiento del sistema.

Selección de herramienta de pruebas Apache JMeter

Decidimos utilizar Apache JMeter para realizar las pruebas de carga de nuestra aplicación porque está optimizada para testear aplicaciones web, tal como la nuestra. Además, se puede utilizar para simular una carga pesada en un servidor, grupo de servidores, red u objeto. Cuenta con herramientas que permiten analizar el rendimiento general bajos diferentes tipos de carga, así como la generación de reportes. Dado que ya la hemos utilizado en otros cursos y en los laboratorios, y tomando en cuenta la gran cantidad de funcionalidades que trae esta herramienta, y la facilidad de uso que permite explorar una inmensa cantidad de ambientes de carga, consideramos que Apache JMeter es una excelente opción para la realización de las pruebas de nuestra aplicación.