Sei sulla pagina 1di 6

Evolucin de tecnologa hacia SOA

En los orgenes de Internet, las primeras computadoras en implementar


sus protocolos fueron aquellas de la universidad de Berkeley. Pronto se hizo
necesario crear un medio sencillo y eficaz para escribir programas capaces de
intercomunicarse entre s. Esta necesidad dio origen a la primera especificacin
e implementacin de socket.

Un Socket permite que computadoras distintas puedan intercambiar cualquier


flujo de datos, de manera fiable y ordenada. Para que dos programas puedan
comunicarse entre s es necesario que se cumplan ciertos requisitos:

* Que un programa sea capaz de localizar al otro.

* Que ambos programas sean capaces de intercambiarse cualquier


secuencia de octetos, es decir, datos relevantes a su finalidad.

Para ello son necesarios los tres recursos que originan el concepto de socket:

* Un protocolo de comunicaciones, que permite el intercambio de


octetos.

* Una direccin del Protocolo de Red (Direccin IP, si se utiliza el


Protocolo TCP/IP), que identifica una computadora.

* Un nmero de puerto, que identifica a un programa dentro de una


computadora.

Los sockets permiten implementar una arquitectura cliente-servidor. La


comunicacin ha de ser iniciada por uno de los programas que se denomina
programa cliente. El segundo programa espera a que otro inicie la
comunicacin, por este motivo se denomina programa servidor.

La arquitectura cliente-servidor se divide en dos partes, la parte del


servidor y la parte de un conjunto de clientes. Normalmente el servidor es una
mquina bastante potente que acta de depsito de datos y funciona como un
sistema gestor de base de datos (SGBD).

Ambas partes deben estar conectadas entre s mediante una red. Una
representacin grfica de este tipo de arquitectura sera la siguiente.
A parte de estos existen ms aplicaciones software para el correcto
funcionamiento de esta arquitectura pero ya estn condicionados por el tipo de
sistema operativo instalado, el tipo de red en la que se encuentra, etc.

Una de las primeras soluciones a esta problemtica fueron los sockets,


que precisamente tienen la capacidad de comunicar dos procesos, ya sea
mediante datagramas o flujos de datos (streams). Sin embargo, los sockets
requieren que las aplicaciones implanten sus propios protocolos para codificar
y decodificar los mensajes que intercambian, lo que introduce una
problemtica diferente a la naturaleza del problema a resolver y aumenta la
posibilidad de errores durante la ejecucin.

La evolucin del SOA continua con una forma de procesar la informacin


utilizando distintas maquinas llamado computacin distribuida. Es una red de
computadores donde los recursos informticos son compartidos con todas las
otras computadoras en el sistema. La potencia de procesamiento, la memoria y
el almacenamiento de datos, son recursos de la comunidad donde los usuarios
autorizados pueden entrar y realizar ciertas tareas. Una red distribuida puede
ser tan simple como una coleccin de equipos similares funcionando con el
mismo sistema operativo, o tan complejo como una red interconectada a
sistemas, formada por cualquier plataforma informtica que te puedas
imaginar.

Con esta tecnologa, diferentes computadoras dentro de una red


comparten uno o ms recursos. En uno de estos sistemas considerado ideal,
todos los recursos son compartidos, convirtiendo una red de computadoras en
un potente supercomputador. Con el interfaz adecuado, acceder a uno de
estos sistemas no es muy diferente de que acceder a los recursos de una
mquina local. Toda computadora autorizada tendr acceso a una potencia de
procesamiento enorme, y una gran capacidad de almacenamiento.

Estos sistemas trabajan con el principio de los recursos combinados. Se


comparte toda la carga a travs de mltiples computadoras para completar
tareas de forma ms eficiente y rpida. Los sistemas de computacin
distribuida enlazan los recursos de red todos juntos, de una forma tal, que
permite a una sola computadora heredar la potencia del resto de
computadoras en el sistema.
Dentro del mbito del cmputo distribuido se incorpora fuertemente la
tecnologa orientada a objetos, debido a que en el paradigma basado en
objetos el estado de un programa ya se encuentra distribuido de manera lgica
en diferentes objetos, lo que hace a la distribucin fsica de estos objetos en
diferentes procesos o computadoras una extensin natural.

El middleware es un software de conectividad que ofrece un conjunto de


servicios que hacen posible el funcionamiento de aplicaciones distribuidas
sobre plataformas heterogneas. Funciona como una capa de abstraccin de
software distribuida, que se sita entre las capas de aplicaciones y las capas
inferiores (sistema operativo y red). El middleware nos abstrae de la
complejidad y heterogeneidad de las redes de comunicaciones subyacentes,
as como de los sistemas operativos y lenguajes de programacin,
proporcionando una API para la fcil programacin y manejo de aplicaciones
distribuidas. Dependiendo del problema a resolver y de las funciones
necesarias, sern tiles diferentes tipo de servicios de middleware.

Algunos ejemplos que utilizan la tecnologa middleware son: RPC, RMI,


CORBA y Monitor de transacciones.

La primera alternativa que surgi al empleo de los sockets (y que se


implementa en base a ellos), son las llamadas a procedimientos remotos (RPC)
donde la comunicacin entre los elementos que componen el sistema
distribuido, se realiza mediante la invocacin de funciones que se encuentran
en espacios de direcciones diferentes.

