Unidad 1 Panorama general de las aplicaciones distribuidas

44
Desarrollo de Aplicaciones para Ambientes Distribuidos

Transcript of Unidad 1 Panorama general de las aplicaciones distribuidas

Page 1: Unidad 1 Panorama general de las aplicaciones distribuidas

Desarrollo de Aplicaciones para Ambientes Distribuidos

Page 2: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.1 Aplicaciones monolíticas1.1.1 Aplicaciones monolíticas

En los días del mainframe o del computador personal de escritorio, cuando una aplicación era almacenada en una única máquina, era común encontrar aplicaciones monolíticas que contenían toda la funcionalidad de la aplicación en una gran y frecuentemente difícilmente mantenible pieza de software .

Page 3: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.1 Aplicaciones monolíticas

Todas las entradas de usuario, verificación, lógica de negocio y acceso de datos podrían encontrarse juntas. Esto era apropiado en el mundo del mainframe y centros de datos corporativos porque todo era controlado y los mismos sistemas tendían a evolucionar lentamente.

Page 4: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.1 Aplicaciones monolíticas

Sin embargo, cualquier cambio requerido a cualquier parte de la funcionalidad podría potencialmente afectar otras partes. Porque la presentación, negocio, y la lógica de acceso a datos están localizados dentro de la misma pieza de código de aplicación, la recompilación de varias partes del código podría ser necesaria, incrementando la sobrecarga de nueva o cambios de funcionalidad.

Page 5: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.1 Aplicaciones monolíticas

Incluso, los cambios en partes del código podría introducir bugs no intencionales en otras partes aparentemente no relacionadas.

Page 6: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.2 Aplicaciones cliente/servidor

Conceptos Es un modelo para construir sistemas de

información, que se sustenta en la idea de repartir el tratamiento de la información y los datos por todo el sistema informático, permitiendo mejorar el rendimiento del sistema global de información.

Page 7: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.2 Aplicaciones cliente/servidor

Arquitectura Los distintos aspectos que caracterizan a una

aplicación (proceso, almacenamiento, control y operaciones de entrada y salida de datos) en el sentido más amplio, están situados en más de una computadora, los cuales se encuentran interconectados mediante una red de comunicaciones.

Page 8: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.2 Aplicaciones cliente/servidor………………………………………………IBM Es la tecnología que proporciona al usuario final

el acceso transparente a las aplicaciones, datos, servicios de cómputo o cualquier otro recurso del grupo de trabajo y/o, a través de la organización, en múltiples plataformas. El modelo soporta un medio ambiente distribuido en el cual los requerimientos de servicio hechos por estaciones de trabajo inteligentes o "clientes'', resultan en un trabajo realizado por otras computadoras llamados servidores.

Page 9: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.2 Aplicaciones cliente/servidor

Cliente Es el que inicia un requerimiento de servicio.

El requerimiento inicial puede convertirse en múltiples requerimientos de trabajo a través de redes LAN o WAN. La ubicación de los datos o de las aplicaciones es totalmente transparente para el cliente.

Page 10: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.2 Aplicaciones cliente/servidor

Servidor Es cualquier recurso de cómputo dedicado a

responder a los requerimientos del cliente. Los servidores pueden estar conectados a los clientes a través de redes LANs o WANs, para proporcionar múltiples servicios a los clientes tales como impresión, acceso a bases de datos, procesamiento de imágenes, etc.

Page 11: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.2 Aplicaciones cliente/servidor

¿ Qué es un proceso distribuido? Es un modelo de sistemas y/o de aplicaciones,

en el cual las funciones y los datos pueden estar dispersos a través de múltiples recursos de cómputo, conectados en un ambiente de redes LAN o WAN.

Podemos tener un proceso distribuido a través de los celulares

Page 12: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.2 Aplicaciones cliente/servidorCaracterísticas del Modelo

El Cliente y el Servidor pueden actuar como una sola entidad y también pueden actuar como entidades separadas, realizando actividades o tareas independientes.

Las funciones de Cliente y Servidor pueden estar en plataformas separadas, o en la misma plataforma.

Un servidor da servicio a múltiples clientes en forma concurrente.

Cada plataforma puede ser escalable independientemente. Los cambios realizados en las plataformas de los Clientes o de los Servidores, ya sean por actualización o por reemplazo tecnológico, se realizan de una manera transparente para el usuario final.

Page 13: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.3 Aplicaciones de 2,3 y n capas

El modelo n−tier (n−capas) de informática distribuida ha emergido como la arquitectura predominante para la construcción de aplicaciones multiplataforma en la mayor parte de las empresas.

