Está en la página 1de 23

1

Aplicación ATAM
Arquitectura de Software y Sistemas

Curso Arquitectura de Software y Sistemas


MSI604 

Profesor Investigador Dr. Juan Felipe Calderón


Estudiantes Matías Rojas Cabrera
Isaac Daroch Ormeño

Contenido
Aplicación ATAM...............................................................................................................1

Introducción.....................................................................................................................3

Identificación de aproximaciones arquitecturales...........................................................3

Árbol de Utilidades..........................................................................................................9

Wednesday, 6 de September de 2023


2

Análisis - Riesgos / No Riesgos.....................................................................................12

Análisis - Puntos Sensibilidad.......................................................................................13

Análisis - Trade Offs.....................................................................................................14

Diagrama Arquitectónico...............................................................................................15

Arquitectura Propuesta..................................................................................................18

Presupuesto....................................................................................................................19

Estilo Arquitectónico:....................................................................................................20

Introducción

En la era digital, la educación se ha transformado y globalizado, especialmente en el


aprendizaje de idiomas como el inglés. Este informe se enfoca en analizar la arquitectura de
software para un sistema colaborativo de aprendizaje de pronunciación en inglés. Exploraremos
diversos enfoques arquitectónicos, como cliente-servidor, microservicios, serverless, P2P y nube,

Wednesday, 6 de September de 2023


3

teniendo en cuenta atributos de calidad cruciales como precisión, latencia, escalabilidad,


privacidad y disponibilidad utilizando la metodología ATAM.
El aprendizaje de idiomas se ha vuelto más interactivo y colaborativo, permitiendo a
estudiantes de diferentes lugares trabajar juntos en el perfeccionamiento de sus habilidades
lingüísticas. Cada enfoque arquitectónico ofrece ventajas y desventajas únicas. Por ejemplo, la
arquitectura cliente-servidor permite una centralización eficaz de funciones críticas, mientras que
los microservicios brindan flexibilidad y escalabilidad individual de componentes.
La elección de la arquitectura adecuada dependerá de factores como los requisitos del
proyecto, las capacidades tecnológicas y las prioridades específicas. En este contexto, los trade-
offs son fundamentales, como el equilibrio entre precisión y latencia en el reconocimiento de voz
o entre escalabilidad y privacidad de datos.
Este informe también aborda posibles riesgos, como la dependencia del reconocimiento
de voz, la latencia en arquitecturas distribuidas, la conectividad y la seguridad de los datos. Por
otro lado, destacamos aspectos positivos como la adaptabilidad, disponibilidad, escalabilidad y
rapidez de implementación que pueden beneficiar este sistema educativo.

Identificación de aproximaciones arquitecturales


 Arquitectura Cliente-Servidor:

Utiliza una arquitectura cliente-servidor donde los dispositivos móviles de los estudiantes actúan
como clientes y se comunican con un servidor central, el cual se encarga del procesamiento de
reconocimiento de voz y almacena las secuencias de números (Correctos e incorrectos), permite
una distribución eficiente de recursos disponibles y actualizaciones en el servidor de manera ágil.
Un aspecto destacado de esta arquitectura es que permite que los dispositivos móviles de
los estudiantes sean más ligeros en términos de recursos, lo que facilita la interacción del
usuario. Mientras los usuarios se concentran en la parte interactiva de la aplicación. Esto permite
que pueden utilizar dispositivos móviles más simples sin sacrificar la calidad del aprendizaje.
Ventajas:
1. Centralización de Funcionalidades: Al utilizar un servidor centralizado, es posible
controlar y gestionar de manera efectiva funciones críticas como el reconocimiento de
voz y el almacenamiento de secuencias de números.
2. Escalabilidad: entrega la posibilidad escalar verticalmente el servidor para manejar un
mayor número de peticiones y recursos necesarios para el correcto funcionamiento del
sistema.
3. Coordinación Fácil: La centralización facilita la coordinación entre estudiantes,
almacenamiento de secuencias correctas y facilita la presentación de opciones de
secuencias para votación.

Wednesday, 6 de September de 2023


4

4. Actualizaciones Simplificadas: Las actualizaciones de la lógica de reconocimiento de voz


o de otras características se pueden implementar en el servidor central, desplegándose
automáticamente para usuario (cliente) que accede al sistema.
Desventajas:
1. Dependencia del Servidor: Si el servidor experimenta fallas o está inaccesible, la
funcionalidad y disponibilidad podría verse afectada.
2. Latencia: La latencia puede ser un problema si las comunicaciones entre el cliente y el
servidor no son óptimas.

 Arquitectura Basada en Microservicios:

