Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Puede solicitar gratuitamente las soluciones a todas las actividades y al examen final en el email [email protected] Capacidades que se adquieren con este Manual: Seleccionar y emplear servicios distribuidos para su integración en la aplicación web: - Identificar las posibilidades que ofrecen los servicios distribuidos web para su integración en la aplicación a desarrollar. - Especificar las características de los protocolos estándares del mercado para poder utilizar servicios web en la aplicación a desarrollar. - Seleccionar y emplear los servicios web más adecuados para ser utilizados en la aplicación web en función del diseño especificado.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 118
Veröffentlichungsjahr: 2025
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Desarrollo de aplicaciones web distribuidas. UF1846.
Autora: Beatriz Coronado García.
© EDITORIAL TUTOR FORMACIÓN
C/ San Millán, 7, bajo 10
26004 Logroño (La Rioja)
Tlf. 610687276
Email: [email protected]
Web: https://tutorformacion.es o https://editorial.tutorformacion.es
Edición: septiembre 2024
ISBN: 978-84-19189-93-6
Depósito legal: LR 1254-2024
Reservados todos los derechos de publicación en cualquier idioma.
Según el código penal vigente ninguna parte de este o cualquier otro libro puede ser reproducida, grabada en alguno de los sistemas de almacenamiento existentes o transmitida por cualquier procedimiento, ya sea electrónico, mecánico, reprográfico, magnético o cualquier otro, sin autorización previa y por escrito de D. Miguel Ángel Ladrón Jiménez; su contenido está protegido por la ley vigente que establece penas de prisión y/o multas a quienes intencionadamente reprodujeren o plagiaren, en todo o en parte, una obra literaria, artística o científica.
Foto de portada diseñada por FreePik.
Contenido
Introducción
Arquitecturas distribuidas orientadas a servicios
1.Características generales de las arquitecturas de servicios distribuidos.
2.Modelo conceptual de las arquitecturas orientadas a servicios.
2.1.Basados en mensajes.
2.2.Basados en recursos.
2.3.Políticas y contratos de servicios.
3.Aspectos de seguridad en arquitecturas orientadas a servicios.
3.1.Seguridad de datos.
3.2.Seguridad de mensajes.
3.3.Control de acceso: el modelo RBAC.
3.4.Seguridad en comunicaciones: protocolos seguros.
4.Implementación de arquitecturas orientadas a servicios mediante tecnologías web.
4.1.Especificaciones de servicios web de uso común: SOAP, REST, etc.
4.2.Lenguajes de definición de servicios: el estándar WSDL.
4.3.Estándares de seguridad en servicios web: WS-Security, SAML, XACML, etc.
5.Implementación de la seguridad en arquitecturas orientadas a servicios.
5.1.Conceptos básicos de criptografía.
5.2.Tipos de criptografía
5.3.Entidades certificadoras.
5.4.Certificados digitales. Características.
5.5.Identificación y firma digital mediante certificados digitales.
5.6.Cifrado de datos.
6.Directorios de servicios.
6.1.Concepto de directorio.
6.2.Ventajas e inconvenientes.
6.3.Directorios distribuidos.
6.4.Estándares sobre directorios de servicios: UDDI.
7.Búsqueda y selección de servicios.
7.1.Proveedores de servicios públicos y privados.
7.2.Análisis de estructura y fiabilidad de los datos.
7.3.Identificación de riesgos relacionados con el origen de los datos.
8.Formatos de los ficheros de intercambio de datos.
8.1.Tipos de formatos.
8.2.Construcción de ficheros de intercambio a partir de estructuras de datos en memoria.
8.3.Validadores de formato.
8.4.Procesadores.
9.Prueba de autoevaluación.
Programación de servicios web en entornos distribuidos
1.Componentes software para el acceso a servicios distribuidos.
1.1.Definición de servicios.
1.2.Generación automática de servicios.
2.Programación de diferentes tipos de acceso a servicios.
2.1.Servicios basados en publicación/suscripción
2.2.Servicios basados en repositorios.
2.3.Servicios accesibles desde agentes de usuario.
2.4.Proveedores y consumidores de servicios en entorno servidor.
3.Herramientas para la programación de servicios web.
3.1.Comparativa.
3.2.Bibliotecas y entornos integrados (frameworks) de uso común
4.Prueba de autoevaluación.
Resumen
Prueba de evaluación final
Este manual está diseñado para proporcionar una comprensión profunda y detallada sobre las arquitecturas distribuidas orientadas a servicios y la programación de servicios web en entornos distribuidos. A lo largo de sus páginas, se abordarán tanto los fundamentos teóricos como las implementaciones prácticas, lo que permitirá a los lectores adquirir las competencias necesarias para diseñar, implementar y asegurar arquitecturas distribuidas robustas, además de desarrollar servicios web que se integren eficientemente en este tipo de entornos.
Se inicia con una introducción a las características generales de las arquitecturas de servicios distribuidos, describiendo los modelos conceptuales basados en mensajes y recursos. Además, se exploran las políticas y contratos de servicios que garantizan una interacción coherente entre los diferentes componentes del sistema. Este primer capítulo también proporciona un análisis exhaustivo de los aspectos de seguridad, abordando temas fundamentales como la seguridad de los datos, los mensajes y el control de acceso, así como la importancia de los protocolos seguros en las comunicaciones entre servicios.
El manual continúa con una explicación detallada sobre la implementación de arquitecturas orientadas a servicios utilizando tecnologías web como SOAP y REST, destacando su relevancia en el intercambio de información entre aplicaciones distribuidas. Asimismo, se examinan los lenguajes de definición de servicios, como el estándar WSDL, y los principales estándares de seguridad en servicios web, incluyendo WS-Security, SAML y XACML, que proporcionan las bases para proteger los servicios en entornos distribuidos.
En cuanto a la seguridad en las arquitecturas orientadas a servicios, se profundiza en los conceptos básicos de criptografía, abarcando los diferentes tipos de cifrado, entidades certificadoras y la identificación mediante certificados digitales. El cifrado de datos, esencial para asegurar la integridad y confidencialidad en las comunicaciones, también se aborda en detalle, proporcionando al lector una comprensión completa sobre las herramientas y técnicas más utilizadas.
Un tema clave tratado en el manual es el de los directorios de servicios, donde se analizan su concepto, ventajas e inconvenientes, y se presentan estándares como UDDI que facilitan la localización y uso de servicios en un entorno distribuido.
En la segunda parte del documento, se aborda la programación de servicios web en entornos distribuidos. Se exploran las diferentes herramientas y componentes software necesarios para acceder y consumir servicios distribuidos, así como la generación automática de servicios. Además, se examinan diferentes tipos de acceso a servicios, desde modelos basados en publicación/suscripción hasta servicios accesibles desde agentes de usuario.
El manual también dedica un apartado a las herramientas más comunes para la programación de servicios web, proporcionando una comparativa entre ellas y analizando bibliotecas y frameworks que facilitan el desarrollo de aplicaciones distribuidas.
Este documento servirá como una guía integral para aquellas personas interesadas en adentrarse en el diseño y desarrollo de servicios web distribuidos, brindando el conocimiento necesario para enfrentar los retos técnicos que implican la creación, implementación y aseguramiento de arquitecturas de servicios en entornos modernos y distribuidos.
A continuación, se presentará un glosario de términos clave relacionados con las arquitecturas distribuidas orientadas a servicios y la programación de servicios web en entornos distribuidos:
ACID (Atomicity, Consistency, Isolation, Durability): Conjunto de propiedades que garantizan la fiabilidad en transacciones de bases de datos.Agente de usuario: Aplicación que interactúa con servicios web en nombre de un usuario.API (Application Programming Interface): Conjunto de definiciones y protocolos que permiten la comunicación entre diferentes componentes de software.API First: Estrategia de desarrollo en la que se prioriza la creación de APIs bien diseñadas y documentadas antes de desarrollar la lógica interna de la aplicación.API Gateway: Componente que actúa como puerta de entrada para las solicitudes de clientes, enrutando las peticiones a los microservicios apropiados y manejando funciones transversales como autenticación y monitorización.Autenticación federada: Sistema en el que varias organizaciones confían en un solo sistema de autenticación para autenticar a los usuarios.Autenticación mutua: Proceso de verificación en el que tanto el cliente como el servidor se autentican mutuamente antes de establecer una conexión segura.Balanceo basado en contenido: Técnica de distribución de tráfico que selecciona el servidor adecuado según el contenido de la solicitud, como URL o encabezados HTTP.Balanceo de carga: Técnica de distribución del trabajo a varios servidores para asegurar una respuesta rápida y eficiente.Balanceo dinámico: Técnica de ajuste dinámico del tráfico de red o procesamiento de tareas según la carga en tiempo real de los servidores.BFF (Backend for Frontend): Patrón que crea backends personalizados para cada tipo de cliente (móvil, web) para optimizar las interacciones entre la interfaz y los servicios.Blue-Green Deployment: Estrategia de despliegue en la que una nueva versión de una aplicación se implementa en un entorno separado (green), mientras la versión actual sigue en producción (blue), permitiendo cambiar entre ellas sin tiempo de inactividad.Bus de servicios empresariales (ESB): Infraestructura de software que facilita la comunicación entre los servicios en una arquitectura orientada a servicios.Cache distribuida: Sistema de almacenamiento en caché donde los datos se distribuyen entre múltiples nodos o servidores para mejorar el rendimiento y la escalabilidad.Carga equilibrada (Load Balancing): Técnica para distribuir el tráfico de red entre varios servidores para optimizar la utilización de recursos.Certificado digital: Documento electrónico que autentica la identidad de un usuario o entidad en una red.Choreography (coreografía): En arquitecturas distribuidas, es un enfoque en el que los servicios trabajan de forma colaborativa sin un controlador central, coordinando sus acciones mediante eventos.Cifrado de datos: Proceso de transformar datos en una forma ilegible para proteger su confidencialidad.Circuit Breaker: Patrón de diseño que evita que una aplicación realice solicitudes repetidas a un servicio que se sabe está fallando.Circuito de tolerancia a fallos: Mecanismo que evita que los fallos en un servicio impacten negativamente a otros servicios dependientes, a través del uso de circuitos abiertos o cerrados.Cluster: Conjunto de servidores que trabajan juntos para mejorar el rendimiento, la disponibilidad y la escalabilidad de una aplicación.Coherencia eventual: Modelo de consistencia en el que los datos distribuidos eventualmente serán consistentes, pero pueden estar temporalmente desincronizados.Consenso distribuido: Proceso por el cual un conjunto de nodos en un sistema distribuido acuerda un valor o decisión única, incluso en presencia de fallos o fallos de red.Consistencia fuerte: Garantía de que todas las réplicas de los datos en un sistema distribuido reflejan el mismo estado en todo momento después de cada operación de escritura.Consumidor de servicios: Entidad que utiliza un servicio web proporcionado por un servidor.Content Delivery Network (CDN): Red de servidores distribuidos geográficamente que almacenan en caché contenido estático para reducir la latencia y mejorar la velocidad de acceso para los usuarios.Contrato de servicios: Acuerdo entre el proveedor y el consumidor de un servicio que define sus obligaciones y derechos.Control de concurrencia: Mecanismo para gestionar múltiples accesos simultáneos a recursos o servicios compartidos sin conflictos.Controlador API: Componente encargado de gestionar el enrutamiento y la lógica de las solicitudes entrantes hacia la API, interactuando con los servicios de backend.CORS (Cross-Origin Resource Sharing): Mecanismo que permite a los servidores controlar qué recursos se pueden compartir entre dominios en una aplicación web.CQRS (Command Query Responsibility Segregation): Patrón arquitectónico que separa las operaciones de lectura y escritura en diferentes modelos para mejorar el rendimiento y escalabilidad.Criptografía: Técnica utilizada para proteger la información mediante el uso de cifrado y descifrado de datos.Desacoplamiento: Proceso de separar componentes de un sistema para que puedan funcionar de manera independiente, lo que facilita la escalabilidad y mantenimiento.DevOps: Conjunto de prácticas que combinan el desarrollo de software (Dev) y la operación de sistemas (Ops) para mejorar la colaboración y acelerar la entrega de software.Directorio de servicios: Repositorio que contiene información sobre servicios web disponibles en una red.Ejecución distribuida: Modelo en el que el procesamiento se realiza en múltiples nodos dentro de una red distribuida.Entidad certificadora (CA): Organismo que emite y gestiona certificados digitales.Escalabilidad: Capacidad de un sistema para manejar el aumento de demanda añadiendo recursos adicionales.Estado compartido: Situación en la que múltiples servicios o instancias tienen acceso a una misma fuente de datos o recurso, lo que requiere mecanismos de sincronización y control de acceso.Estrategia de retries: Patrón que permite reintentar solicitudes fallidas a un servicio cuando se detectan errores temporales.Failback: Proceso de retorno a la instancia o componente primario después de que un sistema haya realizado una conmutación por error (failover) debido a un fallo.Failover: Proceso mediante el cual un sistema cambia automáticamente a un servidor o componente de respaldo en caso de fallo del primario.Federación de servicios: Organización de servicios en múltiples dominios o entornos que cooperan bajo un conjunto de normas comunes, manteniendo al mismo tiempo independencia.Gobernanza SOA: Proceso de controlar y administrar la arquitectura orientada a servicios a través de políticas, procesos y estándares.Granularidad de servicio: Nivel de abstracción y tamaño de los servicios individuales en una arquitectura SOA o de microservicios.Heartbeat (pulso): Mecanismo de monitorización que envía señales periódicas para verificar la disponibilidad y salud de los servicios en una red distribuida.Idempotencia de operaciones: Propiedad de ciertas operaciones en un servicio web que permite que se repitan múltiples veces sin que el resultado cambie.Idempotencia: Propiedad de las operaciones que permite que se realicen múltiples veces sin cambiar el resultado, importante para garantizar la consistencia en solicitudes repetidas.IDL (Interface Definition Language): Lenguaje utilizado para definir las interfaces que los objetos distribuidos implementan.Infraestructura como código (IaC): Práctica de gestionar y aprovisionar recursos de infraestructura mediante archivos de configuración legibles por máquinas en lugar de procesos manuales.Integración continua: Práctica de desarrollo de software que implica la integración frecuente de cambios en el código, junto con pruebas automatizadas para verificar la integridad del sistema.Interoperabilidad: Capacidad de diferentes sistemas y aplicaciones para trabajar juntos e intercambiar información de manera eficiente.JSON (JavaScript Object Notation): Formato de intercambio de datos ligero y de fácil lectura por humanos y máquinas.JWT (JSON Web Token): Token utilizado para transmitir información de forma segura entre dos partes como parte de un esquema de autenticación o autorización.Latencia de red: Retardo en la transmisión de datos a través de la red entre el cliente y el servidor.Límite de tasa (Rate limiting): Técnica para restringir el número de solicitudes que un cliente puede realizar a una API en un período determinado para evitar sobrecargas en los servidores.Límite de tiempo (timeout): Tiempo máximo que un sistema o servicio espera una respuesta antes de asumir que ha ocurrido un fallo.Load Shedding: Técnica de limitar el procesamiento de solicitudes en un sistema cuando está sobrecargado, para evitar fallos generalizados.Mensajería asincrónica: Modelo de comunicación en el que el remitente de un mensaje no necesita esperar una respuesta inmediata, permitiendo una mayor flexibilidad y eficiencia.Microfrontend: Arquitectura en la que las interfaces de usuario se dividen en componentes independientes, similar al concepto de microservicios pero aplicado al frontend.Microlatencia: Tiempos de respuesta extremadamente bajos necesarios en aplicaciones críticas donde incluso pequeños retrasos pueden afectar el rendimiento.Microservicios: Estilo arquitectónico donde una aplicación se divide en pequeños servicios independientes que se comunican entre sí.Middleware: Software que conecta y coordina diferentes aplicaciones distribuidas en un sistema.OAuth: Protocolo de autorización que permite acceso limitado a recursos protegidos sin compartir las credenciales del usuario.