Arquitectura de microservicios y SPA
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,04 KB
19/20 Ejercicio 1
¿De las siguientes afirmaciones, cuáles son correctas o incorrectas? Razona la respuesta
- En el estilo de arquitectura en capas, todos los servicios de cada capa son accesibles directamente desde el resto de capas. Cierto
- En el estilo de arquitectura basada en objetos, los objetos pueden comunicar entre sí aunque estén físicamente en distintas máquinas. Cierto
- 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. Falso, Tras una operación, no se recuerda lo que se ha hecho un cliente.
- En el estilo de arquitectura basado en Publicación/Subscripción, los componentes se comunican directamente entre sí, y cada uno gestiona quién está suscrito a los eventos que emite. Cierto
Ejercicio 2
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, Coste al escalar, Mantenimiento HW
- Máquina virtual o IaaS -> Ventajas: Bajo coste inicial, Fácil de escalar, Independencia de la máquina real. Inconvenientes: Alto consumo de recursos por la virtualización, Coste de mantenimiento SW.
- Contenedor -> Ventajas: Bajo coste inicial, Fácil de escalar y mantener, Bajo consumo de recursos, Flexibilidad SW. Inconvenientes: Similar a Máquina virtual, pero usa Kernel real, con permisos restringidos, En lugar de máquina completa, cada contenedor es un servicio o proceso
- PaaS -> Ventajas: Bajo coste inicial, mantenimiento y recursos, Escala automáticamente. Inconvenientes: Opciones limitadas en cuanto a lenguajes, librerías, etc. Dependencias con el SW de la plataforma. Varios servicios, procesos. Entre contenedor y máquina virtual, No podemos configurar el S.O. ni actualizar sistema
- Funciones Lambda -> Ventajas: Coste mínimo, Escala automáticamente, Sencillo, Tamaño ideal para microservicios Inconvenientes: Opciones limitadas en cuanto a lenguajes, librerías, etc. Es similar a PaaS, pero se gestionan funciones independientes, en lugar de una aplicación completa.
Ejercicio 3
Describe brevemente las ventajas de una Single Page Application (SPA) frente a una aplicación web con una arquitectura clásica
- Reduce al mínimo la latencia.
- Es muy similar a la experiencia del usuario con aplicaciones nativas, aunque el uso de hardware del dispositivo está más limitado.
- Minimiza el uso de recursos en servidor. Es el cliente el que ejecuta y genera la capa presentación, evitando esa tarea en el servidor.
- Permite alojamiento estático de la aplicación web -> Podemos usar CDNs.
1. Latencia: Aunque puede contener código que se ejecuta en el navegador, suele limitarse a pequeños cambios de la interfaz. Cambios mayores como cambiar de página, requiere comunicar con el servidor, pasando los datos de sesión, etc., y esperar a la nueva página 1.1 Cuando llega la nueva página, tiene que descargar las imágenes y otros recursos que necesita. 2. Escalabilidad servidor: 2.1. Realizar la mayor parte del trabajo de presentación => consumo de recursos proporcional al número de usuarios y elementos 2.2. Si se usan muchos datos de sesión, es necesario guardarlos en una base de datos, aunque son datos temporales. Si se guardan en memoria genera problemas si hay varios servidores
Ejercicio 5
Nos piden implementar el modelo de la cesta de la compra de una aplicación que sigue el patrón MVVM. Para simplificar, la cesta tendrá únicamente una lista con los códigos de los artículos incluidos. Si hay varias unidades de un artículo, simplemente aparecerá varias veces su código. El código del artículo es una cadena de texto. El modelo ha de permitir añadir artículos (add), y vaciar la cesta (clear). No es necesario implementar otras operaciones, como borrado de artículos, etc. Indica en JavaScript o pseudocódigo el código para implementar el modelo descrito. Puedes usar cualquiera de las opciones que hemos estudiado para implementarlo.
export const state = () => ({cesta: []})
export const mutations = {add(state, data) {state.cesta.push(data)}, clear(state) {state.cesta=[]}}