Divide la aplicación en componentes autónomos llamados microservicios, cada microservicio


maneja una función específica, como reconocimiento de voz, almacenamiento de secuencias,
gestión de interacciones, etc. Esto facilita la escalabilidad y el mantenimiento independiente de
los componentes permitiendo implementar tecnologías específicas para cada microservicio de
forma independiente.
Ventajas:
1. Desacoplamiento y Mantenibilidad: Los microservicios están separados y desacoplados,
lo que facilita la modificación y el mantenimiento de partes específicas sin afectar a todo
el sistema.
2. Escalabilidad Individual: Los microservicios se pueden escalar independientemente
según las demandas de cada componente, lo que optimiza el uso de recursos y mejora la
escalabilidad horizontal.
3. Tecnologías y Lenguajes Diversos: Cada microservicio puede estar diseñado utilizando
tecnologías y lenguajes apropiados para su función, permitiendo utilizar lo mejor de cada
tecnología.
4. Desarrollo Ágil: Los equipos pequeños pueden trabajar en paralelo en diferentes
microservicios, lo que acelera el desarrollo y permite la entrega continua.
5. Facilita la Innovación: La separación en microservicios permite la adopción de
tecnologías emergentes sin afectar el sistema en su conjunto.
6. Actualizaciones Sin Interrupciones: Se pueden actualizar y desplegar microservicios
individuales sin necesidad de apagar todo el sistema, minimizando el tiempo de
inactividad.
7. Escalabilidad y Disponibilidad: La resiliencia se logra al poder distribuir y replicar
microservicios en diferentes nodos, lo que mejora la disponibilidad.
Desventajas:

Wednesday, 6 de September de 2023


5

1. Complejidad en la Gestión: Coordinar múltiples microservicios puede ser complejo,


especialmente a medida que el sistema crece. Requiere una sólida gestión y orquestación.
2. Comunicación Entre Microservicios: La comunicación entre microservicios a través de
redes puede tener latencia y debe ser cuidadosamente diseñada para evitar cuellos de
botella.
3. Testing y Depuración: Probar e identificar errores en un entorno distribuido puede ser
más complicado, ya que las interacciones entre microservicios deben ser consideradas.
4. Costos Iniciales: La implementación inicial de la arquitectura puede requerir más
esfuerzo debido a la necesidad de diseñar interfaces claras y gestionar la comunicación.
5. Posible Exceso de Fragmentación: Si se crea un microservicio para cada pequeña
funcionalidad, puede haber una proliferación excesiva de microservicios que dificulta la
gestión.
6. Latencia en Comunicación: La latencia de la red entre microservicios puede afectar el
rendimiento en comparación con un sistema monolítico.

 Arquitectura Serverless:

Utiliza servicios en la nube para realizar tareas específicas sin administrar servidores, los
microservicios pueden ejecutarse como funciones en respuesta a eventos (por ejemplo, grabación
de audio, reconocimiento de voz, etc.), escala automáticamente según la demanda y optimiza el
consumo de recursos.
Ventajas:
1. Escalabilidad Automática: Los proveedores de servicios en la nube manejan la
escalabilidad automáticamente, aumentando o disminuyendo los recursos según la
demanda.
2. Costos Eficientes: Pagas solo por el tiempo que se ejecutan tus funciones, lo que puede
resultar en costos más bajos en comparación con mantener servidores continuamente.
3. Gestión Simplificada: No es necesario administrar la infraestructura subyacente, lo que
reduce la carga de mantenimiento y permite a los equipos centrarse en el desarrollo.
4. Rápida Implementación: Puedes implementar y desplegar funciones rápidamente, lo que
agiliza el ciclo de desarrollo.
5. Enfoque en la Lógica del Negocio: Los desarrolladores pueden concentrarse en la lógica
del negocio en lugar de preocuparse por la administración del servidor.
Desventajas:
1. Limitaciones de Tiempo de Ejecución: Las funciones serverless tienen un tiempo
máximo de ejecución, lo que puede ser una limitación para tareas intensivas en tiempo o
procesamiento.

Wednesday, 6 de September de 2023


6

