Está en la página 1de 6

www.utpl.edu.

ec

Ingeniería en Tecnologías de Información


ARQUITECTURA DE SOFTWARE

[ACDB2-25%] Foro 1

Lourdes Belén Peñafiel Garcia

Tala de contenidos
DESCRIPCIÓN DE LA ACTIVIDAD........................................................................................1
DESARROLLO...........................................................................................................................1
REFERENCIAS...........................................................................................................................5
Arquitectura de Software [ACDB2-25%] Foro 1

DESCRIPCIÓN DE LA ACTIVIDAD
 Usa los elementos arquitectónicos, principios de diseño y el proceso de diseño de arquitectura software para
identificar estilos y patrones arquitectónicos.

DESARROLLO

Como Arquitecto de Software se le pide que proponga un diseño para una aplicación web para
agendamiento de citas para un centro de matriculación vehicular. Conteste las siguientes interrogantes:

¿Qué estilo arquitectónico propone usar?

Dada la naturaleza de una aplicación web para agendamiento de citas en un centro de matriculación
vehicular, propondría el uso del estilo arquitectónico de Arquitectura de Microservicios, porque:

Escalabilidad y Mantenimiento La arquitectura de microservicios permite la


construcción de la aplicación en base a servicios
pequeños e independientes. Esto facilita la
escalabilidad, ya que cada microservicio puede ser
escalado de manera individual según la demanda, y
también simplifica el mantenimiento, ya que cada
servicio puede ser actualizado o modificado sin
afectar al sistema en su conjunto.
Desacoplamiento y Flexibilidad Los microservicios son independientes y se
comunican entre sí a través de interfaces bien
definidas. Esto proporciona un alto grado de
desacoplamiento, permitiendo la flexibilidad para
desarrollar, desplegar y escalar cada servicio de
forma independiente. Además, facilita la
integración con otros sistemas o servicios externos.
Enfoque Centrado en el Dominio La arquitectura de microservicios se alinea bien
con un enfoque centrado en el dominio. Cada
microservicio puede estar diseñado para abordar
una función de negocio específica, como la gestión
de citas, la verificación de documentos, etc. Esto
facilita la comprensión del sistema y la evolución
de cada componente de manera independiente.
Resiliencia y Tolerancia a Fallos Al estar diseñados como servicios independientes,
si uno de los microservicios falla, los demás pueden
seguir funcionando. Esto mejora la resiliencia del
sistema y la tolerancia a fallos, ya que los
problemas en un componente no afectan
necesariamente a toda la aplicación.
Agilidad en el Desarrollo La arquitectura de microservicios es conocida por
su capacidad para mejorar la agilidad en el
desarrollo. Equipos pequeños y especializados
pueden trabajar de forma independiente en
diferentes microservicios, acelerando el ciclo de
desarrollo y permitiendo entregas más frecuentes.
Adaptabilidad a la Carga Variable La naturaleza distribuida de los microservicios
Arquitectura de Software [ACDB2-25%] Foro 1

facilita la adaptabilidad a cargas variables. Pueden


escalarse individualmente según la demanda
específica de cada servicio, lo que es crucial en una
aplicación de agendamiento de citas que puede
experimentar fluctuaciones en la demanda durante
diferentes momentos del día o la semana.

¿Qué tecnología utilizaría y por qué?


La elección de la tecnología para una aplicación web de agendamiento de citas en un centro de
matriculación vehicular dependerá de varios factores, incluyendo los requisitos específicos del proyecto, la
experiencia del equipo de desarrollo y las consideraciones de escalabilidad y mantenimiento:

Java o Kotlin: Estos lenguajes son Spring Boot (Java) o Micronaut:


conocidos por su robustez y Ambos son frameworks que facilitan la
escalabilidad, lo que los hace MySQL o PostgreSQL: Para la gestión creación de microservicios en Java o
adecuados para aplicaciones de datos estructurados, como Kotlin. Proporcionan características
empresariales. Se puede aprovechar información del usuario, detalles de como inyección de dependencias,
frameworks como Spring Boot, que citas y registros del vehículo. gestión de configuración y
facilita la construcción de aplicaciones herramientas para la creación rápida
basadas en microservicios. de servicios.

OAuth 2.0 y JWT (JSON Web Tokens):