1.Codificar al mismo tiempo

Page 14: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.3 Aplicaciones de 2,3 y n capas

Este cambio radical en los modelos de computación, desde los sistemas monolíticos basados en mainframe y los tradicionales sistemas cliente−servidor, hacia sistemas distribuidos multiplataforma altamente modulables, representa simplemente la punta del iceberg de lo que está por llegar en el mundo del desarrollo de aplicaciones, tal y como se pone de manifiesto en las últimas tendencias de las grandes empresas de tecnología, como Sun con su estrategia Sun Tone, o Microsoft con DotNET (.Net).

Page 15: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.3 Aplicaciones de 2,3 y n capas(examen)Ventajas del modelo Desarrollos paralelos (varios programadores en cada capa) Aplicaciones más robustas debido al encapsulamiento Mantenimiento y soporte más sencillo (es más sencillo

cambiar un componente que modificar una aplicación monolítica)

Mayor flexibilidad (se pueden añadir nuevos módulos para dotar al sistema de nueva funcionalidad)

Alta escalabilidad . La principal ventaja de una aplicación distribuida bien diseñada es su buen escalado, es decir, que puede manejar muchas peticiones con el mismo rendimiento simplemente añadiendo más hardware. El crecimiento es casi lineal y no es necesario añadir más código para conseguir esta escalabilidad.

Page 16: Unidad 1 Panorama general de las aplicaciones distribuidas

1.1.3 Aplicaciones de 2,3 y n capas (examen)

Arquitectura lógica “clásica”

Presentación

Lógica de negocio (Que es lo que hace

el sistema)

Datos

Fuentes de datos

Page 17: Unidad 1 Panorama general de las aplicaciones distribuidas

Usuarios y dispositivosUsuarios y dispositivos

1.1.3 Aplicaciones de 2,3 y n capas

Arquitectura lógica “ampliada”

Fuentes de datos

Componentes IUComponentes IU

Componentes de proceso de IUComponentes de proceso de IU

Componentes de acceso a datosComponentes de acceso a datos

Business WorkflowsBusiness Workflows

Componentes de negocioComponentes de negocio

Entidades de negocioEntidades de negocio

Datos

Lógica de negocio ServiciosSvc InterfacesSvc Interfaces

Svc AgentsSvc Agents

Presentación

SeguridadSeguridad

Comunicaciones

Comunicaciones

Gestión de operaciones

Gestión de operaciones

Page 18: Unidad 1 Panorama general de las aplicaciones distribuidas

1.2 Evolución de las tecnologías para el desarrollo de aplicaciones distribuidas.

Page 19: Unidad 1 Panorama general de las aplicaciones distribuidas

1.2 Evolución de las tecnologías para el desarrollo de aplicaciones distribuidas. Sistema Distribuido: “Colección de

máquinas/procesos que colaborar para cumplir un objetivo”

Inicio con Aplicaciones Centralizadas. Todo lo hacia un mismo equipo.

Primer servicio telemático: Emulación de Terminal• Hay distribución, pero todo lo sigue haciendo el Servidor.

• Ej: telnet, Xwindows, Windows Terminal, VNC, etc.

Page 20: Unidad 1 Panorama general de las aplicaciones distribuidas

1.2 Evolución de las tecnologías para el desarrollo de aplicaciones distribuidas. Cliente/Servidor con Bases de Datos

Modelo de 2 niveles Aparición de n-lógicas• Presentación• Comunicaciones• Lógica del Negocio• Datos

Examen En el Cliente se haya la Presentación y la Lógica del Negocio En el Servidor se hayan los Datos (Bases de Datos) Se supone que las entidades intercambian sentencias SQL NO orientado a transacciones Muy orientado a 4GL Procedimientos almacenados. Lógica del negocio en la base de

datos. Dependiente.

Page 21: Unidad 1 Panorama general de las aplicaciones distribuidas

1.2 Evolución de las tecnologías para el desarrollo de aplicaciones distribuidas. Cliente/Servidor con bases de datos

Select * from empleadosPedro, Juan, Camilo, …

Trans. Fondos Consulta cuenta 1Consulta cuenta 2Actualización cuenta1Actualización cuenta2Adicionar movimientos

Servidor(Datos + SP)

RED

Cliente(presentación+ lógica)

Page 22: Unidad 1 Panorama general de las aplicaciones distribuidas

1.2 Evolución de las tecnologías para el desarrollo de aplicaciones distribuidas. Procesadores de Transacciones:• Orientado a transacciones• 3 niveles

RED

SQL