2. Latencia: La activación de una función serverless puede generar una breve latencia en
comparación con un servidor en funcionamiento constante.
3. Complejidad de Pruebas: Las pruebas pueden ser más desafiantes debido a la naturaleza
distribuida y efímera de las funciones.
4. Dependencia del Proveedor: La arquitectura serverless está vinculada al proveedor de la
nube elegido, lo que puede dificultar la portabilidad entre plataformas.
5. Costo: En escenarios donde parte del código no está optimizado puede ocurrir una
sobreutilización de los recursos disponibles generando costos excesivos para el proyecto.
 Arquitectura Peer-to-Peer (P2P):

Permite que los dispositivos de los estudiantes se comuniquen directamente entre sí, sin un
servidor central, cada dispositivo realiza tareas como reconocimiento de voz y almacenamiento
de secuencias, sin embargo requiere una sincronización efectiva y manejo de conflictos entre los
dispositivos, su escenario optimo se da en casos donde la conectividad puede ser intermitente.
Ventajas:
1. Descentralización: No hay un punto único de falla, ya que cada nodo puede funcionar de
manera independiente y proporcionar recursos o servicios.
2. Escalabilidad Natural: A medida que se agregan más nodos a la red, la capacidad general
y la escalabilidad aumentan sin la necesidad de una infraestructura centralizada.
3. Menor Costo de Infraestructura: No se requieren servidores dedicados, lo que puede
reducir los costos operativos y de mantenimiento.
4. Autonomía de Nodos: Cada nodo puede tomar decisiones autónomamente y contribuir al
sistema sin depender de un servidor central.
5. Distribución Eficiente de Contenido: La arquitectura P2P es efectiva para compartir
contenido en situaciones de alta demanda, ya que cada nodo contribuye al tráfico.
Desventajas:
1. Gestión de Red Complicada: Coordinar y mantener la red P2P puede ser complejo,
especialmente a medida que crece en tamaño y complejidad.
2. Calidad Variable del Servicio: La disponibilidad y calidad del servicio pueden depender
de la capacidad y la cooperación de los nodos individuales.
3. Seguridad y Privacidad: La seguridad puede ser un desafío ya que los nodos pueden no
ser de confianza y compartir información sensible podría ser riesgoso.
4. Requerimientos de Ancho de Banda: En algunos casos, los nodos pueden requerir un alto
ancho de banda para compartir y recibir contenido, lo que puede afectar la red.
5. Desafíos de Enrutamiento: En redes P2P grandes, el enrutamiento eficiente puede ser
complicado debido a la falta de una autoridad central.

 Arquitectura Distribuida en la Nube:

Wednesday, 6 de September de 2023


7

Utiliza servicios en la nube para proporcionar la infraestructura necesaria, los componentes


pueden ser distribuidos en múltiples regiones geográficas para mejorar la latencia.
Aprovecha los servicios gestionados para reconocimiento de voz y almacenamiento de datos,
requiere una fuerte planificación de la arquitectura y una conectividad confiable a la nube.
En algunos casos puede ser considerablemente más costoso en comparación con otras
arquitecturas.
Ventajas:
1. Elasticidad y Escalabilidad: Puedes escalar recursos y capacidad de manera dinámica
según la demanda, lo que optimiza el rendimiento y ahorra costos.
2. Disponibilidad Mejorada: Los servicios en la nube generalmente ofrecen acuerdos de
nivel de servicio (SLA) para garantizar alta disponibilidad y redundancia.
3. Facilidad de Implementación: La infraestructura y servicios en la nube pueden
implementarse rápidamente, reduciendo el tiempo de comercialización.
4. Flexibilidad Tecnológica: Permite acceder a una variedad de servicios y tecnologías que
se adapten a las necesidades del proyecto.
5. Gestión Simplificada: La nube se encarga de tareas de gestión, como actualizaciones,
parches y mantenimiento, liberando a los equipos para enfocarse en el desarrollo.
Desventajas:
1. Latencia: La comunicación entre componentes distribuidos en la nube puede generar
latencia, lo que podría afectar la velocidad de respuesta.
2. Dependencia del Proveedor: Las decisiones arquitectónicas pueden estar influenciadas
por las limitaciones y características específicas del proveedor de la nube.
3. Costos Potenciales: Aunque la nube puede ser eficiente en términos de costos, si no se
gestionan adecuadamente, los costos pueden aumentar (poca optimización, mal diseño de
la solución).
4. Seguridad y Privacidad: El almacenamiento y procesamiento de datos en la nube plantean
preocupaciones de seguridad y privacidad que deben ser abordadas.
5. Desafíos de Integración: Integrar sistemas en la nube con sistemas locales o heredados
puede requerir esfuerzo adicional.
6. Complejidad de Facturación: Entender y controlar los costos de los servicios en la nube
puede ser complicado debido a las múltiples variables involucradas.

 Arquitectura Híbrida:

