Top Banner
Aplicaciones Aplicaciones Distribuidas Distribuidas Por: Por: Sorey Bibiana García Zapata
80

Aplicaciones Distribuidas

Feb 19, 2017

Download

Technology

Sorey Garcia
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Aplicaciones Distribuidas

Aplicaciones DistribuidasAplicaciones DistribuidasPor:Por:

Sorey Bibiana García Zapata

Page 2: Aplicaciones Distribuidas

Sobre mi…Sobre mi…

Una frase para empezar…“El conocimiento esta condicionado por la experiencia”

Me sé algunas, me gusta compartir las que me sé, las que no sé, me gusta aprenderlas, recibo todo tipo de aportes y correcciones…

Y pues lo que no sepamos, lo averiguamos.

Page 3: Aplicaciones Distribuidas

Sobre el curso…Sobre el curso…

Este curso esta enfocado a dar las nociones principales alrededor del desarrollo de aplicaciones distribuidas,

reconociendo las tecnologías relacionadas a cada una de las partes fundamentales de estas y por supuesto las

consideraciones asociadas a su desarrollo.

Page 4: Aplicaciones Distribuidas

Importante!Importante!

...desarrollar softwaredesarrollar software, no es programarprogramar…

…este curso requiere conocer claramente esa diferencia!

Page 5: Aplicaciones Distribuidas

El desarrollo de softwaredesarrollo de software incluye todas las disciplinas asociadas a la ingeniería de softwareingeniería de software

desde el análisisanálisis hasta la puesta en producciónpuesta en producción

… el desarrollo de aplicaciones distribuidas sugiere por tanto consideraciones durante la ejecución de todo el ciclo de vida…

Page 6: Aplicaciones Distribuidas

Recomendación!Recomendación!

Si a este momento, no reconoce conceptos como, ingeniería de software u orientación a objetosingeniería de software u orientación a objetos,

inicie con el aprendizaje de estos antes de profundizar técnicamente en la distribución de

aplicaciones.

Ahora si, comencemos…

Page 7: Aplicaciones Distribuidas

Que es una aplicación distribuida?aplicación distribuida?

Page 8: Aplicaciones Distribuidas

Es una aplicación con distintos componentescomponentes que se ejecutan en entornos separadosentornos separados,

normalmente en diferentes plataformas conectadas a través de una red

Wikipedia

Page 9: Aplicaciones Distribuidas

Se entendió?Se entendió?Veamos que tanto…

Page 10: Aplicaciones Distribuidas

Cuales son los componentescomponentes que se distribuyendistribuyen?

Que criterios se usan para determinar que conforma un componentecomponente?

A través de que mecanismos se realiza la comunicación comunicación entre componentes distribuidos componentes distribuidos?

Que es un componentecomponente?

Page 11: Aplicaciones Distribuidas

Que debería saberse y/o tenerse en saberse y/o tenerse en cuenta cuenta para desarrollardesarrollar una aplicación aplicación

distribuidadistribuida?

Page 12: Aplicaciones Distribuidas

CapasCapas

NivelesNiveles

ArquitecturaArquitectura

ProtocolosProtocolos

Calidades SistémicasCalidades Sistémicas

UMLUMLDespliegueDespliegue

Cliente/ServidorCliente/Servidor

ServiciosServicios

Lógica de NegocioLógica de Negocio

Acceso a DatosAcceso a Datos

WebservicesWebservices

InterfacesInterfaces

ComponentesComponentes

ComunicaciónComunicación

ObjetosObjetos

Interfaz de UsuarioInterfaz de UsuarioPaquetesPaquetes

InteroperabilidadInteroperabilidadComunicaciónComunicación

Page 13: Aplicaciones Distribuidas

Vamos por partes…

A que se refiere la distribucióndistribución?

Page 14: Aplicaciones Distribuidas

Las distribución distribución refiere a la construcción de software por partes, a las cuales les son

asignadas un conjunto específicoconjunto específico de responsabilidades dentro de un sistema.

Page 15: Aplicaciones Distribuidas

Esta distribución distribución como bien enunciaba la definición formal, habla de que las partes o componentes se

encuentran en entornos separadosentornos separados, sin embargo, lo que tiene implícito esta definición, es que para

realizar esta separación física primero debe tenerse clara la separación lógica separación lógica de las partes de una

aplicación, esto quiere decir que programáticamente existe una forma de separarseparar o agruparagrupar los

