Sei sulla pagina 1di 22

Cmo lograr una

implementacin exitosa de
SOA?
Huibert Aalbers
Certified Sr. Software IT Architect

www.huibert-aalbers.com

IT Insight podcast

Este podcast pertenece a la serie IT Insight

Me pueden enviar comentarios acerca del podcast o


preguntas a mi correo personal,
huibert_aalbers@mac.com

Pueden suscribirse al podcast a travs de iTunes.


El material adicional (presentacin en formato PDF,
white papers y otros) se obtienen directamente del
sitio http://www.huibert-aalbers.com en la seccin de
IT Insight

www.huibert-aalbers.com

Tres fases para lograr una


implementacin exitosa de SOA

Tanto para aquellos que parten desde cero, como para


los que ya han tienen experiencia trabajando con
servicios, una implementacin exitosa de SOA se logra
dividiendo el proyecto en tres fases que se ejecutan
de manera consecutiva

Planeacin
Enterprise Application Integration
Business Process Management

www.huibert-aalbers.com

Primera Fase - Planeacin

Antes de poder empezar a crear servicios y


conectarlos es necesario contestar las siguientes
preguntas

Qu es un servicio?

Cmo administrar los servicios?

Qu servicios se requieren?
Qu servicios se deben desarrollar?
Cmo crear nuevos servicios?
Qu protocolo de comunicaciones usar para invocar los
servicios?

Cmo estandarizar los mensajes que van a intercambiar los


servicios?

www.huibert-aalbers.com

Qu es un servicio?

Un servicio representa una funcin de negocios claramente


definida que puede ser invocada remotamente mediante
protocolos de comunicacin estndar

La funcin SRQT(x) no es un servicio


La funcin LogErr(Se ha producido un error) tampoco es un
servicio

Un servicio se define mediante un interfaz explcito (WSDL) que es


totalmente independiente de la implementacin del servicio

www.huibert-aalbers.com

Qu servicios se requieren?

La respuesta a esta pregunta no la debe dar el rea de


sistemas, la mejor manera de detectar servicios es
pidiendo a los usuarios de negocio que modelen sus
procesos

www.huibert-aalbers.com

Qu servicios se deben desarrollar?

Para cada servicio detectado es necesario determinar


si debe ser desarrollado desde cero o si es posible
exponer la funcionalidad que ya provee un sistema
legado como un servicio

Para sistemas legados hay distintas alternativas para exponer


la funcionalidad que proveen como servicio web

Colas de mensajes
Adaptadores
Acceso directo a la base de datos del sistema, etc.

www.huibert-aalbers.com

Cmo crear nuevos servicios?

Para servicios nuevos es posible utilizar virtualmente


cualquier lenguaje de programacin

Sin embargo, muchos se pueden descartar por ser obsoletos,


complejos, propietarios, etc.

Desde mi punto de vista es recomendable Java para


desarrollar servicios que ofrezcan alta disponibilidad

Los servicios son programas, por lo tanto se deben


desarrollar en base a metodologas aceptadas

Una de las grandes ventajas de los servicios web es


que permiten realizar fcilmente pruebas unitarias,
tanto funcionales como de volumen

www.huibert-aalbers.com

Qu protocolo de comunicaciones usar?

Un sistema altamente distribuido, debe lograr


funcionar a pesar de las fallas que pueden sufrir
algunos componentes (loosely-coupled architecture)

Esto se logra utilizando colas de mensajes para conectar de


manera asncrona los distintos componentes

Sin embargo, en algunos casos, por ejemplo consultas, puede


no ser viable usar una comunicacin asncrona y HTTP
puede ser entonces una alternativa

Hay que recordar que es muy fcil exponer un componente


Java (por ejemplo un EJB o un Java Bean) como un servicio
que puede ser invocado por varios protocolos de transporte

www.huibert-aalbers.com

Cmo administrar los servicios?

Si se dispone de pocos servicios, es posible que los


desarrolladores sean quienes conserven los archivos
WSDL

Si se cuenta con decenas de servicios, es necesario


contar con un repositorio centralizado (UDDI) en el
que se publican todos los servicios existentes

Si la empresa tiene cientos o miles de servicios es


necesario un directorio avanzado que permita saber

Quin es responsable de cada servicio (QoS)?


Quin es responsable del desarrollo de cada servicio?
Quin es responsable de la calidad de los datos?
Qu procesos se ven afectados si no funciona el servicio?

www.huibert-aalbers.com

Normalizacin sintctica

Cuando se trabaja con decenas de sistemas, es normal