Combina características de varias aproximaciones arquitecturales según las necesidades, puede


utilizar la nube para el procesamiento intensivo, mientras que los dispositivos móviles gestionan
la interacción del usuario.

Wednesday, 6 de September de 2023


8

Permite maximizar la eficiencia y flexibilidad según los recursos disponibles.


Ventajas:
1. Flexibilidad: La arquitectura híbrida permite elegir la mejor solución para cada
componente de acuerdo a los requerimientos, en lugar de depender de un solo enfoque.
2. Optimización de Recursos: se utiliza la escalabilidad de la nube para componentes que
tienen fluctuaciones de demanda, mientras que mantienes el control local en otros.
3. Mitigación de Riesgos: Reducción del riesgo de depender de un único punto de falla o
proveedor.
4. Adaptabilidad: la arquitectura se adapta a medida que las necesidades y condiciones
cambian, manteniendo un equilibrio entre costos y rendimiento.
5. Uso de Tecnologías Específicas: es posible utilizar tecnologías emergentes o
especializadas en áreas específicas sin sacrificar la estabilidad en otras partes.
Desventajas:
1. Complejidad: La integración de diferentes componentes y tecnologías puede aumentar la
complejidad de la arquitectura y su gestión.
2. Desafíos de Coordinación: Coordinar y sincronizar los diferentes elementos de la
arquitectura puede ser complicado y requerir una planificación sólida.
3. Mayor Costo de Gestión: Mantener una infraestructura híbrida puede resultar en un
mayor costo de administración y operación.
4. Dependencia de Conectividad: La arquitectura híbrida depende de la conectividad entre
diferentes componentes, lo que puede generar problemas si la conexión falla.
5. Mayor Requisito de Expertise: Puede ser necesario contar con especialistas en diferentes
tecnologías y en la integración de sistemas híbridos.
En resumen, cada una de las arquitecturas mencionadas (Cliente-Servidor, Microservicios,
Serverless, P2P y Distribuida en la Nube) presenta ventajas y desventajas específicas. La
elección de la arquitectura adecuada dependerá de factores como los requisitos del proyecto, las
capacidades tecnológicas disponibles, las prioridades establecidas y, en algunos casos,
consideraciones económicas.
Por ejemplo, la arquitectura Cliente-Servidor destaca por su capacidad de control y
coordinación centralizados, mientras que los Microservicios se destacan por ofrecer flexibilidad
y escalabilidad. El enfoque Serverless simplifica la administración, el P2P promueve la
descentralización y la arquitectura Distribuida en la Nube brinda elasticidad.

Wednesday, 6 de September de 2023


9

La elección de la arquitectura óptima debe basarse en una evaluación cuidadosa de los


beneficios y desafíos inherentes a cada enfoque, con el objetivo de diseñar una solución
arquitectónica sólida que se alinee con los objetivos y necesidades específicas del proyecto.

Árbol de Utilidades
En el contexto de un árbol de atributos de utilidad, los atributos de utilidad se refieren a
características o cualidades deseables de un sistema o solución que contribuyen a su utilidad o
valor para los usuarios y partes interesadas. A continuación, se presentan una lista de posibles
atributos de utilidad que pueden ser relevantes para el presente escenario. aprendizaje
colaborativo de pronunciación en inglés:

Wednesday, 6 de September de 2023


10

Wednesday, 6 de September de 2023


11

Análisis - Riesgos / No Riesgos