React o Angular: Estos frameworks de Protocolo HTTP/REST: Utilizar
Para la autenticación y autorización
JavaScript son populares y ofrecen una HTTP/REST para la comunicación entre
seguras. OAuth 2.0 es un protocolo
estructura organizada para el microservicios proporciona una
ampliamente utilizado para la
desarrollo del frontend. Facilitan la interfaz simple y escalable. También es
autorización, mientras que JWT
creación de interfaces de usuario compatible con tecnologías como JSON
proporciona tokens compactos y
interactivas y responsivas. para el intercambio de datos.
seguros para la autenticación.

¿Qué atributos de calidad le daría mayor importancia y por qué (mínimo 5 atributos)?
La elección de atributos de calidad es crucial para el éxito de una aplicación. La importancia de cada
atributo puede variar según los requisitos específicos del proyecto y las expectativas de los usuarios.

1. Disponibilidad

Importancia: Alta
Justificación: En un contexto de agendamiento de citas, la disponibilidad es fundamental. Los usuarios
deben poder acceder al sistema en cualquier momento para programar o modificar sus citas. La alta
disponibilidad asegura que el servicio esté siempre accesible, minimizando interrupciones y ofreciendo una
experiencia de usuario confiable.
2. Rendimiento

Importancia: Alta
Justificación: El rendimiento es crucial para garantizar respuestas rápidas y eficientes al realizar
operaciones de agendamiento de citas. Los tiempos de carga rápidos y la capacidad de respuesta del
sistema contribuyen a una experiencia de usuario fluida y satisfactoria, lo cual es esencial para la retención
de usuarios.
3. Seguridad

Importancia: Muy Alta


Justificación: Dado que la aplicación manejará información sensible, como datos de los usuarios y detalles
de los vehículos, la seguridad es de máxima importancia. La implementación de medidas de seguridad
Arquitectura de Software [ACDB2-25%] Foro 1

robustas, como autenticación segura, autorización adecuada y cifrado de datos, es esencial para proteger
la privacidad y la integridad de la información.
4. Escalabilidad

Importancia: Alta
Justificación: La aplicación debe ser capaz de manejar variaciones en la demanda, especialmente en
momentos de alta concurrencia, como plazos límite para matriculación. La escalabilidad garantiza que el
sistema pueda adaptarse a un aumento repentino en la carga de trabajo sin degradación del rendimiento.
5. Mantenibilidad

Importancia: Alta
Justificación: La facilidad de mantenimiento es crucial para permitir actualizaciones, correcciones de
errores y la introducción de nuevas funcionalidades de manera eficiente. Un código modular,
documentación clara y buenas prácticas de desarrollo contribuyen a la mantenibilidad a largo plazo,
asegurando que la aplicación pueda evolucionar con los cambios en los requisitos del negocio.

Describa la evolución de los estilos arquitectónicos y las nuevas tendencias tecnológicas para la creación
de nuevos estilos. (Presente diagramas, sustento teórico, y referencie correctamente las fuentes
utilizadas)

La evolución de los estilos arquitectónicos y las tendencias tecnológicas en el desarrollo de software ha


sido ampliamente discutida y documentada en la literatura especializada. En sus primeras etapas, las
aplicaciones monolíticas eran la norma (Fowler, 2002). Estas aplicaciones, aunque aún prevalecen, han
experimentado transformaciones hacia implementaciones más modulares y escalables (Newman, 2015).

La arquitectura cliente-servidor introdujo una separación fundamental entre el cliente y el servidor,


facilitando la distribución de la carga de trabajo (Tanenbaum & Van Steen, 2006). Este modelo ha
evolucionado hacia enfoques más avanzados, como la arquitectura de tres capas, que incluye el cliente, el
servidor de aplicación y la base de datos (Pressman, 2014).

La arquitectura orientada a servicios (SOA) ha desempeñado un papel esencial en la descomposición de


aplicaciones en servicios independientes y reutilizables (Erl, 2005). Su evolución ha llevado al surgimiento
de arquitecturas más ligeras y centradas en servicios específicos, como los microservicios (Newman, 2015).

En términos de tendencias tecnológicas, la adopción de contenedores, facilitada por tecnologías como


Docker, ha transformado la implementación y distribución de aplicaciones (Boettiger, 2015). Herramientas
de orquestación como Kubernetes han emergido como facilitadores clave en la gestión eficiente de
contenedores a escala (Burns et al., 2016).