Page 23: Unidad 1 Panorama general de las aplicaciones distribuidas

1.2 Evolución de las tecnologías para el desarrollo de aplicaciones distribuidas. Objetos Distribuidos

Primeros pasos en RPC’s A finales de los 80’s emergió DCE (Distributed Computing

Environment) como una iniciativa para estandarizar las diferentes tecnologías de RPC (Procedimiento a funciones). No considera tecnologías de Mensajería.

Éxito del modelo Orientado a Objetos tanto en Análisis/Diseño como en Desarrollo.

Por qué no extender este modelo a un ambiente distribuido Un cliente en cualquier parte de la red, invoca un método de un

objeto remoto. Adecuados en comunicaciones:

• Cliente a Servidor• Servidor a Servidor

Page 24: Unidad 1 Panorama general de las aplicaciones distribuidas

1.2 Evolución de las tecnologías para el desarrollo de aplicaciones distribuidas.

Segunda capa

Terceracapa

Examen

Page 25: Unidad 1 Panorama general de las aplicaciones distribuidas

1.3 Escenarios de la utilización de las aplicaciones distribuidas.

Examen

Page 26: Unidad 1 Panorama general de las aplicaciones distribuidas

1.3 Escenarios de la utilización de las aplicaciones distribuidas.

Conexiona la BD

Examen

Page 27: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. El desarrollo de aplicaciones distribuidas requirió de

nuevas técnicas de diseño y de generación de modelos. También trajo nuevos problemas.

Existen 2 tipos distintos de arquitecturas que se utilizaron antes de .NET para hacer aplicaciones distribuidas: Llamadas a Procedimiento Remoto (RPC) Arquitecturas basadas en mensajes

Se verán los problemas técnicos que este tipo de arquitecturas tiene y finalmente como los Estándares Web son utilizados para hacer la nueva generación de aplicaciones distribuidas

Page 28: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. Hay una serie de problemas comunes en el diseño de las

aplicaciones distribuidas:

La compatibilidad de los Tipos de Datos: Distintos sistemas operativos tienen diferentes tipos de datos que no son siempre compatibles entre sí. (Linux vs. Windows)

Fallas del Servidor: Debido a que los componentes pueden ser remotos, una falla de cualquiera de ellos puede hacer que toda la aplicación falle.

Fallas del Cliente: El servidor debe saber como responder a las fallas del cliente.

Examen

Page 29: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. Reintento de llamadas: Si por ejemplo, se hace una

llamada a un método en un servidor para generar una orden de compra muy grande, y el servidor responde pero se pierde la respuesta por fallas de red, no es muy eficiente volver a enviar la orden de compra.

Seguridad: En aplicaciones distribuidas los problemas de seguridad se multiplican. Por ejemplo, se debe considerar como: Autenticar a los usuarios Autorizarlos a acceder a los recursos Encriptar la información que viaja por la red Evitar ataques de denegación de servicio

Page 30: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. Sincronización de la hora: Hay operaciones

que dependen de la fecha y la hora. Por ejemplo, no es lógico en una aplicación procesar un envío de mercadería antes de haber recibido la orden de compra. Si el cliente y el servidor tienen fechas distintas, se debe generar un mecanismo de sincronización de hora para evitar este problema.

Leer

Page 31: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. La arquitectura basada en RPC Qué es RPC:

RPC son llamadas a procedimientos o funciones en sistemas remotos, es decir en máquinas distintas a la máquina local.

Transparencia de localización:El desarrollador utiliza los componentes sin necesidad de saber su ubicación física.

Con RPC tanto en el cliente como en la máquina donde reside el componente hay subsistemas que se ocupan de la comunicación y el intercambio de datos.

Leer

Page 32: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. Llamadas Sincrónicas:

En RPC las llamadas a los procedimientos son sincrónicas. Esto quiere decir que cuando una aplicación hace una llamada a un procedimiento RPC debe esperar que el servidor le responda para poder continuar con el procesamiento. Esto presenta problemas en un entorno distribuido, mucho más si pensamos en distribuir los componentes en Internet.

Leer

Page 33: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. Las llamadas sincrónicas con RPC tienen desventajas: Uso de múltiples componentes: Si su aplicación

distribuida depende de muchos componentes que se llaman entre sí, esto hace que la aplicación sea más susceptible a fallas.

Balanceo de Carga y Tolerancia a fallos: Es el problema de como las aplicaciones descubren la información necesaria para poder conectarse otros servidores en el caso de que el que esta utilizando falle. O de como balancean el procesamiento entre varios servidores Esto no es posible con RPC.

Leer

Page 34: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. Priorización: Con RPC es muy difícil detectar