Riesgos:
1. Dependencia de Reconocimiento de Voz:
Si el sistema de reconocimiento de voz falla o no es preciso, podría afectar la
retroalimentación y la evaluación de pronunciación, comprometiendo la efectividad del
aprendizaje.
2. Latencia en Arquitecturas: En arquitecturas P2P o distribuidas en la nube, la latencia en
la comunicación entre nodos podría afectar la respuesta en tiempo real del sistema,
disminuyendo la calidad de la experiencia de los usuarios, por ejemplo, en el
reconocimiento o en los votos.
En el caso de arquitecturas distribuidas, la gestión y coordinación de múltiples nodos,
como P2P, puede llevar a problemas de sincronización, errores de comunicación y
dificultades en la gestión.
3. Dependencia de la Conectividad: En arquitecturas distribuidas, la dependencia de la
conectividad a internet puede ser un riesgo si los dispositivos no tienen acceso confiable
y continuado, o bien si la conectividad es intermitente puede provocar errores en la
aplicación.
4. Privacidad y Seguridad: Al utilizar sistemas remotos y compartir datos entre dispositivos
o servicios, existe el riesgo de comprometer la privacidad y seguridad de los datos de los
usuarios.
5. Requerimientos de Ancho de Banda: Esto puede provocar un aprendizaje deficiente por
parte de los usuarios limitando los servicios que ellos pueden utilizarla. Además, también
limita la cantidad de datos que puedan entregar para la retroalimentación que se reciba de
los usuarios al sistema.
6. Dependencia de Plataformas Cloud: Si el sistema depende en exceso de servicios o
tecnologías externas (por ejemplo, reconocimiento de voz basado en la nube), podría
haber un riesgo si esos servicios enfrentan interrupciones o problemas.
No Riesgos:
1. Adaptabilidad en Arquitecturas Distribuidas: Las arquitecturas distribuidas, como la P2P
o distribuida en la nube, pueden brindar mayor adaptabilidad para escenarios en los que
la conectividad puede ser intermitente o para satisfacer demandas cambiantes.
2. Disponibilidad Mejorada: La arquitectura Cliente-Servidor puede proporcionar alta
disponibilidad y estabilidad, lo que es beneficioso para actividades como interactivas
como las que requieren una aplicación de este tipo.
3. Escalabilidad en Microservicios y Serverless: Las arquitecturas de microservicios y
serverless permiten escalar individualmente componentes específicos según la demanda,
lo que mejora el rendimiento y evita recursos infrautilizados.

Wednesday, 6 de September de 2023


12

4. Rápida Implementación: Las arquitecturas cloud, serverless y distribuida en la nube,


pueden facilitar la implementación y reducir los tiempos.
Por su parte la arquitectura P2P promueve la colaboración efectiva entre estudiantes,
incluso en ubicaciones físicas diferentes, lo que puede mejorar la experiencia de
aprendizaje.
Análisis - Puntos Sensibilidad
1. Reconocimiento de Voz Preciso: La sensibilidad del sistema al rendimiento del
reconocimiento de voz es un punto crítico. Si el reconocimiento es inexacto, la calidad de
la retroalimentación de pronunciación se verá afectada. Un atributo de calidad relevante
aquí sería la precisión del reconocimiento de voz.
2. Latencia de Respuesta: En un sistema de aprendizaje en tiempo real, la latencia en la
respuesta a las pronunciaciones de los estudiantes puede ser crítica para una experiencia
efectiva. La latencia sería un atributo de calidad a evaluar.
3. Disponibilidad del Sistema: Dado que el sistema implica interacciones de múltiples
usuarios, la disponibilidad del sistema es importante. Si el sistema no está disponible, los
estudiantes no podrán practicar ni recibir retroalimentación. La disponibilidad es un
atributo clave a considerar.
4. Escalabilidad: La capacidad del sistema para manejar múltiples usuarios y realizar tareas
de reconocimiento de voz y procesamiento en tiempo real es importante. Evaluar cómo el
sistema escala a medida que más usuarios lo utilizan sería crucial.
5. Privacidad de los Datos: Dado que el sistema implica grabación de pronunciaciones y
posiblemente almacenamiento en la nube, la privacidad de los datos es sensible. Evaluar
cómo se manejan y protegen los datos personales y las grabaciones de los estudiantes
sería relevante.
6. Sincronización en Arquitectura P2P: Si se utiliza una arquitectura P2P, la
sincronización y coordinación de las actividades entre los estudiantes podría ser un punto
de sensibilidad. Evaluar cómo se garantiza la coherencia y la colaboración en este
entorno es importante.
7. Evaluación y Abordaje de la estabilidad del servicio: Si se utiliza una arquitectura
distribuida en la nube, evaluar cómo se abordan la latencia y la escalabilidad en la
comunicación entre dispositivos y servidores remotos sería relevante.
8. Interoperabilidad y Mantenibilidad: Dado que el sistema podría expandirse con otras
actividades, evaluar la facilidad de integrar nuevas funcionalidades y mantener el sistema
a largo plazo es importante.

Wednesday, 6 de September de 2023


13

9. Calidad de Sonido: La calidad de los micrófonos y altavoces de los dispositivos de los


