Arquitectura Orientada A Servicios SOA
Arquitectura Orientada A Servicios SOA
Arquitectura Orientada A Servicios SOA
de cliente (en ingls Service Oriented Architecture), es un concepto de arquitectura de software que
define la utilizacin de servicios para dar soporte a los requisitos del negocio.
Permite la creacin de sistemas de informacin altamente escalables que reflejan el negocio de la
organizacin, a su vez brinda una forma bien definida de exposicin e invocacin de servicios
(comnmente pero no exclusivamente servicios web), lo cual facilita la interaccin entre diferentes
sistemas propios o de terceros.
SOA define las siguientes capas de software:
Aplicaciones bsicas - Sistemas desarrollados bajo cualquier arquitectura o tecnologa,
geogrficamente dispersos y bajo cualquier figura de propiedad;
De exposicin de funcionalidades - Donde las funcionalidades de la capa aplicativa son
expuestas en forma de servicios (generalmente como servicios web);
De integracin de servicios - Facilitan el intercambio de datos entre elementos de la capa
aplicativa orientada a procesos empresariales internos o en colaboracin;
De composicin de procesos - Que define el proceso en trminos del negocio y sus necesidades,
y que vara en funcin del negocio;
De entrega - donde los servicios son desplegados a los usuarios finales.
SOA proporciona una metodologa y un marco de trabajo para documentar las capacidades de negocio y
puede dar soporte a las actividades de integracin y consolidacin.
Terminologa
Trmino
Definicin / Comentario
Servicio
Una funcin sin estado, auto-contenida, que acepta una(s) llamada(s) y devuelve una(s)
respuesta(s) mediante una interfaz bien definida. Los servicios pueden tambin ejecutar
unidades discretas de trabajo como seran editar y procesar una transaccin. Los
servicios no dependen del estado de otras funciones o procesos. La tecnologa concreta
utilizada para prestar el servicio no es parte de esta definicin. Existen servicios
asncronos en los que una solicitud a un servicio crea, por ejemplo, un archivo, y en una
segunda solicitud se obtiene ese archivo
Orquestacin Secuenciar los servicios y proveer la lgica adicional para procesar datos. No incluye la
presentacin de los datos. Coordinacin.
Sin estado
Proveedor
Consumidor La funcin que consume el resultado del servicio provisto por un proveedor
[editar] Diseo y desarrollo de SOA
La metodologa de modelado y diseo para aplicaciones SOA se conoce como anlisis y diseo orientado
a servicios. La arquitectura orientada a servicios es tanto un marco de trabajo para el desarrollo de
software como un marco de trabajo de implementacin. Para que un proyecto SOA tenga xito los
desarrolladores de software deben orientarse ellos mismos a esta mentalidad de crear servicios comunes
que son orquestados por clientes o middleware para implementar los procesos de negocio. El desarrollo
de sistemas usando SOA requiere un compromiso con este modelo en trminos de planificacin,
herramientas e infraestructura.
Cuando la mayora de la gente habla de una arquitectura orientada a servicios estn hablando de un juego
de servicios residentes en Internet o en una intranet, usando servicios web. Existen diversos estndares
relacionados a los servicios web. Incluyen los siguientes:
XML
HTTP
SOAP
WSDL
UDDI
Hay que considerar, sin embargo, que un sistema SOA no necesariamente necesita utilizar estos
estndares para ser "Orientado a Servicios" pero es altamente recomendable su uso.
En un ambiente SOA, los nodos de la red hacen disponibles sus recursos a otros participantes en la red
como servicios independientes a los que tienen acceso de un modo estandarizado. La mayora de las
definiciones de SOA identifican la utilizacin de Servicios Web (empleando SOAP y WSDL) en su
implementacin, no obstante se puede implementar SOA utilizando cualquier tecnologa basada en
servicios.
Lenguajes de alto nivel
Los lenguajes de alto nivel como BPEL o WS-Coordination llevan el concepto de servicio un paso
adelante al proporcionar mtodos de definicin y soporte para flujos de trabajo y procesos de negocio.
Diferencias con otras arquitecturas
Al contrario de las arquitecturas orientado a objetos, las SOAs estn formadas por servicios de aplicacin
dbilmente acoplados y altamente interoperables. Para comunicarse entre s, estos servicios se basan en
una definicin formal independiente de la plataforma subyacente y del lenguaje de programacin (p.ej.,
WSDL). La definicin de la interfaz encapsula (oculta) las particularidades de una implementacin, lo
que la hace independiente del fabricante, del lenguaje de programacin o de la tecnologa de desarrollo
(como Plataforma Java o Microsoft .NET). Con esta arquitectura, se pretende que los componentes de
software desarrollados sean muy reutilizables, ya que la interfaz se define siguiendo un estndar; as, un
servicio C# podra ser usado por una aplicacin Java. En este sentido, ciertos autores definen SOA como
una Sper-Abstraccin[cita requerida].
Beneficios
Los beneficios que puede obtener una organizacin que adopte SOA son:
Mejora en los tiempos de realizacin de cambios en procesos.
Facilidad para evolucionar a modelos de negocios basados en tercerizacin.
Facilidad para abordar modelos de negocios basados en colaboracin con otros entes (socios,
proveedores).
Poder para reemplazar elementos de la capa aplicativa SOA sin disrupcin en el proceso de
negocio
Facilidad para la integracin de tecnologas dismiles
------------------------------------------------------------------------------Que es Intalio BPM
Primero que todo, intalio es un software Open Source basado en Java-J2EE, que implementa BPMS, y
esta basado en un conjunto de frameworks y arquitecturas muy conocidas en la industria del software y
con un madurez aceptable. Intalio utiliza la notacin para disear procesos de negoci0 establecida por el
BPMN http://www.bpmn.org/ que puede adaptarse a los requisitos de las arquitectura orientada servicio
(SOA).
Bsicamente, Intalio proporciona un esquema de adopcin sencillo, con bajos costos de propiedad, un
soporte bastante amplio de estndares de la industria, un base de comunidades y desarrolladores que
contribuyen continuamente con mejoras, correccin y deteccin de bugs, adems cuenta con grandes
facilidades para agregar nuevas caractersticas (extensibilidad).
Componentes:
1. Una herramienta para el diseo de los procesos de negocio, basada en Eclipse(ambientes grafico
para el desarrollo java).
2. Un engine que ejecuta los artefactos de software generados por el diseador de procesos.
3. Un Servidor de Aplicaciones donde residirn los servicios de procesos de negocio que
despleguemos.
Modelo de Negocio
El modelo de negocio de Intalio, esta basado en una licencia dual. IntalioBPMS se distribuye en 3
ediciones: La edicin abierta de IntalioBPMS, bajo una licencia pblica de Mozilla (MPL) , una edicin
para la comunidad de IntalioBPMS, y la edicin de IntalioBPMS Enteprise.
1. La edicin abierta incluye aproximadamente el 95% del cdigo usado para la edicin
comunitaria y la de empresa. La edicin abierta esta desplegada sobre el servidor de Apache
Geronimo J2EE, y la base de datos de MySQL.
2. La edicin comunitaria se distribuye con el servidor de IBM WebSphere, junto con MySQL.
3. La edicin empresarial puede desplegarse en otros servidores y bases de datos, su mayor
caractersticas es el manejo transaccional.
La implementacin de BPM 2.0- BPMS se distribuye alrededor del ide(ambientes de desarrollo
integrado) Open Source Eclipse, y esta basado en un conjunto de plugins. Esto nos permite contar con un
diseador sobre un ambiente extensible de utilitarios y componentes desarrollados por terceros. Por
ejemplo intalio utiliza un rule engine llamado Corticon, Celequest PKI, y orbeon para XForms.
Intalio tiene una participacin activa en los siguientes proyectos:
1. Apache Geronimo.
2. Base de datos de MySQL.
3. Orbeon para XForms.
4. Corticon para Reglas de Negocio.
5. etc.
Computacin en nube
La computacin en la nube o informtica en la nube o nube de conceptos, del ingls Cloud
computing, es un paradigma que permite ofrecer servicios de computacin a travs de Internet.
Introduccin
En este tipo de computacin todo lo que puede ofrecer un sistema informtico se ofrece como servicio,1
de modo que los usuarios puedan acceder a los servicios disponibles "en la nube de Internet" 2 sin
conocimientos (o, al menos sin ser expertos) en la gestin de los recursos que usan.3 Segn el IEEE
Computer Society, es un paradigma en el que la informacin se almacena de manera permanente en
servidores de Internet y se enva a cachs temporales de cliente, lo que incluye equipos de escritorio,
centros de ocio, porttiles, etc. Esto se debe a que, pese a que las capacidades de los PC han mejorado
sustancialmente, gran parte de su potencia se desaprovecha, al ser mquinas de propsito general. [cita
requerida]
"Cloud computing" es un nuevo modelo de prestacin de servicios de negocio y tecnologa, que permite
al usuario acceder a un catlogo de servicios estandarizados y responder a las necesidades de su negocio,
de forma flexible y adaptativa, en caso de demandas no previsibles o de picos de trabajo, pagando
nicamente por el consumo efectuado.
El cambio paradigmtico que ofrece computacin en nube es que permite aumentar el nmero de
servicios basados en la red. Esto genera beneficios tanto para los proveedores, que pueden ofrecer, de
forma ms rpida y eficiente, un mayor nmero de servicios, como para los usuarios que tienen la
posibilidad de acceder a ellos, disfrutando de la transparencia e inmediatez del sistema y de un modelo
de pago por consumo.
Computacin en nube consigue aportar estas ventajas, apoyndose sobre una infraestructura tecnolgica
dinmica que se caracteriza, entre otros factores, por un alto grado de automatizacin, una rpida
movilizacin de los recursos, una elevada capacidad de adaptacin para atender a una demanda variable,
as como virtualizacin avanzada y un precio flexible en funcin del consumo realizado evitando adems
el uso fraudulento del software y la piratera.
La computacin en nube es un concepto que incorpora el software como servicio, como en la Web 2.0 y
otros conceptos recientes, tambin conocidos como tendencias tecnolgicas, que tienen en comn el que
confan en Internet para satisfacer las necesidades de cmputo de los usuarios.
Comienzos
El concepto de la computacin en la nube empez en proveedores de servicio de Internet a gran escala,
como Google, Amazon AWS y otros que construyeron su propia infraestructura. De entre todos ellos
emergi una arquitectura: un sistema de recursos distribuidos horizontalmente, introducidos como
servicios virtuales de TI escalados masivamente y manejados como recursos configurados y
mancomunados de manera continua. Este modelo de arquitectura fue inmortalizado por George Gilder en
su artculo de octubre 2006 en la revista Wired titulado Las fbricas de informacin. Las granjas de
servidores, sobre las que escribi Gilder, eran similares en su arquitectura al procesamiento grid (red,
parrilla), pero mientras que las redes se utilizan para aplicaciones de procesamiento tcnico dbilmente
acoplados (loosely coupled, un sistema compuesto de subsistemas con cierta autonoma de accin, que
mantienen una interrelacin continua entre ellos), este nuevo modelo de nube se estaba aplicando a los
servicios de Internet.4
Beneficios
Integracin probada de servicios Red. Por su naturaleza, la tecnologa de "Cloud Computing" se
puede integrar con mucha mayor facilidad y rapidez con el resto de sus aplicaciones
empresariales (tanto software tradicional como Cloud Computing basado en infraestructuras), ya
sean desarrolladas de manera interna o externa. 5
Prestacin de servicios a nivel mundial. Las infraestructuras de "Cloud Computing"
proporcionan mayor capacidad de adaptacin, recuperacin de desastres completa y reduccin al
mnimo de los tiempos de inactividad.
Una infraestructura 100% de "Cloud Computing" no necesita instalar ningn tipo de hardware.
La belleza de la tecnologa de "Cloud Computing" es su simplicidad y el hecho de que
requiera mucha menor inversin para empezar a trabajar.
Implementacin ms rpida y con menos riesgos. Podr empezar a trabajar muy rpidamente
gracias a una infraestructura de "Cloud Computing". No tendr que volver a esperar meses o
aos e invertir grandes cantidades de dinero antes de que un usuario inicie sesin en su nueva
solucin. Sus aplicaciones en tecnologa de "Cloud Computing" estarn disponibles en cuestin
de semanas o meses, incluso con un nivel considerable de personalizacin o integracin.
Actualizaciones automticas que no afectan negativamente a los recursos de TI. Si actualizamos
a la ltima versin de la aplicacin, nos veremos obligados a dedicar tiempo y recursos (que no
tenemos) a volver a crear nuestras personalizaciones e integraciones. La tecnologa de "Cloud
Computing" no le obliga a decidir entre actualizar y conservar su trabajo, porque esas
personalizaciones e integraciones se conservan automticamente durante la actualizacin.
Contribuye al uso eficiente de la energa. En este caso, a la energa requerida para el
funcionamiento de la infraestructura. En los datacenters tradicionales, los servidores consumen
mucha ms energa de la requerida realmente. En cambio, en las nubes, la energa consumida es
slo la necesaria, reduciendo notablemente el desperdicio.
Desventajas
La centralizacin de las aplicaciones y el almacenamiento de los datos origina una
interdependencia de los proveedores de servicios.
La disponibilidad de las aplicaciones estn desatadas a la disponibilidad de acceso a internet.
Los datos "sensibles" del negocio no residen en las instalaciones de las empresas por lo que
podra generar un contexto de alta vulnerabilidad para la sustraccin o robo de informacin.
La confiabilidad de los servicios depende de la "salud" tecnolgica y financiera de los
proveedores de servicios en nube. Empresas emergentes o alianzas entre empresas podran crear
un ambiente propicio para el monopolio y el crecimiento exagerado en los servicios.
La disponibilidad de servicios altamente especializados podra tardar meses o incluso aos para
que sean factibles de ser desplegados en la red.
La madurez funcional de las aplicaciones hace que continuamente estn modificando sus
interfaces por lo cual la curva de aprendizaje en empresas de orientacin no tecnolgica tenga
unas pendientes pequeas.
Seguridad. La informacin de la empresa debe recorrer diferentes nodos para llegar a su destino,
cada uno de ellos ( y sus canales) son un foco de inseguridad. Si se utilizan protocolos seguros,
HTTPS por ejemplo, la velocidad total disminuye debido a la sobrecarga que requieren estos
protocolos.
Escalabilidad a largo plazo. A medida que ms usuarios empiecen a compartir la infraestructura
de la nube, la sobrecarga en los servidores de los proveedores aumentar, si la empresa no posee
un esquema de crecimiento ptimo puede llevar a degradaciones en el servicio o jitter altos.
Capas
Software como servicio
El software como servicio (en ingls software as a service, SaaS) se encuentra en la capa ms alta y
caracteriza una aplicacin completa ofrecida como un servicio, en-demanda, va multitenencia que
significa una sola instancia del software que corre en la infraestructura del proveedor y sirve a mltiples
organizaciones de clientes. El ejemplo de SaaS conocido ms ampliamente es Salesforce.com, pero ahora
ya hay muchos ms, incluyendo las Google Apps que ofrecen servicios bsicos de negocio como el email. Por supuesto, la aplicacin multitenencia de Salesforce.com ha constituido el mejor ejemplo de
cmputo en nube durante unos cuantos aos. Por otro lado, como muchos otros jugadores en el negocio
del cmputo en nube, Salesforce.com ahora opera en ms de una capa de la nube con su Force.com, que
ya est en servicio, y que consiste en un ambiente de desarrollo de una aplicacin compaera
(companion application), o plataforma como un servicio. Otro ejemplo es la plataforma MS Office
como servicio SaaS con su denominacin de Office 360 y que incluye la mayora de las aplicaciones de
esta Suite ofimtica de Microsoft. 6
Plataforma como servicio
La capa del medio, que es la plataforma como servicio (en ingls platform as a service, PaaS), es la
encapsulacin de una abstracin de un ambiente de desarrollo y el empaquetamiento de una carga de
servicios. La carga arquetipo es una imagen Xen (parte de Servicios Web Amazon) conteniendo una pila
bsica Red (por ejemplo, un distro Linux, un servidor Red, y un ambiente de programacin como Perl o
Ruby). Las ofertas de PaaS pueden dar servicio a todas las fases del ciclo de desarrollo y pruebas del
software, o pueden estar especializadas en cualquier rea en particular, tal como la administracin del
contenido.
Los ejemplos comerciales incluyen Google App Engine, que sirve aplicaciones de la infraestructura
Google. Servicios PaaS tales como stos permiten gran flexibilidad, pero puede ser restringida por las
capacidades que estn disponibles a travs del proveedor.
Microsoft apuesta por Windows Azure. Plataforma de desarrollo en la nube que permite crear y ejecutar
aplicaciones codificadas en varios lenguajes y tecnologas, como .NET, Java y PHP.
Infraestructura como servicio
La infraestructura como servicio (infrastructure as a service, IaaS) se encuentra en la capa inferior y es
un medio de entregar almacenamiento bsico y capacidades de cmputo como servicios estandarizados en
la red. Servidores, sistemas de almacenamiento, conexiones, enrutadores, y otros sistemas se concentran
(por ejemplo a travs de la tecnologa de virtualizacin) para manejar tipos especficos de cargas de
trabajo desde procesamiento en lotes (batch) hasta aumento de servidor/almacenamiento durante las
cargas pico. El ejemplo comercial mejor conocido es Amazon Web Services, cuyos servicios EC2 y S3
ofrecen cmputo y servicios de almacenamiento esenciales (respectivamente). Otro ejemplo es Joyent
cuyo producto principal es una lnea de servidores virtualizados, que proveen una infraestructura endemanda altamente escalable para manejar sitios Web, incluyendo aplicaciones Web complejas escritas
en Ruby en Rails, PHP, Python, y Java.
Tipos de nubes
Las nubes pblicas se manejan por terceras partes, y los trabajos de muchos clientes diferentes
pueden estar mezclados en los servidores, los sistemas de almacenamiento y otras
infraestructuras de la nube. Los usuarios finales no conocen qu trabajos de otros clientes pueden
estar corriendo en el mismo servidor, red, discos como los suyos propios. 7
Las nubes privadas son una buena opcin para las compaas que necesitan alta proteccin de
datos y ediciones a nivel de servicio. Las nubes privadas estn en una infraestructura endemanda manejada por un solo cliente que controla qu aplicaciones debe correr y dnde. Son
propietarios del servidor, red, y disco y pueden decidir qu usuarios estn autorizados a utilizar
la infraestructura.
Las nubes hbridas combinan los modelos de nubes pblicas y privadas. Usted es propietario de
unas partes y comparte otras, aunque de una manera controlada. Las nubes hbridas ofrecen la
promesa del escalado aprovisionada externamente, en-demanda, pero aaden la complejidad de
determinar cmo distribuir las aplicaciones a travs de estos ambientes diferentes. Las empresas
pueden sentir cierta atraccin por la promesa de una nube hbrida, pero esta opcin, al menos
inicialmente, estar probablemente reservada a aplicaciones simples sin condicionantes, que no
requieran de ninguna sincronizacin o necesiten bases de datos complejas.
Comparaciones
La computacin en nube usualmente es confundida con la computacin en grid (red) (una forma de
computacin distribuida por la que "un sper computador virtual" est compuesto de un conjunto
cluster enlazado de ordenadores dbilmente acoplados, actuando en concierto para realizar tareas muy
grandes).8
Controversia
Dado que la computacin en nube no permite a los usuarios poseer fsicamente los dispositivos de
almacenamiento de sus datos (con la excepcin de la posibilidad de copiar los datos a un dispositivo de
almacenamiento externo, como una unidad flash USB o un disco duro), deja la responsabilidad del
almacenamiento de datos y su control en manos del proveedor.
La computacin en nube ha sido criticada por limitar la libertad de los usuarios y hacerlos dependientes
del proveedor de servicios.9 Algunos crticos afirman que slo es posible usar las aplicaciones y servicios
que el proveedor est dispuesto a ofrecer. As, el London Times compara la computacin en nube con los
sistemas centralizados de los aos 50 y 60, en los que los usuarios se conectaban a travs de terminales
"gregarios" con ordenadores centrales. Generalmente, los usuarios no tenan libertad para instalar nuevas
aplicaciones, y necesitaban la aprobacin de administradores para desempear determinadas tareas. En
suma, se limitaba tanto la libertad como la creatividad. El Times argumenta que la computacin en nube
es un retorno a esa poca y numerosos expertos respaldan la teora. 10
De forma similar, Richard Stallman, fundador de la Free Software Foundation, cree que la computacin
en nube pone en peligro las libertades de los usuarios, porque stos dejan su privacidad y datos personales
en manos de terceros. Ha afirmado que la computacin en nube es "simplemente una trampa destinada a
obligar a ms gente a adquirir sistemas propietarios, bloqueados, que les costarn ms y ms conforme
pase el tiempo."11