Parte 2 - Tema 8 Flashcards
Aplicaciones web
¿Qué es la arquitectura de desarrollo web?
Es la estructura y organización de un sitio web o aplicación web, definiendo cómo se relacionan los diferentes componentes y cómo interactúan entre sí.
¿Cuál es el objetivo principal de una buena arquitectura web?
Crear aplicaciones web escalables, mantenibles, seguras y eficientes, que satisfagan las necesidades de los usuarios y del negocio.
Separación de preocupaciones (SoC)
Separar las diferentes funcionalidades de una aplicación en módulos independientes
No repetirse (DRY)
Evitar la duplicación de código, promoviendo la reutilización.
KISS (Keep It Simple, Stupid)
Optar por soluciones simples y fáciles de entender.
YAGNI (You Aren’t Gonna Need It)
Implementar solo lo que se necesita en este momento, evitando funcionalidades innecesarias.
Alta cohesión y bajo acoplamiento
Los módulos deben ser altamente cohesivos (alta relación entre sus componentes) y bajo acoplamiento (baja dependencia de otros módulos).
Abstracción
Ocultar la complejidad interna de los componentes, exponiendo solo las interfaces necesarias.
Modularidad
Dividir el sistema en módulos independientes que puedan ser desarrollados, probados y desplegados por separado.
¿Cómo se garantiza la escalabilidad y el rendimiento en una arquitectura web?
- Horizontal scaling: Agregar más servidores para manejar un mayor número de usuarios.
- Vertical scaling: Mejorar el hardware de un servidor existente.
- Caching: Almacenar resultados de cálculos costosos para reducir el tiempo de respuesta.
- Optimización de bases de datos: Indexar tablas, utilizar consultas eficientes.
- Minificación y compresión: Reducir el tamaño de archivos HTML, CSS y JavaScript.
¿Cuáles son los principales aspectos a considerar en la seguridad de una arquitectura web?
- Autenticación y autorización: Verificar la identidad de los usuarios y controlar sus permisos.
- Encriptación: Proteger los datos sensibles.
- Gestión de errores: Manejar correctamente los errores para evitar la divulgación de información sensible.
- Protección contra ataques: Protegerse contra ataques como inyección SQL, XSS, CSRF.
Inyección SQL (SQL Injection)
Es una vulnerabilidad que permite a los atacantes inyectar código SQL malicioso en las consultas de una base de datos, lo que puede llevar a la exposición, modificación o eliminación de datos
Cross-Site Scripting (XSS)
Es una vulnerabilidad que permite a los atacantes inyectar código cliente (generalmente JavaScript) en una página web, que luego se ejecuta en el navegador del usuario.
Cross-Site Request Forgery (CSRF)
Es un ataque en el que un atacante engaña a una víctima autenticada para que ejecute acciones no deseadas en una aplicación web.
¿Qué es el desarrollo frontend?
Es la parte de la programación web que se encarga de la interfaz de usuario, es decir, todo lo que el usuario ve e interactúa en un sitio web.
¿Qué es un framework JavaScript?
Es una biblioteca de código preescrito que proporciona una estructura y herramientas para desarrollar aplicaciones web de manera más eficiente.
¿Cuáles son algunos frameworks JavaScript populares?
React, Angular, Vue.js
¿Qué es el backend?
Es la parte de una aplicación web que no es visible para el usuario, encargada de la lógica del negocio, la gestión de bases de datos, la seguridad y la interacción con otros sistemas.
¿Cuál es la diferencia entre frontend y backend?
El frontend es la interfaz de usuario, mientras que el backend es la parte del servidor que gestiona las solicitudes y proporciona los datos al frontend.
¿Qué es un framework backend?
Es una estructura predefinida que proporciona herramientas y bibliotecas para agilizar el desarrollo de aplicaciones web, ofreciendo una base sólida y convenciones para organizar el código.
¿Qué es una API?
Es un conjunto de reglas y especificaciones que permiten que diferentes aplicaciones se comuniquen entre sí.
¿Cuáles son los principales aspectos de la seguridad en el backend?
- Autenticación: Verificar la identidad de los usuarios.
- Autorización: Controlar los permisos de los usuarios.
- Encriptación: Proteger los datos sensibles.
- Prevención de ataques: Proteger contra ataques como inyección SQL, XSS, CSRF.
¿Qué es un servicio web?
Es una aplicación que expone una interfaz a través de una red (generalmente Internet) para permitir que otras aplicaciones se comuniquen y utilicen sus funcionalidades.
¿Cuál es la diferencia entre un servicio web y una API?
Aunque a menudo se usan como sinónimos, un servicio web es una implementación específica de una API, generalmente basada en estándares web como HTTP, XML o JSON.
¿Cuáles son los principales estándares y protocolos utilizados en servicios web?
- HTTP: Protocolo de transferencia de hipertexto, utilizado para la comunicación entre el cliente y el servidor.
- XML: Lenguaje de marcado extensible, utilizado para estructurar datos.
- JSON: Formato de intercambio de datos ligero y legible por humanos, basado en JavaScript.
- SOAP: Protocolo Simple Object Access Protocol, un protocolo de intercambio de mensajes basado en XML.
- REST: Arquitectura de estilo de transferencia representacional, un conjunto de restricciones arquitectónicas que simplifican el desarrollo de servicios web.
¿Cuál es la diferencia entre SOAP y REST?
- SOAP: Más pesado, basado en XML, utiliza un modelo de solicitud-respuesta estricto.
- REST: Más ligero, utiliza formatos como JSON, es más flexible y fácil de implementar.
¿Qué significa interoperabilidad en el contexto de los servicios web?
La capacidad de diferentes sistemas y aplicaciones para comunicarse e intercambiar información de manera efectiva, independientemente de la plataforma, el lenguaje de programación o el sistema operativo utilizado.
¿Cómo se logra la interoperabilidad en los servicios web?
- Adherencia a estándares: Utilizando protocolos y formatos estándar.
- Documentación clara: Proporcionando una descripción detallada de la API.
- Pruebas exhaustivas: Asegurando que el servicio funcione como se espera en diferentes entornos.
¿Cuáles son los principales desafíos de seguridad en los servicios web?
- Autenticación: Verificar la identidad de los usuarios.
- Autorización: Controlar el acceso a los recursos.
- Confidencialidad: Proteger la información sensible.
- Integridad: Asegurar que los datos no sean alterados.
- Disponibilidad: Garantizar que el servicio esté disponible cuando sea necesario.
¿Cómo se abordan estos desafíos?
- HTTPS: Protocolo seguro para la comunicación web.
- Tokenización: Reemplazar datos sensibles con tokens.
- Encriptación: Codificar los datos para protegerlos.
- Firewall: Proteger la red de ataques externos.
- WAF (Web Application Firewall): Proteger contra ataques web comunes.
¿Qué es la arquitectura SOA?
Es un estilo arquitectónico que estructura una aplicación como una colección de servicios que se comunican entre sí. Estos servicios son independientes y pueden ser reutilizados en diferentes aplicaciones.
¿Cuáles son los principales componentes de una arquitectura SOA?
- Servicios: Unidades de trabajo que encapsulan una funcionalidad específica.
- ESB (Enterprise Service Bus): Un intermediario que facilita la comunicación entre servicios.
- Repositorio de servicios: Un catálogo donde se registran y describen los servicios disponibles
¿Cuáles son las ventajas de SOA?
- Reutilización de servicios.
- Flexibilidad y escalabilidad.
- Facilidad de mantenimiento.
¿Qué son los microservicios?
Son una evolución de SOA, donde los servicios son aún más pequeños, independientes y escalables. Cada microservicio se ejecuta en su propio proceso y puede ser desarrollado y desplegado de forma independiente.
¿Cuáles son las diferencias entre SOA y microservicios?
- Tamaño de los servicios: Los microservicios son más pequeños y granulares.
- Comunicación: Los microservicios suelen comunicarse a través de protocolos ligeros como HTTP y formatos como JSON.
- Despliegue: Los microservicios se despliegan de forma independiente.
¿Cuáles son las ventajas de los microservicios?
- Escalabilidad independiente.
- Desarrollo ágil.
- Tecnología heterogénea.
¿Qué es una plataforma de gestión de APIs?
Es una herramienta que permite diseñar, publicar, documentar y gestionar APIs.
¿Cuáles son las principales funcionalidades de una plataforma de gestión de APIs?
- Diseño: Crear y modelar APIs.
- Publicación: Publicar APIs para que sean consumidas por otros desarrolladores.
- Documentación: Generar documentación automáticamente.
- Gestión: Monitorear el uso de las APIs y aplicar políticas de seguridad.