estudiantes podría afectar la precisión del reconocimiento de voz y la experiencia de
aprendizaje. Evaluar la calidad del sonido y su impacto en la funcionalidad.
10. Rendimiento en Condiciones de Conectividad Baja: Si el sistema se utiliza en lugares
con conectividad intermitente o baja, evaluar cómo se garantiza la funcionalidad y la
retroalimentación en estas condiciones es relevante.
Análisis - Trade Offs
El análisis de trade-offs en el contexto de la metodología ATAM implica la identificación y
evaluación de compensaciones o intercambios entre atributos de calidad en una arquitectura.
A continuación, se presenta un análisis de trade-offs basado en los atributos de calidad:
1. Reconocimiento de Voz Preciso vs. Latencia de Respuesta:
 Trade-off: Mejorar la precisión del reconocimiento de voz puede aumentar la
latencia de respuesta, ya que el sistema podría requerir más tiempo para procesar
y analizar las pronunciaciones.
 Decisión: El equilibrio entre precisión y latencia depende de las prioridades del
sistema. Si la retroalimentación precisa es crucial, se podría aceptar una latencia
ligeramente mayor.
2. Escalabilidad vs. Privacidad de Datos:
 Trade-off: Almacenar y procesar datos en la nube para escalabilidad puede
plantear preocupaciones sobre la privacidad y seguridad de los datos de los
estudiantes.
 Decisión: Se debe encontrar un equilibrio entre escalabilidad y privacidad.
Implementar medidas sólidas de seguridad y cifrado podría mitigar los riesgos.
3. Latencia en la Nube vs. Latencia en Dispositivos Locales:
 Trade-off: La arquitectura en la nube puede introducir latencia en la
comunicación entre dispositivos y servidores remotos, mientras que una
arquitectura local puede minimizar la latencia pero podría sacrificar escalabilidad.
 Decisión: La elección depende de si la latencia o la escalabilidad es más crítica.
Un enfoque híbrido podría minimizar estos trade-offs.
4. Disponibilidad vs. Complejidad de Mantenimiento:
 Trade-off: Lograr alta disponibilidad puede requerir redundancia y replicación, lo
que aumenta la complejidad de mantenimiento.

Wednesday, 6 de September de 2023


14

 Decisión: La complejidad puede justificarse si la disponibilidad es esencial. Sin


embargo, se debe gestionar adecuadamente para no sobrecargar el mantenimiento.

5. Calidad de Sonido vs. Costo de Dispositivos:


 Trade-off: Utilizar dispositivos con mayor calidad de sonido podría aumentar los
costos de los dispositivos para los estudiantes.
 Decisión: El equilibrio entre calidad de sonido y costo depende de cuánto afecta
la calidad de la pronunciación y si los estudiantes pueden afrontar costos
adicionales.
6. Privacidad de Datos vs. Interoperabilidad:
 Trade-off: Implementar medidas sólidas de privacidad puede afectar la
interoperabilidad con otros sistemas y servicios.
 Decisión: La privacidad es crucial, pero se debe encontrar una forma de mantener
la interoperabilidad sin comprometer la seguridad.

El análisis de trade-offs ayuda a tomar decisiones informadas al evaluar las


compensaciones entre atributos de calidad y a encontrar soluciones que equilibren estas
compensaciones de manera óptima. Cada trade-off debe ser evaluado en el contexto del proyecto
y los objetivos buscados.

Diagrama Arquitectónico
Para la implementación del siguiente modelo arquitectónico se utilizó AWS, para lo cual fueron
considerados los siguientes componentes:

1. AWS VPC (Virtual Private Cloud – Server 1 y Server 2)

Este componente es esencial ya que representa la red virtual privada que alberga
todo el sistema. En un entorno como la nube, se utiliza una VPC para aislar y proteger los
recursos y datos del sistema de acceso no autorizado desde Internet. Los servidores
(Server 1 y Server 2) operan dentro de esta VPC, lo que garantiza un nivel adicional de
seguridad y control.

2. Balanceador de Carga (Elastic Load Balancing)

Wednesday, 6 de September de 2023


15

El balanceador de carga se encarga de distribuir el tráfico de los usuarios de


manera equitativa entre múltiples instancias EC2 (servidores de aplicaciones). Esto
mejora la disponibilidad y la escalabilidad del sistema al distribuir la carga de manera
eficiente y redirigir el tráfico lejos de las instancias con exceso de carga.

3. EC2 (App Servers 1 y 2)