El paradigma de la computación sin servidor (FaaS) ha revolucionado la forma en que concebimos y


desplegamos aplicaciones, eliminando la necesidad de gestionar la infraestructura subyacente (Varia,
2017). Además, las arquitecturas basadas en eventos han ganado terreno, centrándose en la emisión y
recepción de eventos para la comunicación entre servicios (Newman, 2019).

En resumen, la literatura especializada respalda la idea de que la evolución de los estilos arquitectónicos y
las nuevas tendencias tecnológicas han tenido un impacto significativo en la forma en que diseñamos y
desarrollamos aplicaciones de software (Shaw & Garlan, 1996).
Arquitectura de Software [ACDB2-25%] Foro 1

ESTILOS ARQUITECTONICOS
Estilo Monolítico: Las
aplicaciones monolíticas fueron
la norma en las primeras etapas
del desarrollo de software.
Todas las funciones y
componentes se integran en
una única unidad.
Evolución: Aunque aún se
utilizan, han evolucionado hacia
implementaciones más
modulares y escalables.

Arquitectura Cliente-
Servidor: Introduce la
separación entre el cliente y
el servidor, permitiendo la
distribución de la carga de
trabajo.
Evolución: Ha evolucionado
hacia modelos más avanzados
como la arquitectura de tres
capas (cliente, servidor de
aplicación, base de datos).

Arquitectura Orientada a
Servicios (SOA): Descomposición
de aplicaciones en servicios
independientes y reutilizables.
Comunicación a través de
estándares como SOAP y REST.
Evolución: Ha evolucionado
hacia arquitecturas más ligeras y
centradas en servicios más
específicos (microservicios).

Microservicios: Despliega
aplicaciones como conjuntos
de servicios pequeños,
independientes y autónomos.
Evolución: La tendencia actual
ha llevado a prácticas más
avanzadas como
arquitecturas basadas en
eventos y funciones sin
servidor.
Arquitectura de Software [ACDB2-25%] Foro 1

Contenedores: Tecnologías como Docker permiten empaquetar


aplicaciones y sus dependencias en contenedores, facilitando la
implementación consistente y la portabilidad entre entornos.

Orquestación de Contenedores: Herramientas como Kubernetes


permiten la gestión y orquestación eficientes de contenedores,
NUEVAS TECNOLOGIAS

facilitando la escalabilidad y la administración de aplicaciones


distribuidas.

Computación sin Servidor (FaaS): Elimina la necesidad de gestionar


la infraestructura, permitiendo a los desarrolladores centrarse en el
código. Las funciones se ejecutan de forma independiente en
respuesta a eventos.

Arquitecturas Basadas en Eventos: Centradas en la emisión y


recepción de eventos. Los servicios reaccionan a eventos en lugar de
solicitudes directas.

Edge Computing: Lleva el procesamiento más cerca del origen de los


datos para reducir la latencia y mejorar el rendimiento,
especialmente en aplicaciones IoT.

REFERENCIAS

1. Boettiger, C. (2015). An introduction to Docker and Singularity for reproducible research. ACM SIGOPS
Operating Systems Review, 49(1), 71-79.
2. Burns, B., Grant, B., Oppenheimer, D., Brewer, E., & Wilkes, J. (2016). Borg, Omega, and Kubernetes.
Queue, 14(1), 70-93.
3. Erl, T. (2005). Service-Oriented Architecture: Concepts, Technology, and Design. Prentice Hall.
4. Fowler, M. (2002). Patterns of Enterprise Application Architecture. Addison-Wesley.
5. Newman, S. (2015). Building Microservices. O'Reilly Media.
6. Newman, S. (2019). Event-Driven Microservices: The Sense, Nonsense, and a Way Forward. [Blog post].
Retrieved from https://www.thoughtworks.com/radar/techniques/event-driven-microservices
7. Pressman, R. S. (2014). Software Engineering: A Practitioner's Approach. McGraw-Hill.
8. Shaw, M., & Garlan, D. (1996). Software Architecture: Perspectives on an Emerging Discipline. Prentice
Hall.
9. Tanenbaum, A. S., & Van Steen, M. (2006). Distributed Systems: Principles and Paradigms. Prentice Hall.
10. Varia, J. (2017). Serverless Architectures with AWS Lambda. AWS Whitepaper.

También podría gustarte