2. 1.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 .
3. 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.
4. 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.
5. 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.
6. 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.
7. 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.
8. 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.
9. 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.
10. 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.
11. 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
12. 1.1.2 Aplicaciones
cliente/servidor
Caracterí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.
13. 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
14. 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).
15. 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.
16. 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
17. 1.1.3 Aplicaciones de 2,3 y n
capas Usuarios y dispositivos
Arquitectura lógica
Gestión de operaciones
Comunicaciones
Seguridad
Gestión de operaciones
Comunicaciones
Seguridad “ampliada”
Presentación
Componentes IU
Componentes de proceso de IU
Lógica deWorkflows
Business negocio Svc Interfaces Servicios
Componentes de negocio
Entidades de negocio Svc Agents
Svc Agents
Datos
Componentes de acceso a datos
Fuentes de datos
18. 1.2 Evolución de las tecnologías para
el desarrollo de aplicaciones
distribuidas.
19. 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.
20. 1.2 Evolución de las tecnologías para
el desarrollo de aplicaciones
distribuidas. Bases de Datos
Cliente/Servidor con
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.
21. 1.2 Evolución de las tecnologías para
el desarrollo de aplicaciones
distribuidas.
Cliente/Servidor con bases de datos
Cliente Servidor
(presentación (Datos + SP)
+ lógica)
RED
Select * from empleados
Pedro, Juan, Camilo, …
Trans. Fondos Consulta cuenta 1
Consulta cuenta 2
Actualización cuenta1
Actualización cuenta2
Adicionar movimientos
22. 1.2 Evolución de las tecnologías para
el desarrollo de aplicaciones
distribuidas.
Procesadores de Transacciones:
• Orientado a transacciones
• 3 niveles
SQL
RED
23. 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
24. Examen
1.2 Evolución de las tecnologías para
el desarrollo de aplicaciones
distribuidas.
Segunda
capa
Tercera
capa
26. Examen
1.3 Escenarios de la utilización de
las aplicaciones distribuidas.
Conexion
a la BD
27. 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
28. Examen
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.
29. 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
30. Leer
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.
31. Leer
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.
32. Leer
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.
33. Leer
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.
34. Leer
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.
35. Leer
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.
36. Leer
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.
37. Leer
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.
38. 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.
39. 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.
40. 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).
41. 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.
42. 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
43. 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.
44. 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