Estas instancias EC2 ejecutan la aplicación del servidor, proporcionando una API
para el cliente y gestionan la lógica de la aplicación para que los estudiantes se
comuniquen. Además de gestionar aspectos clave, como el procesamiento y el
reconocimiento de voz, la interacción con los estudiantes, etc.

4. RDS (DB - PostgreSQL)

La base de datos RDS desempeña un papel crítico al almacenar datos


transaccionales importantes del sistema. Esto incluye información sobre usuarios,
registros de pronunciaciones correctas e incorrectas, votos y otros datos relevantes. El uso
de PostgreSQL como motor de base de datos garantiza la integridad y la confiabilidad de
los datos.

5. S3 (Storage)

Amazon S3 se utiliza para almacenar diversos tipos de datos multimedia, como


grabaciones de audio de las pronunciaciones de los estudiantes. Esto permite la gestión
eficiente de recursos multimedia y su fácil acceso cuando sea necesario.

6. API Gateway

El API Gateway sirve como una interfaz que permite a las instancias EC2 acceder a
servicios en la nube, como el reconocimiento de voz y el almacenamiento en S3. Actúa como
un punto de entrada para solicitudes externas y redirige estas solicitudes a los servicios
correspondientes.

7. Speech-to-Text Service

Este componente utiliza un servicio de reconocimiento de voz en la nube para validar las
pronunciaciones de los estudiantes. Esto implica convertir el habla en texto y compararlo con las
pronunciaciones esperadas para proporcionar retroalimentación precisa.

Wednesday, 6 de September de 2023


16

Se considera además al final del diagrama una instancia de replicación de datos para la
generación de información sin afectar instancias de producción

Wednesday, 6 de September de 2023


17

Wednesday, 6 de September de 2023


18

Arquitectura Propuesta

Wednesday, 6 de September de 2023


19

Presupuesto

Wednesday, 6 de September de 2023


20

Estilo Arquitectónico:

Para el desarrollo de esta aplicación nos basaremos en el estilo de capas por los siguientes
motivos:

1. Separación de Responsabilidades: El diseño de capas permite dividir la aplicación en


componentes lógicos independientes, cada uno con responsabilidades específicas. En este
caso, es posible tener capas dedicadas al procesamiento de audio, la lógica del juego, la
interacción con la base de datos, la lógica de votos y la interfaz de usuario.

Esto facilita el desarrollo, la depuración y el mantenimiento, ya que cada capa se enfoca


en una tarea específica.

2. Modularidad: Cada capa se puede desarrollar y mantener por separado. Esto facilita la
adición de nuevas características con mayores o menores complejidades o bien la mejora
de partes específicas de la aplicación sin afectar a otras áreas o módulos de la aplicación.

Por ejemplo, podrías mejorar el algoritmo de reconocimiento de voz sin tocar la lógica
del juego, o bien incluir una mejora que consideré un nuevo lenguaje no sólo el inglés.

3. Reusabilidad: El diseño de capas permite reutilizar componentes en diferentes partes de


la aplicación o en futuros proyectos.

Por ejemplo, el servicio de reconocimiento de voz o los votos, podrían ser útiles en otras
aplicaciones de aprendizaje de idiomas.

4. Escalabilidad: Las capas permiten escalar componentes específicos de manera


independiente según sea necesario. Si la aplicación crece y necesita manejar más usuarios
o procesar más grabaciones de audio, es posible escalar la capa correspondiente sin
afectar otras partes de la aplicación y sin afectar el presupuesto de gran manera.

5. Mantenibilidad: El mantenimiento es más sencillo, los cambios y las correcciones se


pueden enfocar en una capa específica sin afectar al conjunto de la aplicación. Esto
facilita la identificación y solución de problemas.

Wednesday, 6 de September de 2023


21

6. Seguridad: Las capas permiten implementar medidas de seguridad específicas en áreas


críticas. Por ejemplo, puedes aplicar políticas de seguridad en la capa de acceso a la base
de datos para proteger los datos de los estudiantes.

7. Claridad en el Diseño: Un diseño de capas proporciona una estructura clara y fácil de


comprender. Facilita la comunicación entre los miembros del equipo de desarrollo y
ayuda a los nuevos desarrolladores a comprender la arquitectura de la aplicación más
rápidamente.

8. Pruebas: Cada capa se puede probar por separado, lo que simplifica las pruebas unitarias
y de integración. Puedes garantizar que cada componente funcione correctamente antes
de integrarlo en la aplicación completa.

Un diseño de capas correctamente diseñado e implementado contribuye enormemente a