componentes.

Page 16: Aplicaciones Distribuidas

La separación físicaseparación física no es en todas las ocasiones “maquinas diferentes” de

acuerdo a arquitectura tambien puede ser la ubicación de un conjunto de

funcionalidades en archivos, rutas o montadas sobre técnologías diferentes

dentro de la misma máquina

Page 17: Aplicaciones Distribuidas

Ahora bien, cuando hablemos de distribución lógica lo entenderemos como separación por

“CapasCapas” (tiers) y cuando hablemos de distribución física usaremos el término

separación en “NivelesNiveles” (layers)

Page 18: Aplicaciones Distribuidas

La separación por capas y niveles hace parte de la arquitectura del sistema arquitectura del sistema y es

definida por el arquitecto de la aplicación.

… una situación evidente si conocemos la ingeniera de software…Nuestra tarea en este curso está en familiarizarnos con este tipo de tareas.

Page 19: Aplicaciones Distribuidas

Ambos tipos de distribución distribución se hacen con base en las necesidades técnicastécnicas, de diseñodiseño y/o de negocionegocio

… esas necesidades son las que aprenderemos a identificar en este curso.

Page 20: Aplicaciones Distribuidas

La separación en niveles tiene una serie de consideraciones de tipo técnicotécnico y también económicoeconómico, a las que nos referiremos mas

adelante, por ahora lo concebiremos de forma básica, como separación física de los

componentes.

Sin embargo de las capas, tenemos más que decir…

Page 21: Aplicaciones Distribuidas

“Las capascapas dentro de una arquitectura son un conjunto de servicios especializados que

pueden ser accesibles por múltiples clientes y que deben ser fácilmente reutilizables.”

Page 22: Aplicaciones Distribuidas

Las capas además, según el escenarioescenario y tipo de aplicacióntipo de aplicación, están separadas

físicamentefísicamente.

Si, físicamente! Lo que significa que una capa puede ser a su vez un nivel

Page 23: Aplicaciones Distribuidas

Una capa puede contener muchosmuchos componentes, un mismo componente

puede ubicarse en variasvarias capas de acuerdo a su naturaleza y a las consideraciones explicitas de la

arquitectura

… como? No hay problema, lo iremos entendiendo, de eso se trata…

Page 24: Aplicaciones Distribuidas

… bueno y a todo esto…

Qué es un componentecomponente?

Page 25: Aplicaciones Distribuidas

Veamos una definición formal...

Un componentecomponente es un elementoelemento de software que encapsulaencapsula una serie de funcionalidades.

Un componentecomponente es una unidad unidad independienteindependiente, que puede ser utilizado en

conjunto con otros componentes para formar un sistema más complejosistema más complejo.

Page 26: Aplicaciones Distribuidas

Cada componente de un sistema puede verse como un paquetepaquete o módulomódulo

Page 27: Aplicaciones Distribuidas

Un componente esta compuesto por elementos que pueden ser clasesclases y/o recursos complementarios recursos complementarios como archivos de

configuración, imágenes, entre otros. Y a su vez esas clases y recursos pueden están agrupados dentro del componente en subpaquetes, de acuerdo a su

naturaleza o necesidades de negocio.

Page 28: Aplicaciones Distribuidas

Aplicación

Niveles

Capas

Componentes

En este punto visualizamos varios conceptos que podemos presentar de la siguiente forma…

Paquetes

Clases

Sub paquetes

Otros Recursos

Page 29: Aplicaciones Distribuidas

Hablar de clasesclases en este punto, nos hace recordar que debemos hacer un

recuento nuestros conocimientos sobre programación orientada a objetosprogramación orientada a objetos, ya que la construcción de componentes

esta basada es los mismos principios y/o características con las que cumple este

conocido paradigma

Page 30: Aplicaciones Distribuidas

… la modularidadmodularidad y la reusabilidadreusabilidadQué son?

Recordemos lo más básico…Los principios que dirigen la orientación a objetos son

Page 31: Aplicaciones Distribuidas

En términos simples la modularidadmodularidad significa trabajar por partes…

(de hecho, tal cual como lo plantea el desarrollo por componentes)

Page 32: Aplicaciones Distribuidas

Y la reusabilidadreusabilidad significa

No se invente la rueda!

Lo que ya esta hecho es para usarse y algunas de las cosas que no están hechas, deben

construirse pensando en que alguien necesitará usarlo alguna vez