que servidores están con mucha carga de trabajo y derivar la llamada RPC a otro servidor menos ocupado.

Picos de carga de Trabajo: RPC no puede manejar los picos de carga de trabajo que puede tener un servidor si tiene llamadas RPC de muchos clientes.

Leer

Page 35: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. La arquitectura basada en Mensajes Otra arquitectura para desarrollar aplicaciones

distribuidas es la basada en mensajes.

Esta tecnología es asincrónica. Lo que significa que el cliente puede seguir con el procesamiento mientras espera la respuesta del servidor.

Utiliza mensajes en vez de llamadas a funciones.

Leer

Page 36: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. Tiene desventajas: Procesamiento del Mensaje:

El programador debe manejar en el código el empaquetamiento y des empaquetamiento de los mensajes. Además debe controlar su validez

Interoperabilidad:Los sistemas de mensajería utilizan tecnología propietaria. Se necesita software para permitir el envío de mensajes y la comunicación los distintos sistemas.

Flujo de Carga y secuenciamiento de los mensajes:Se necesita de algún mecanismo para coordinar el flujo y la secuencia de los mensajes. Por ejemplo, no se puede procesar una orden de envío de un producto antes de que se procesa la orden de pedido del producto.

Leer

Page 37: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. Los estándares Web Tanto RPC como la arquitectura basada en

mensajes han sido implementados en forma exitosa por muchas organizaciones. Sin embargo su uso tiene dificultades que se resuelven con la utilización de los protocolos Web estándares.

Leer

Page 38: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. Problemas con los Protocolos Binarios:

Existen varias tecnologías RPC, ninguna estándar, por ejemplo. COM de Microsoft, CORBA y RMI. Todas estas tecnologías utilizan protocolos binarios.

Los protocolos binarios tienen desventajas: Firewall:

Para permitir la comunicación entre un cliente y un servidor que se encuentra detrás de un firewall los administradores deben dejar un rango variable de puertos abiertos. Esto es un riesgo de seguridad muy alto.

Page 39: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas.

Interoperatividad: Las distintas tecnologías RPC implican protocolos binarios de comunicación distintos. Para que interoperen entre sí se deben traducir los paquetes de red lo que puede significar pérdida de información. Para evitar este problema las organizaciones utilizan un solo modelo RPC.

Formato de los Datos: Cada protocolo RPC utiliza un formato de datos distintos. La traducción de un formato a otro presenta dificultades.

Page 40: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas. La nueva arquitectura:

Los protocolos que utiliza Internet resuelven muchos de los problemas anteriormente mencionados. Internet y la Web: Los protocolos TCP e IP fueron

desarrollados originalmente para conectar redes distintas y crear una red de redes. Esta red de redes terminó convirtiéndose en el Internet que conocemos hoy. A finales de 1990, Tim Berners-Lee inventó WWW (World Wide Web).

Page 41: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas.

WWW es lo que hoy conocemos como la Web. La Web es una red globalmente interconectada de documentos hipertexto. Utiliza 2 tecnologías principales: El lenguaje HTML y el protocolo HTTP para la comunicación. HTML: Es un lenguaje de marcas (Tags). Las

marcas definen como el Explorador de Internet presenta la información. Los documentos que tienen estas marcas son llamados documentos hipertexto.

Page 42: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas.

Ventajas de HTTP: Es el protocolo utilizado para pedir y recibir documentos. El formato de estos documentos puede ser HTML pero también muchos otros más como por ejemplo XML.

Los Servicios Web y los clientes pueden intercambiar documentos XML utilizando el protocolo HTTP. HTTP es un Standard usado universalmente

Page 43: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas.

XML- Un formato de datos universal: A pesar de que HTML permite presentar datos, HTML no permite comunicar la estructura de los datos y su relación. XML nació en 1996 para permitir describir la estructura de los datos en un documento.

Firewall: Los servidores Web son los responsables de administrar los documentos, que pueden ser accedidos desde Internet pasando por el firewall de la organización y utilizando el protocolo HTTP.

Page 44: Unidad 1 Panorama general de las aplicaciones distribuidas

1.4 Problemas comunes en el desarrollo y uso de las aplicaciones distribuidas.

Problemas con la Web: Como la Web es una red pública se presentan algunos problemas.

Seguridad: Entre otros problemas se encuentran: el robo de información o la modificación de los datos

Performance: Algunos clientes acceden con conexiones telefónicas lo que puede limitar por su baja velocidad la complejidad de las aplicaciones. Por lo tanto algunas aplicaciones se deben limitar a la Intranet