que no todos manejen el mismo vocabulario. Para
algunos, un mismo objeto, por ejemplo Cliente se
puede representar de manera distinta

Es importante que durante el modelado de los


procesos se intente normalizar la estructura de los
objetos de negocios, para simplificar la integracin de
sistemas y reducir la necesidad de realizar
transformaciones en las que se pueden perder datos,
al interconectar diversos sistemas

www.huibert-aalbers.com

Segunda Fase - Enterprise Application


Integration (EAI)

En esta fase se conectan los servicios a travs de un


Enterprise Service Bus (ESB) para lo que es necesario
considerar

Ruteo y transformacin de mensajes


Seguridad
Monitoreo
Calidad del servicio

www.huibert-aalbers.com

Ruteo y transformacin de mensajes

Esta funcin es realizada por el Bus de Servicios


Empresariales (ESB), el es en realidad una
infraestructua de comunicaciones seguras que permite
conectar los servicios con los que cuenta la
organizacin

El ESB se crea utilizando colas de mensajes y brokers


que transforman y rutean mensajes en base a su
contenido utilizando estndares como XSLT y XPath

www.huibert-aalbers.com

Seguridad

La seguridad es muy importante en el contexto de los


web services

Es posible encriptar los mensajes o el canal de


comunicaciones

Es ms sencillo encriptar el canal de comunicaciones


Encriptar el mensaje, o parte del mensaje utilizando WSSecurity otorga mucha ms flexibilidad a los desarrolladores

La seguridad debe estar centralizada

Directorio LDAP

La seguridad puede llegar a impactar seriamente al


rendimiento de la aplicacin

www.huibert-aalbers.com

Monitoreo

Una arquitectura SOA es tan slida como su eslabn


ms dbil

Una de las principales misiones del arquitecto es


planear desde el diseo de la arquitectura cmo se
van a monitorear todos los aspectos de la misma para
garantizar una operacin tranquila y sin sobresaltos

www.huibert-aalbers.com

Calidad de servicio

Adems de poder determinar posibles problemas es


necesario hacer todo lo posible para evitar que se
produzcan

La mejor estrategia es que cada componente est en alta


disponibilidad

Portal
Orquestador de procesos
Servidores de aplicaciones (en los que corren los servicios)
Bases de datos
Colas de mensajes, brokers, etc.

La calidad de servicio tambin se refiere a tiempos de


respuesta

www.huibert-aalbers.com

Tercera Fase - Business Process


Management (BPM)

Tras la implementacin del ESB

Separacin de la capa de presentacin de la lgica de


procesos

Desarrollo de aplicaciones basadas de procesos


Monitoreo de procesos

www.huibert-aalbers.com

Separacin de la capa de presentacin


de la lgica de negocios

En un esquema de EAI, las aplicaciones comunican


entre si pero cada una mantiene su propio interfaz de
usuario

Al pasar a la siguiente fase, se eliminan los clientes de


cada aplicacin y se consolidan en un portal

De esta manera la capa de presentacin se consolida en el


portal, las funciones de negocio en los servidores de
aplicaciones y los procesos en el orquestador de procesos.
Esto simplifica el desarrollo y permite lograr mayores niveles
de especializacin

www.huibert-aalbers.com

Desarrollo de aplicaciones basadas en


procesos

Tras una correcta planeacin y una segunda fase en la


que se desarrollan o exponen servicios, se vuelve
posible desarrollar nuevas aplicaciones conectando
simplemente los distintos servicios como parte de un
proceso de negocios

Realizar cambios a los procesos se vuelve trivial,


porque no hay que modificar cdigo

www.huibert-aalbers.com

Monitoreo de procesos

Al ejecutar procesos, es posible monitorearlos para


analizarlos y poder encontrar posibilidades de mejora
en los mismos

Con este modelo la direccin puede saber en tiempo


real la situacin del negocio

www.huibert-aalbers.com

Conclusin

La implementacin de SOA es un proceso de larga


duracin que no se logra de un da para otro

Al disear una arquitectura altamente distribuida es


necesario tomar en cuenta muchos factores

Seguridad
Rendimiento
Monitoreo
Gobernabilidad

A pesar de que la operacin de un sistema diseado


bajo la visin de SOA es compleja, las ventajas que
aporta esta nueva arquitectura superan ampliamente
los inconvenientes de la misma

www.huibert-aalbers.com

Gracias

Para mayor informacin, contcteme directamente


huibert_aalbers@mac.com

Potrebbero piacerti anche