Page 33: Aplicaciones Distribuidas

Que es una claseclase? Que es un objetoobjeto?

Que es un mensajemensaje?

Que son atributosatributos, característicascaracterísticas o propiedadespropiedades?

Que son métodosmétodos, procedimientosprocedimientos , funcionesfunciones o serviciosservicios?

Que significa que un objeto esta compuesto por una interfazinterfaz, una implementaciónimplementación y un estadoestado?

Veamos, que tanto recordamos…

Page 34: Aplicaciones Distribuidas

Que es abstracciónabstracción, encapsulamientoencapsulamiento, polimorfismopolimorfismo, herenciaherencia?

Después de este repaso avancemos un poco más

Si en este punto se encuentra un poco confundido, recuerde mi consejo, no profundice más hasta no entender claramente los

conceptos mencionados

Page 35: Aplicaciones Distribuidas

Los componentes igual que los objetos deben cumplir con dos características importantes la alta cohesión alta cohesión y el bajo acoplamientobajo acoplamiento

… que tan claros son?….

Page 36: Aplicaciones Distribuidas

Cuando decimos que un componente tiene una alta cohesión alta cohesión hablamos de

que todos los elementos dentrodentro de el están estrechamente relacionados… el criterio de relación debe ser de negocio o técnico y no subjetivo

Page 37: Aplicaciones Distribuidas

Cuando decimos que un componente tiene una bajo acoplamiento bajo acoplamiento hablamos del nivel de independenciaindependencia que tiene un

componente con respecto a otrosotros… esta independencia se refiere al grado en que un componente puede funcionar sin recurrir a otros y se refiere a relaciones de

acoplamiento diferentes a la funcional o arquitectónica…

Page 38: Aplicaciones Distribuidas

Tener estas dos metas en mente durante la construcción de componentes, ahorrará

trabajotrabajo y tiempostiempos de desarrollo a los equipos y proyectos

… si reconocemos el valor de la ingeniería de software, entenderemos lo que esto significa…

Page 39: Aplicaciones Distribuidas

Los componentes desarrollados satisfacen una necesidad asociada a una o varias partes de

una aplicación, y son separados de acuerdo a su uso o a por una agrupación lógica agrupación lógica que

determina la relación entre ellos.

Page 40: Aplicaciones Distribuidas

Ahora bien…

El paradigma básico de la separación por capas establece al menos 3 partes distintas

dentro de una aplicación

La PresentaciónLa PresentaciónLa Lógica de NegocioLa Lógica de Negocio

El Acceso a Datos y los DatosEl Acceso a Datos y los Datos

Page 41: Aplicaciones Distribuidas

Veamos entonces que significan cada una de estas partespartes…

Page 42: Aplicaciones Distribuidas

La Presentación Presentación o interfaz de usuario se refiere al mecanismo de interaccióninteracción del

usuario con el sistema

Los tipos de interfaces de software más comunes son las aplicaciones de ventanasventanas y webweb

Los tipos de interfaces de hardware más comunes son el ratón, el teclado, el micrófono, pantallas

táctiles, dispositivos de audio

Page 43: Aplicaciones Distribuidas

La Lógica de Negocio refiere el conjunto de reglas que determinan específicamente como funciona un sistema, según su naturaleza, y

bajo que parámetros y condiciones de acuerdo a las necesidades de los clientes y

usuarios.

Page 44: Aplicaciones Distribuidas

El acceso a datos acceso a datos refiere al medio a través del cual podemos acceder y manipular los datos

persistentes de un sistema

El almacenamiento de datos almacenamiento de datos refiere a la forma en que se encuentran guardados

dichos datos, por ejemplo, en archivos o bases de datos.

Page 45: Aplicaciones Distribuidas

Después de conocer estos conceptos básicos, podemos pasar entonces a ver, los diferentes tipos

de aplicación

Aplicaciones MonolíticasAplicaciones Cliente/Servidor

Aplicaciones de 3 CapasAplicaciones de N Capas

…veamos unas definiciones básica sobre estas

Page 46: Aplicaciones Distribuidas

Una aplicación monolítica aplicación monolítica o de una capa es aquella cuya interfaz, lógica de negocio y acceso a

datos se encuentran mezclados o altamente acoplados, esto dificulta que pueda hacerse una

separación lógica y física donde alguna de las partes pueda ser reutilizable.

Page 47: Aplicaciones Distribuidas

