cómo lograr una implementación exitosa de soa.pdf

22
¿Cómo lograr una implementación exitosa de SOA? Huibert Aalbers Certified Sr. Software IT Architect

Upload: fabitocaicedo

Post on 15-Dec-2015

11 views

Category:

Documents


1 download

TRANSCRIPT

¿Cómo lograr una implementación exitosa de

SOA?Huibert Aalbers

Certified Sr. Software IT Architect

ww

w.h

uibe

rt-a

albe

rs.c

omIT Insight podcast

• Este podcast pertenece a la serie IT Insight

• Pueden suscribirse al podcast a través de iTunes.

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

• Me pueden enviar comentarios acerca del podcast o preguntas a mi correo personal, [email protected]

ww

w.h

uibe

rt-a

albe

rs.c

omTres fases para lograr una implementación exitosa de SOA

• Tanto para aquellos que parten desde cero, como para los que ya han tienen experiencia trabajando con servicios, una implementación exitosa de SOA se logra dividiendo el proyecto en tres fases que se ejecutan de manera consecutiva

• Planeación

• Enterprise Application Integration

• Business Process Management

ww

w.h

uibe

rt-a

albe

rs.c

omPrimera Fase - Planeación

• Antes de poder empezar a crear servicios y conectarlos es necesario contestar las siguientes preguntas

• ¿Qué es un servicio?

• ¿Qué servicios se requieren?

• ¿Qué servicios se deben desarrollar?

• ¿Cómo crear nuevos servicios?

• ¿Qué protocolo de comunicaciones usar para invocar los servicios?

• ¿Cómo administrar los servicios?

• ¿Cómo estandarizar los mensajes que van a intercambiar los servicios?

ww

w.h

uibe

rt-a

albe

rs.c

om¿Qué es un servicio?

✦ Un servicio representa una función de negocios claramente definida que puede ser invocada remotamente mediante protocolos de comunicación estándar

✦ La función SRQT(x) no es un servicio

✦ La función LogErr(“Se ha producido un error”) tampoco es un servicio

✦ Un servicio se define mediante un interfaz explícito (WSDL) que es totalmente independiente de la implementación del servicio

ww

w.h

uibe

rt-a

albe

rs.c

om¿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

ww

w.h

uibe

rt-a

albe

rs.c

om¿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.

ww

w.h

uibe

rt-a

albe

rs.c

om¿Cómo crear nuevos servicios?

• Para servicios nuevos es posible utilizar virtualmente cualquier lenguaje de programación

• 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 metodologías aceptadas

• Una de las grandes ventajas de los servicios web es que permiten realizar fácilmente pruebas unitarias, tanto funcionales como de volumen

ww

w.h

uibe

rt-a

albe

rs.c

om¿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 asíncrona los distintos componentes

• Sin embargo, en algunos casos, por ejemplo consultas, puede no ser viable usar una comunicación asíncrona y HTTP puede ser entonces una alternativa

• Hay que recordar que es muy fácil exponer un componente Java (por ejemplo un EJB o un Java Bean) como un servicio que puede ser invocado por varios protocolos de transporte

ww

w.h

uibe

rt-a

albe

rs.c

om¿Cómo 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

• ¿Quién es responsable de cada servicio (QoS)?

• ¿Quién es responsable del desarrollo de cada servicio?

• ¿Quién es responsable de la calidad de los datos?

• ¿Qué procesos se ven afectados si no funciona el servicio?

ww

w.h

uibe

rt-a

albe

rs.c

omNormalización sintáctica

• 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 integración de sistemas y reducir la necesidad de realizar transformaciones en las que se pueden perder datos, al interconectar diversos sistemas

ww

w.h

uibe

rt-a

albe

rs.c

omSegunda Fase - Enterprise Application Integration (EAI)

• En esta fase se conectan los servicios a través de un Enterprise Service Bus (ESB) para lo que es necesario considerar

• Ruteo y transformación de mensajes

• Seguridad

• Monitoreo

• Calidad del servicio

ww

w.h

uibe

rt-a

albe

rs.c

omRuteo y transformación de mensajes

• Esta función 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 organización

• El ESB se crea utilizando colas de mensajes y brokers que transforman y rutean mensajes en base a su contenido utilizando estándares como XSLT y XPath

ww

w.h

uibe

rt-a

albe

rs.c

omSeguridad

• La seguridad es muy importante en el contexto de los web services

• Es posible encriptar los mensajes o el canal de comunicaciones

• Es más sencillo encriptar el canal de comunicaciones

• Encriptar el mensaje, o parte del mensaje utilizando WS-Security otorga mucha más flexibilidad a los desarrolladores

• La seguridad debe estar centralizada

• Directorio LDAP

• La seguridad puede llegar a impactar seriamente al rendimiento de la aplicación

ww

w.h

uibe

rt-a

albe

rs.c

omMonitoreo

• Una arquitectura SOA es tan sólida como su eslabón más débil

• Una de las principales misiones del arquitecto es planear desde el diseño de la arquitectura cómo se van a monitorear todos los aspectos de la misma para garantizar una operación tranquila y sin sobresaltos

ww

w.h

uibe

rt-a

albe

rs.c

omCalidad de servicio

• Además 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 también se refiere a tiempos de respuesta

ww

w.h

uibe

rt-a

albe

rs.c

omTercera Fase - Business Process Management (BPM)

• Tras la implementación del ESB

• Separación de la capa de presentación de la lógica de procesos

• Desarrollo de aplicaciones basadas de procesos

• Monitoreo de procesos

ww

w.h

uibe

rt-a

albe

rs.c

omSeparación de la capa de presentación de la lógica 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 aplicación y se consolidan en un portal

• De esta manera la capa de presentación 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 especialización

ww

w.h

uibe

rt-a

albe

rs.c

omDesarrollo de aplicaciones basadas en procesos

• Tras una correcta planeación 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 código

ww

w.h

uibe

rt-a

albe

rs.c

omMonitoreo de procesos

• Al ejecutar procesos, es posible monitorearlos para analizarlos y poder encontrar posibilidades de mejora en los mismos

• Con este modelo la dirección puede saber en tiempo real la situación del negocio

ww

w.h

uibe

rt-a

albe

rs.c

omConclusión

• La implementación de SOA es un proceso de larga duración que no se logra de un día para otro

• Al diseñar una arquitectura altamente distribuida es necesario tomar en cuenta muchos factores

• Seguridad

• Rendimiento

• Monitoreo

• Gobernabilidad

• A pesar de que la operación de un sistema diseñado bajo la visión de SOA es compleja, las ventajas que aporta esta nueva arquitectura superan ampliamente los inconvenientes de la misma

ww

w.h

uibe

rt-a

albe

rs.c

omGracias

Para mayor información, contácteme [email protected]