El RPC (del ingls Remote Procedure Call, Llamada a Procedimiento


Remoto) es un protocolo que permite a un programa de computadora ejecutar
cdigo en otra mquina remota sin tener que preocuparse por las
comunicaciones entre ambos. El protocolo es un gran avance sobre los sockets
usados hasta el momento. De esta manera el programador no tena que estar
pendiente de las comunicaciones, estando stas encapsuladas dentro de las
RPC.

Las RPC son muy utilizadas dentro del paradigma cliente-servidor. Siendo
el cliente el que inicia el proceso solicitando al servidor que ejecute cierto
procedimiento o funcin y enviando ste de vuelta el resultado de dicha
operacin al cliente.

Como es de esperar, en los lenguajes cuyo paradigma de programacin


no es el procedimental, sino el orientado a objetos, se requiere ya no invocar
procedimientos remotos, sino a mtodos de objetos remotos.

La invocacin remota de mtodos de Java es un modelo de objetos


distribuidos, diseado especficamente para el lenguaje Java, por lo que
mantiene la semntica del modelo de objetos locales de Java, facilitando de
esta manera la implantacin y el uso de objetos distribuidos. En el modelo de
objetos distribuidos de Java, un objeto remoto es aquel cuyos mtodos pueden
ser invocados por objetos que se encuentran en una mquina virtual (MV)
diferente. Los objetos de este tipo se describen por una o ms interfaces
remotas que contienen la definicin de los mtodos del objeto que es posible
invocar remotamente.

La invocacin remota de un mtodo (RMI) es la accin de invocar un


mtodo de una interfaz remota de un objeto remoto. La invocacin de un
mtodo de un objeto remoto tiene exactamente la misma sintaxis de
invocacin que la de un objeto local.

Un estndar que establece una plataforma de desarrollo de sistemas


distribuidos facilitando la invocacin de mtodos remotos bajo un paradigma
orientado a objetos es CORBA (Common Object Request Broker Architecture,
arquitectura comn de intermediarios en peticiones a objetos).

En un sentido general, CORBA "envuelve" el cdigo escrito en otro


lenguaje, en un paquete que contiene informacin adicional sobre las
capacidades del cdigo que contiene y sobre cmo llamar a sus mtodos. Los
objetos que resultan, pueden entonces ser invocados desde otro programa (u
objeto CORBA) desde la red. En este sentido CORBA se puede considerar como
un formato de documentacin legible por la mquina, similar a un archivo de
cabeceras, pero con ms informacin.

CORBA utiliza un lenguaje de definicin de interfaces (IDL) para


especificar las interfaces con los servicios que los objetos ofrecern. CORBA
puede especificar a partir de este IDL, la interfaz a un lenguaje determinado,
describiendo cmo los tipos de dato CORBA deben ser utilizados en las
implementaciones del cliente y del servidor. Implementaciones estndar
existen para Ada, C, C++, Smalltalk, Java y Python. Hay tambin
implementaciones para Perl y TCL.

CORBA es ms que una especificacin multiplataforma, tambin define


servicios habitualmente necesarios como seguridad y transacciones. Y as este
no es un sistema operativo en si, en realidad es un middleware.

Un monitor de transacciones es un conjunto de uno o ms componentes


(no necesariamente en el sentido de componentes de objetos) que brindan el
soporte para el diseo, desarrollo, configuracin y operacin de confiables
aplicaciones de transacciones distribuidas. Esto significa que de alguna manera
se debe garantizar las propiedades ACID para las aplicaciones, y tambin
incluye la puesta en marcha de los procesos servidores, la canalizacin de los
mensajes de solicitud/respuesta y algn tipo de supervisin y equilibrio de
cargas.
Un monitor de transacciones puede ser concebido como una estructura
pre-construida que ayuda desarrollar y administrar una aplicacin
cliente/servidor, y su principal funcin es garantizar las propiedades ACID,
mientras que al mismo tiempo debe colaborar para mantener un alto
rendimiento.

En trminos generales, podemos decir que SOA es una arquitectura para


computacin distribuida que trata al software como servicios disponibles a
travs de la red. SOA no es completamente nuevo, CORBA es un ejemplo de
orientacin a servicios. Algunos aspectos de la arquitectura orientada a
servicios se han utilizado durante bastante tiempo. Por ejemplo, las empresas
utilizan la tecnologa de intercambio de mensajes durante dcadas para
integrar aplicaciones.

SOA es una arquitectura de sistemas distribuidos caracterizada por las


siguientes propiedades:

Visin lgica: El servicio es una visin abstracta y lgica de los


programas, base de datos, procesos de negocio, entre otros, definido en
trminos de lo que hace, normalmente ejecutando una operacin de
negocio.

Orientacin al mensaje: el servicio es formalmente definido en


trminos de los mensajes intercambiados entre los proveedores y los
consumidores. La estructura interna y la implementacin son ajenas a
propsito. Usando SOA, un usuario no puede y no necesitara saber los
detalles de implementacin de un servicio.

Orientacin a la descripcin: Un servicio es descrito por meta-datos


procesables por maquinas. Solo los detalles expuestos al pblico que son
importantes para utilizar el servicio deben ser descritos. La semntica
del servicio debe ser documentada, directa o indirectamente, por su
descripcin.

Granularidad: los servicios tienden a utilizar un numero reducido de


operaciones con un a complejidad relativamente grande en las
operaciones llevadas a cabo.

Orientacin a la red: se pueden utilizar los servicios a travs de una


red, pero no es obligatorio.

Neutralidad de la plataforma: los mensajes se envan en un formato


normalizado independiente de la plataforma a travs de las interfaces.
XML es el formato mas obvio que atiende a es a restriccin.