Una aplicación Cliente/Servidor aplicación Cliente/Servidor o aplicación de dos capas es aquella donde los datos y la lógica de negocio se encuentran separados

de la interfaz, este tipo de aplicación también es denominada, cliente liviano.

Page 48: Aplicaciones Distribuidas

Otro escenario válido para una aplicación aplicación Cliente/ServidorCliente/Servidor, se da separando los datos de la interfaz y la lógica de negocio, este tipo de aplicación también es denominado, cliente

pesado.

Page 49: Aplicaciones Distribuidas

Una aplicación 3 capas aplicación 3 capas es aquella donde la interfaz, la lógica de negocio, el

acceso a datos y los datos se encuentran separados.separados.

Page 50: Aplicaciones Distribuidas

Es muy importante muy importante entender, que la separación de la que se habla no es

necesariamente física, como ya se había dicho antes, la primera separación que

se da es lógica y debemos reiterar que la separación lógica es programáticaprogramática.

Page 51: Aplicaciones Distribuidas

“Es muy tentador para los desarrolladores mezclar una o más capas; por ejemplo implementando

alguna validación u otro proceso de negocios dentro de la capa de presentación en vez de en la capa de

lógica de negocio, ….”

Page 52: Aplicaciones Distribuidas

Sin embargo ubicar la lógica de programación lógica de programación en las capas adecuadas, es más un comportamiento que

debería ser inherente al trabajo como programador, obviamente uno que este interesado en hacer su

trabajo, bien hecho.bien hecho.

Los problemas que conllevan la mala separación de la lógica de programación, no son inmediatos, sus

efectos se verán muy seguramente en el transcurso de la evolución de las aplicaciones.

Page 53: Aplicaciones Distribuidas

Y pues para hacer un trabajo bien hecho, hay que reconocer que las

consideraciones asociadas consideraciones asociadas al desarrollo por capas…

Veamos cada una de ellas y enumeremos algunas consideraciones iniciales…

Page 54: Aplicaciones Distribuidas

Que consideraciones deberíamos tener en cuenta cuando pensamos

en la Capa de PresentaciónCapa de Presentación?

Page 55: Aplicaciones Distribuidas
Page 56: Aplicaciones Distribuidas
Page 57: Aplicaciones Distribuidas

Y las consideraciones de la Capa de Lógica de NegociosCapa de Lógica de Negocios?

Page 58: Aplicaciones Distribuidas

Es mucho más que una cuestión de gusto, hay que pensar en los costos, la productividad, portabilidad e interoperabilidad entre

muchos otros factores…

Solo por mencionar los más populares…

Page 59: Aplicaciones Distribuidas

Y las consideraciones de la Capa de Acceso a DatosCapa de Acceso a Datos?

Page 60: Aplicaciones Distribuidas

Nuevamente solo por mencionar los más usados…

Page 61: Aplicaciones Distribuidas

Bueno y si ya están separadas las 3 capas principales, que es entonces una

de aplicación de N capasaplicación de N capas?

Page 62: Aplicaciones Distribuidas

Pues bien, la evolución de la tecnología y las redes de comunicaciones, hacen que cada

día se generen nuevos escenarios de intercambio de información entre empresasentre empresas,

y entre los mismos sistemas existentes sistemas existentes dentro de las empresas, de forma que se satisfagan las necesidades constantes y cambiantes de clientes y usuarios, para quienes debe resultar transparentetransparente el

obtener información de un sistema u otro.

Page 63: Aplicaciones Distribuidas

Otra de las razones importantes por las que surge este concepto, es debido a que en la evolución del

desarrollo de software, se ha identificado la necesidad de crear nuevas capas, especializadas en nuevas capas, especializadas en

funciones especificasfunciones especificas, diferentes a las 3 identificadas previamente.

Tal es el caso de la seguridad, el control de excepciones, el transporte de datos entre capas, la

generación de trazas de errores, entre otros.

Page 64: Aplicaciones Distribuidas

Este por ejemplo es la propuesta de Microsoft para una aplicación distribuida y que como vemos tiene más de 3 capasmás de 3 capas…

Sin estrés, no hemos pasado de la tierra al cielo, con el tiempo iremos entendiendo que significa todo esto

Page 65: Aplicaciones Distribuidas

Ya que hemos hecho énfasis en el significado del desarrollo o distribución de la lógica de programación y recursos del sistema por

capascapas, continuemos hablando de los componentescomponentes.