mejorar la organización, la modularidad, la reusabilidad, la mantenibilidad del código y
seguridad, de igual manera permite una escalabilidad efectiva. Esto es especialmente importante
en un entorno de aprendizaje colaborativo en el que múltiples componentes interactúan para
brindar una experiencia de usuario fluida y efectiva.

Trazabilidad
La trazabilidad de los atributos de calidad en el contexto de ATAM es un proceso
fundamental para evaluar cómo la arquitectura propuesta aborda y cumple con estos atributos. A
continuación, se analizarán los atributos de calidad levantados anteriormente:

 Precisión en el Reconocimiento de Voz:

El sistema debe reconocer con una precisión del 95% o superior la pronunciación en
inglés de los estudiantes, esto se puede abordar con un servicio de reconocimiento de voz
de alta precisión en una de las capas de la arquitectura.

 Latencia de Respuesta:

El tiempo de procesamiento total de una solicitud de estudiante, desde el envío hasta la


respuesta, debe ser de 3 segundos o menos, para lograr esto en temas de arquitectura
podemos implementar distintas estrategias, como por ejemplo:

o Implementa un sistema de caché en la capa de datos para almacenar resultados


previamente procesados, como secuencias de números correctas. Esto puede
reducir significativamente el tiempo de acceso a datos que se utilizan con
frecuencia.

Wednesday, 6 de September de 2023


22

o Utiliza balanceadores de carga para distribuir las solicitudes de los estudiantes de


manera equitativa entre los servidores de la capa de aplicación. Esto evita la
sobrecarga en un solo servidor y reduce la latencia.
o Diseña consultas SQL eficientes y utiliza índices adecuados en la base de datos
para acelerar la recuperación de datos.
o Compresión de los datos transmitidos entre las capas de la aplicación para reducir
el ancho de banda y mejorar los tiempos de respuesta, especialmente cuando se
envían grabaciones de audio o secuencias de números.
o Implementa almacenamiento en caché en la capa de presentación para almacenar
resultados de consultas y vistas generadas dinámicamente. Esto puede reducir la
carga en la capa de aplicación y mejorar la respuesta al usuario.

 Rendimiento
o Tiempo de Respuesta:
1. Definición: El tiempo que tarda la aplicación en responder a las solicitudes
del usuario.
2. Cálculo: Mide el tiempo transcurrido desde que se envía una solicitud
hasta que se recibe una respuesta. Calcula el tiempo promedio de respuesta
en milisegundos.
o Tasa de Transacciones por Segundo:
1. Definición: Cuantifica la cantidad de transacciones que la aplicación
puede procesar en un segundo.
2. Cálculo: Registra la cantidad de transacciones completadas en un período
específico, generalmente un segundo.
 Disponibilidad:
o Tiempo de Inactividad:
1. Definición: El tiempo total durante el cual la aplicación no está disponible.
2. Cálculo: Registra el tiempo en que la aplicación no está en funcionamiento
debido a fallos o mantenimiento programado.
o Porcentaje de Disponibilidad:
1. Definición: El porcentaje de tiempo en el que la aplicación está disponible
en comparación con el tiempo total.
2. Cálculo: Divide el tiempo de disponibilidad entre el tiempo total y
multiplica por 100.

Wednesday, 6 de September de 2023


23

 Seguridad:
o Vulnerabilidades Detectadas:
1. Definición: El número de vulnerabilidades de seguridad identificadas y
corregidas en la aplicación.
2. Cálculo: Lleva un registro de las vulnerabilidades identificadas y su estado
(corregidas o no corregidas).
o Tasa de Incidencias de Seguridad:
1. Definición: La cantidad de incidentes de seguridad reportados o
detectados en la aplicación.
2. Cálculo: Registra la cantidad de incidentes de seguridad y su gravedad.

 Confiabilidad:
o Tasa de Fallos:
1. Definición: La proporción de veces que la aplicación experimenta fallos
en relación con el número total de operaciones.
2. Cálculo: Divide el número de fallos por el número total de operaciones.
o Tiempo Promedio entre Fallos:
1. Definición: El tiempo promedio que transcurre entre fallos importantes del
sistema.
2. Cálculo: Suma el tiempo entre fallos y divide por el número de fallos.

Es importante realizar un seguimiento continuo y medir estas métricas para garantizar que
la aplicación cumpla con los estándares de calidad y para identificar áreas que requieran mejoras.

Wednesday, 6 de September de 2023

También podría gustarte