Fundamentos de Arquitectura de Software y Microservicios: Ejercicios Prácticos Resueltos
Clasificado en Informática
Escrito el en
español con un tamaño de 5,36 KB
Ejercicios de Arquitectura y Desarrollo de Software
Ejercicio 1. Evaluación de Estilos Arquitectónicos
¿De las siguientes afirmaciones, cuáles son correctas o incorrectas? Razona la respuesta:
- 1. En el estilo de arquitectura en capas, todos los servicios de cada capa son accesibles directamente desde el resto de capas.
Respuesta: Cierto. - 2. En el estilo de arquitectura basada en objetos, los objetos pueden comunicarse entre sí aunque estén físicamente en distintas máquinas.
Respuesta: Cierto. - 3. En el estilo de arquitectura RESTful NO es necesario pasar toda la información de la operación con cada petición, ya que el sistema recuerda los datos de las operaciones anteriores de la misma sesión.
Respuesta: Falso. Tras una operación, no se recuerda lo que ha hecho un cliente (stateless). - 4. En el estilo de arquitectura basado en Publicación/Suscripción, los componentes se comunican directamente entre sí, y cada uno gestiona quién está suscrito a los eventos que emite.
Respuesta: Cierto.
Ejercicio 2. Alternativas para la Implementación de Microservicios
Describe brevemente las alternativas donde implementar un microservicio (máquina virtual, etc.) y qué ventaja destacarías de cada una de ellas:
Máquina física
- Ventajas: No dependemos de terceros.
- Inconvenientes: Coste inicial elevado, dificultad al escalar y mantenimiento de hardware.
Máquina virtual o IaaS (Infrastructure as a Service)
- Ventajas: Bajo coste inicial, facilidad para escalar e independencia de la máquina real.
- Inconvenientes: Alto consumo de recursos por la virtualización y coste de mantenimiento de software.
Contenedor
- Ventajas: Bajo coste inicial, fácil de escalar y mantener, bajo consumo de recursos y flexibilidad de software.
- Inconvenientes: Similar a la máquina virtual, pero usa el kernel real con permisos restringidos. En lugar de una máquina completa, cada contenedor es un servicio o proceso.
PaaS (Platform as a Service)
- Ventajas: Bajo coste inicial, mantenimiento y recursos reducidos; escala automáticamente.
- Inconvenientes: Opciones limitadas en cuanto a lenguajes y librerías; dependencias con el software de la plataforma. Gestiona varios servicios/procesos (situándose entre el contenedor y la máquina virtual). No permite configurar el S.O. ni actualizar el sistema.
Funciones Lambda (Serverless)
- Ventajas: Coste mínimo, escala automáticamente, sencillez y tamaño ideal para microservicios.
- Inconvenientes: Opciones limitadas en cuanto a lenguajes y librerías. Es similar a PaaS, pero se gestionan funciones independientes en lugar de una aplicación completa.
Ejercicio 3. Ventajas de una Single Page Application (SPA) frente a Arquitecturas Clásicas
- Reducción de latencia: Reduce al mínimo el tiempo de respuesta tras la carga inicial.
- Experiencia de usuario: Es muy similar a la experiencia con aplicaciones nativas, aunque el acceso al hardware del dispositivo sea más limitado.
- Optimización de recursos en el servidor: Minimiza el uso de recursos en el servidor, ya que es el cliente quien ejecuta y genera la capa de presentación.
- Alojamiento estático: Permite el despliegue de la aplicación web en CDNs.
Ejercicio 4. Limitaciones de la Arquitectura Web Clásica
1. Latencia y Fluidez
Aunque puede contener código que se ejecuta en el navegador, suele limitarse a pequeños cambios de la interfaz. Cambios mayores, como navegar a otra página, requieren comunicación con el servidor, transferencia de datos de sesión y esperar la carga de la nueva página.
- Cuando llega la nueva página, el navegador debe descargar nuevamente las imágenes y otros recursos necesarios.
2. Escalabilidad del Servidor
- Procesamiento: Al realizar la mayor parte del trabajo de presentación en el servidor, el consumo de recursos es proporcional al número de usuarios y elementos.
- Gestión de Sesión: Si se usan muchos datos de sesión, es necesario guardarlos en una base de datos (aunque sean temporales). Si se guardan en memoria, se generan problemas de sincronización al escalar a varios servidores.
Ejercicio 5. Implementación de Modelo MVVM para Cesta de la Compra
Implementación del modelo de la cesta de la compra siguiendo el patrón MVVM en JavaScript (utilizando un enfoque tipo Vuex/Store):
// Definición del estado inicial
export const state = () => ({
cesta: []
});
// Definición de mutaciones para alterar el estado
export const mutations = {
// Añadir un artículo por su código
add(state, data) {
state.cesta.push(data);
},
// Vaciar la cesta por completo
clear(state) {
state.cesta = [];
}
};