Page 66: Aplicaciones Distribuidas

Hay componentescomponentes de diferentes tipos

Ejecutables, Páginas Web, Librerías, Controles, Procedimientos Almacenados, Servicios Web…

… ahora bien…

Page 67: Aplicaciones Distribuidas

Los ejecutablesejecutables refieren programas o aplicaciones de escritorio que corren sobre

un sistema operativo

Page 68: Aplicaciones Distribuidas

Una pagina web pagina web es una fuente de información adaptada para la World Wide Web (WWW), que es

accesible mediante un navegador de Internet y normalmente forma parte de un sitio web.

Wikipedia

Page 69: Aplicaciones Distribuidas

Las libreríaslibrerías refieren bibliotecas o conjunto de clases que contienen lógica de programación

implementada como servicios que pueden ser utilizados desde otras librerías o aplicaciones

Page 70: Aplicaciones Distribuidas

Los controlescontroles refieren librerías de tipo grafico que pueden ser usada en la construcción de interfaces de

usuario.

Page 71: Aplicaciones Distribuidas

Un servicio web servicio web (en inglés Web service) es un conjunto de protocolos y

estándares que sirven para intercambiar datos entre aplicaciones

Wikipedia

Suena complicado verdad?… no hay problema, este tema lo ampliaremos más adelante!

Page 72: Aplicaciones Distribuidas

Lo que debemos saber inicialmente sobre los servicios web servicios web es que actualmente son la forma mas

popular de comunicacióncomunicación entre niveles, que si recordamos, refiere a entornos separados e incluso

de tecnologías diferentes.

Page 73: Aplicaciones Distribuidas

Tratemos de simplificar lo que acabamos de leer…

Generalmente las aplicaciones exponen a los usuarios una interfaz gráfica que permite

interactuar con los datos de un negocio. Los servicios web son un tipo de aplicación que permite

exponer serviciosservicios (métodos, procedimientos) existentes en clases o librerías clases, a través de los cuales se accede a la lógica de negociológica de negocio que ofrece

un sistema, este es el mecanismo más comúnmente utilizado actualmente para compartir información

entre empresas.

Page 74: Aplicaciones Distribuidas

Estos son los conceptos iníciales, entenderlos y apropiarse de su manejo nos garantizará entender su detalle y los temas que vienen

más adelante, pero antes de terminar veamos una aclaración…

Page 75: Aplicaciones Distribuidas

Importante! Importante!

No es lo mismo hablar de una aplicación aplicación distribuida distribuida y un sistema distribuidosistema distribuido

Page 76: Aplicaciones Distribuidas

Un sistema distribuido sistema distribuido se define como:

Una colección de computadores separados físicamentefísicamente y conectados entre sí por una red de comunicaciones distribuida;

cada máquina posee sus componentes de hardware y software que el usuario percibe como un solo sistemaun solo sistema

Wikipedia

Page 77: Aplicaciones Distribuidas

Es el caso del conocido buscador de Google, el cual funciona utilizando una red de computadores

que realizan simultáneamente las búsquedas solicitadas por un usuario, sin que el usuario perciba

siquiera que esto esta sucediendo.

Una razón importante para la existencia de los sistemas distribuidos sistemas distribuidos tiene que ver con la limitación

de recursos del hardwarerecursos del hardware.

Page 78: Aplicaciones Distribuidas

A pesar de actualmente contamos con altos niveles de procesamiento en el hardware disponible, estos

niveles son limitadoslimitados en recursos, es decir en capacidad de procesamiento, memoria, ancho de

banda, entre otros criterios.

Esta situación hace que los arquitectos de softwarearquitectos de software, tengan que implementar estrategias en donde mas

de un servidor atiende las solicitudes de los sistemas que tienen por ejemplo muchos usuarios

accediendo de forma concurrente al mismo sistema.

Page 79: Aplicaciones Distribuidas

Un aplicación distribuida aplicación distribuida puede requerir ser implementada como un sistema distribuido, sistema distribuido, sin

embargo esta condición no es indispensable, puesto que está determinada por necesidades específicas

para tipos de aplicaciones y/o escenarios en los que priman principalmente factores como la

escalabilidad horizontal y el desempeñoescalabilidad horizontal y el desempeño

… estas ultimas refieren calidades sistémicas, temas que veremos más adelante…

Page 80: Aplicaciones Distribuidas

Nos vemos en la próxima!Ciao