Arquitectura cliente/servidor y servicios web — Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Test de 30 preguntas con explicaciones justificadas.
Pregunta 1: ¿Cuál es una característica fundamental del modelo cliente/servidor?
- A) El servidor proporciona recursos o servicios a uno o más clientes.
- B) Los clientes y servidores intercambian roles dinámicamente.
- C) Todos los nodos en la red tienen capacidades equivalentes.
- D) La comunicación siempre es sincrónica y bloqueante.
En el modelo cliente/servidor, el servidor es un proveedor de recursos o servicios, y los clientes son consumidores que solicitan esos servicios, según la arquitectura estándar de redes.
Pregunta 2: En una arquitectura de tres capas (3-tier), ¿cuál es la función de la capa de lógica de negocio?
- A) Manejar la comunicación de red entre cliente y servidor.
- B) Gestionar la interfaz de usuario y la presentación.
- C) Almacenar y recuperar datos de una base de datos.
- D) Contener las reglas y procedimientos que implementan la funcionalidad de la aplicación.
En la arquitectura de tres capas, la capa de lógica de negocio (capa intermedia) procesa solicitudes, aplica reglas de negocio y coordina el acceso a la capa de datos.
Pregunta 3: Según la especificación HTTP RFC 7231, ¿para qué se utiliza principalmente el método PUT?
- A) Para realizar una consulta de datos sin efectos secundarios.
- B) Para crear un nuevo recurso en el servidor.
- C) Para eliminar un recurso del servidor.
- D) Para actualizar completamente un recurso existente en una URI específica.
El método HTTP PUT, según RFC 7231, se utiliza para reemplazar todas las representaciones actuales del recurso de destino con la carga útil de la petición.
Pregunta 4: ¿Qué indica el código de estado HTTP 201?
- A) Solicitud incorrecta debido a sintaxis inválida.
- B) Error interno del servidor.
- C) Recurso creado exitosamente, típicamente después de un POST.
- D) Solicitud correcta, pero sin contenido para responder.
El código de estado HTTP 201 (Created) indica que la solicitud ha tenido éxito y se ha creado un nuevo recurso, como resultado de una petición POST o PUT.
Pregunta 5: En el contexto de APIs REST, ¿qué significa JSON?
- A) Java Serialized Object Network, un protocolo de serialización.
- B) JSON no es un acrónimo, es un nombre propio.
- C) JavaScript Object Notation, un formato ligero de intercambio de datos.
- D) JavaScript Oriented Notation, un lenguaje de marcado.
JSON (JavaScript Object Notation) es un formato de texto ligero para el intercambio de datos, definido en RFC 8259, comúnmente utilizado en APIs REST.
Pregunta 6: ¿Qué protocolo de capa de aplicación utiliza normalmente SOAP para transportar mensajes?
- A) TCP (Transmission Control Protocol) directamente
- B) HTTP (Hypertext Transfer Protocol)
- C) SMTP (Simple Mail Transfer Protocol)
- D) FTP (File Transfer Protocol)
SOAP (Simple Object Access Protocol) se utiliza comúnmente sobre HTTP para servicios web, como se especifica en el estándar W3C SOAP.
Pregunta 7: ¿Qué describe un documento WSDL en un servicio web SOAP?
- A) La interfaz del servicio web, incluyendo operaciones, mensajes y protocolos.
- B) La estructura de datos y los tipos utilizados en los mensajes.
- C) Solo la ubicación del servicio web (endpoint).
- D) La política de seguridad y autenticación del servicio.
WSDL (Web Services Description Language) es un lenguaje basado en XML que describe la interfaz de un servicio web, definiendo operaciones, mensajes, tipos de datos y protocolos.
Pregunta 8: ¿Cuál es una ventaja principal de GraphQL sobre REST?
- A) Los servidores GraphQL son más simples de implementar que los REST.
- B) GraphQL no requiere HTTP, puede usar cualquier protocolo.
- C) GraphQL siempre utiliza menos ancho de banda que REST.
- D) El cliente puede solicitar exactamente los datos que necesita, evitando sobrecarga o falta de datos.
GraphQL, desarrollado por Facebook, permite a los clientes definir la estructura de los datos requeridos, reduciendo problemas de over-fetching o under-fetching.
Pregunta 9: ¿Cómo se utilizan típicamente las API Keys para autenticación en servicios web?
- A) Se intercambian por un token de acceso mediante OAuth.
- B) Se envían como un parámetro de consulta (query parameter) o en una cabecera HTTP.
- C) Se utilizan únicamente para cifrar la comunicación.
- D) Se incluyen en el cuerpo de cada petición como un campo JSON.
Las API Keys son cadenas que identifican una aplicación o usuario, y se suelen enviar en la cabecera HTTP (como X-API-Key) o como parámetro de consulta.
Pregunta 10: En OAuth 2.0, ¿qué representa el 'resource owner'?
- A) La entidad capaz de conceder acceso a un recurso protegido, típicamente el usuario.
- B) El servidor que aloja los recursos protegidos.
- C) La aplicación cliente que solicita acceso a los recursos.
- D) El servidor de autorización que emite tokens de acceso.
En el marco OAuth 2.0 (RFC 6749), el resource owner es la entidad que posee los recursos protegidos y puede conceder acceso a ellos, usualmente el usuario final.
Pregunta 11: ¿Qué tres partes componen un JSON Web Token (JWT)?
- A) Usuario, contraseña y token.
- B) Cabecera, carga útil y firma.
- C) Clave pública, clave privada y certificado.
- D) Encabezado, cuerpo y pie de página.
Un JWT (JSON Web Token), según RFC 7519, está compuesto por tres partes separadas por puntos: la cabecera (header), la carga útil (payload) y la firma (signature).
Pregunta 12: ¿Cuál es una característica clave de la arquitectura de microservicios?
- A) Los servicios son desplegados independientemente y se comunican mediante APIs ligeras.
- B) Todos los servicios comparten una base de datos única para consistencia.
- C) La aplicación se desarrolla como una sola unidad monolítica.
- D) Los microservicios deben estar escritos en el mismo lenguaje de programación.
La arquitectura de microservicios descompone una aplicación en servicios pequeños, independientes, que se despliegan por separado y se comunican típicamente a través de HTTP/REST o mensajería.
Pregunta 13: ¿Cuál es una desventaja común de una arquitectura monolítica en comparación con microservicios?
- A) Mayor complejidad en la gestión de despliegues y versiones.
- B) Suele tener un rendimiento inferior debido a la sobrecarga de red.
- C) Dificultad para escalar componentes individuales de forma independiente.
- D) Requiere más esfuerzo para implementar comunicación entre servicios.
En una arquitectura monolítica, toda la aplicación se despliega como una sola unidad, lo que dificulta escalar solo ciertas partes sin escalar todo el sistema.
Pregunta 14: ¿Cuál es la función principal de un Enterprise Service Bus (ESB)?
- A) Servir como balanceador de carga para distribuir peticiones entre servidores web.
- B) Actuar como intermediario para la integración de aplicaciones, gestionando la comunicación y transformación de mensajes.
- C) Gestionar la autenticación y autorización para todos los servicios en una empresa.
- D) Proporcionar un bus de datos de alta velocidad para aplicaciones en tiempo real.
Un ESB es un patrón de arquitectura que proporciona un bus de servicios empresariales para integrar aplicaciones heterogéneas, ofreciendo capacidades de enrutamiento, transformación y mediación de mensajes.
Pregunta 15: ¿Qué patrón de integración se utiliza para sincronizar datos entre sistemas de forma periódica, extrayendo, transformando y cargando datos?
- A) Message Queue
- B) API Gateway
- C) ESB (Enterprise Service Bus)
- D) ETL (Extract, Transform, Load)
ETL (Extract, Transform, Load) es un patrón de integración de datos que implica extraer datos de fuentes, transformarlos a un formato adecuado y cargarlos en un sistema de destino, típicamente en procesos por lotes.
Pregunta 16: ¿Cuál es la diferencia principal entre los métodos HTTP PATCH y PUT?
- A) PATCH se usa para crear recursos, PUT para actualizar.
- B) PATCH no está definido en el estándar HTTP.
- C) PATCH actualiza parcialmente un recurso, PUT lo reemplaza completamente.
- D) PATCH es idempotente, PUT no lo es.
Según RFC 5789, PATCH se utiliza para aplicar modificaciones parciales a un recurso, mientras que PUT (RFC 7231) reemplaza el recurso completo.
Pregunta 17: ¿Qué indica el código de estado HTTP 401?
- A) No autorizado: la autenticación es requerida y ha fallado.
- B) Prohibido: el servidor entiende la solicitud pero se niega a autorizarla.
- C) No encontrado: el recurso solicitado no existe.
- D) Error interno del servidor.
El código 401 Unauthorized en HTTP indica que la solicitud requiere autenticación y no se ha proporcionado o ha fallado.
Pregunta 18: ¿Qué formato de mensaje utiliza SOAP?
- A) YAML
- B) XML
- C) CSV
- D) JSON
SOAP (Simple Object Access Protocol) utiliza mensajes XML para el intercambio de datos, como se define en el estándar W3C SOAP.
Pregunta 19: En GraphQL, ¿qué operación se utiliza para modificar datos en el servidor?
- A) Mutation
- B) Query
- C) Subscription
- D) Update
En GraphQL, las mutaciones (mutations) son operaciones que se utilizan para modificar datos en el servidor, mientras que las consultas (queries) son para lectura.
Pregunta 20: En el flujo de concesión de autorización de OAuth 2.0, ¿qué se intercambia por un token de acceso?
- A) La API Key del cliente.
- B) Un token JWT.
- C) El código de autorización (authorization code).
- D) Las credenciales del usuario (usuario y contraseña).
En el flujo de autorización de OAuth 2.0 (RFC 6749), el cliente intercambia un código de autorización por un token de acceso, después de que el usuario autorice la solicitud.
Pregunta 21: ¿Cómo se verifica la integridad de un JWT?
- A) Comprobando la expiración en la carga útil.
- B) Validando la estructura JSON del token.
- C) Descifrando el token con una clave simétrica.
- D) Comparando la firma con una clave pública.
La firma de un JWT se verifica utilizando una clave secreta (para HMAC) o una clave pública (para algoritmos asimétricos como RSA) para asegurar que no ha sido alterado.
Pregunta 22: ¿Qué patrón se utiliza a menudo para gestionar la configuración en una arquitectura de microservicios?
- A) Service Discovery
- B) Config Server
- C) Load Balancer
- D) Singleton
En microservicios, un Config Server centralizado (parte de Spring Cloud Config, por ejemplo) permite gestionar la configuración externa para todos los servicios desde un lugar central.
Pregunta 23: ¿Cuál de las siguientes NO es una función típica de un ESB?
- A) Compilación de código fuente de aplicaciones.
- B) Enrutamiento de mensajes basado en contenido.
- C) Transformación de formatos de mensaje (ej: XML a JSON).
- D) Protocol bridging (ej: HTTP a JMS).
Un ESB se enfoca en la integración de aplicaciones mediante funciones como enrutamiento, transformación, y bridge de protocolos, pero no en la compilación de código fuente.
Pregunta 24: ¿Qué patrón de integración implica el uso de colas de mensajes para comunicación asíncrona entre sistemas?
- A) File Transfer
- B) Shared Database
- C) Remote Procedure Call (RPC)
- D) Message-Oriented Middleware (MOM)
Message-Oriented Middleware (MOM) utiliza colas de mensajes para permitir comunicación asíncrona y desacoplada entre aplicaciones.
Pregunta 25: ¿Cuál es una ventaja de utilizar una arquitectura N-capas frente a una de dos capas?
- A) Mejor escalabilidad y mantenibilidad al separar responsabilidades.
- B) Mayor acoplamiento entre la interfaz de usuario y la lógica de negocio.
- C) Menor latencia en la comunicación entre cliente y servidor.
- D) Simplificación del despliegue al reducir el número de componentes.
Las arquitecturas N-capas separan las preocupaciones en capas distintas (presentación, lógica, datos), lo que mejora la mantenibilidad, escalabilidad y flexibilidad.
Pregunta 26: ¿Cuál de los siguientes es un principio de diseño RESTful?
- A) Acoplamiento fuerte entre cliente y servidor.
- B) Estado de la sesión almacenado en el servidor.
- C) Comunicación basada en SOAP y WSDL.
- D) Interfaz uniforme, que incluye el uso de métodos HTTP estándar.
REST (Representational State Transfer) se basa en principios como interfaz uniforme, statelessness, cacheability, y uso de métodos HTTP estándar para operaciones.
Pregunta 27: ¿Cuál es una desventaja de usar API Keys para autenticación?
- A) No se pueden transmitir de forma segura en HTTPS.
- B) Requieren un intercambio complejo de tokens como OAuth.
- C) No permiten identificar la aplicación o usuario que hace la solicitud.
- D) Si se comprometen, pueden ser usadas por terceros sin restricción.
Las API Keys son estáticas y, si se filtran, un atacante puede usarlas para acceder al servicio como si fuera el titular, por lo que es importante protegerlas.
Pregunta 28: ¿En qué situación podría ser preferible una arquitectura monolítica sobre una de microservicios?
- A) Cuando se espera un alto tráfico y necesidad de escalar componentes específicos.
- B) Cuando se planea utilizar múltiples lenguajes de programación.
- C) Cuando la aplicación es pequeña y simple, y el equipo de desarrollo es reducido.
- D) Cuando se requiere una alta tolerancia a fallos y resiliencia.
Para aplicaciones pequeñas, un monolito puede ser más simple de desarrollar, desplegar y gestionar, evitando la complejidad de los microservicios.
Pregunta 29: ¿Qué lenguaje de consulta utiliza GraphQL?
- A) SQL (Structured Query Language)
- B) GraphQL tiene su propio lenguaje de consulta, similar a JSON.
- C) GQL (Graph Query Language), un lenguaje específico de GraphQL.
- D) XQuery para XML.
GraphQL utiliza un lenguaje de consulta propio donde las consultas se escriben en una sintaxis similar a JSON, definiendo los campos deseados.
Pregunta 30: ¿Qué indica el código de estado HTTP 503?
- A) Error interno del servidor.
- B) Servicio no disponible, temporalmente sobrecargado o en mantenimiento.
- C) Solicitud incorrecta.
- D) No encontrado.
El código 503 Service Unavailable indica que el servidor no está disponible temporalmente, por sobrecarga o mantenimiento, y el cliente puede reintentar más tarde.