Você está na página 1de 10

Pensando en SOA

Andrs Hevia

Pensando en SOA Andrs Hevia http://pensandoensoa.com

Captulo 2.

Conceptos

Pensando en SOA Andrs Hevia http://pensandoensoa.com

Introduccin
En este captulo nos familiarizaremos con el concepto de SOA, los servicios y los
procesos de negocio. Tres trminos muy unidos que debemos manejar con soltura para
primero entender de qu va todo esto de SOA y luego para aplicarlo en nuestra
organizacin.

qu es SOA?
Esta es la pregunta del milln. La pregunta que nos hacemos todos cuando vemos
por primera vez la dichosa palabra. Y la vemos mucho, y por todas partes.
SOA es una de esas palabras que est de moda en el mundo de Tecnologas de la
Informacin (si hubiese un Twitter de T.I. sera trending topic quizs superado por cloud
ultimamente). En todos los blogs del sector, libros y conferencias es bastante comn
encontrarnos con ella.
El problema de SOA es que es difcil de explicar al principio. Sin embargo, una vez
que has visto la luz, te parece un concepto bastante natural. Otra cosa por supuesto, es
llevarlo a la prctica, algo que segn el tamao y situacin de nuestra organizacin no va a
ser coser y cantar.
Como ya sabrs, SOA1 son las siglas de Service Oriented Architecture (Arquitectura
Orientada a Servicios), aunque tampoco es que esto nos diga mucho. Y quizs mas que
decirnos algo, lo que har sin duda es confundirnos. Creo que no son unas siglas bien
elegidas, precisamente porque inducen a confusin. Ms adelante explicar por qu digo
esto.
As pues, uno de los primeros problemas que nos encontramos cuando queremos
dar a conocer SOA y extender su adopcin en la empresa, es darle a las personas que no
estn familiarizadas con este concepto una explicacin sencilla y clara de qu es SOA.
Para liar ms el asunto, podemos decir con toda probabilidad que si dos personas
conocen SOA, seguro que tienen una definicin diferente, y tal vez ambas sean acertadas.
Como vemos, uno de los primeros problemas que nos encontramos cuando nos metemos
en este mundillo es ponerse de acuerdo en una definicin sencilla, objetiva y fcil de
entender
Si buscamos en internet nos encontramos normalmente con definiciones demasiado
tcnicas o demasiado tericas para que en un primer momento podamos entender de qu
se est hablando. La bsqueda de una definicin sencilla de SOA ha sido uno de mis
primeros objetivos en el blog por lo que intentaremos ir a lo sencillo, ya tendremos tiempo
de profundizar ms adelante en el libro.
1

http://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicios

Pensando en SOA Andrs Hevia http://pensandoensoa.com

Buscando una definicin sencilla de SOA


En definitiva, para una persona familiarizada con la informtica, el concepto en el
que se basa SOA le sonar mucho. No es algo que se haya inventado en los ltimos aos.
Sin embargo, una cosa es tener una idea intuitiva y otra plasmarla en papel de manera
concreta y ajustada.
El primer intento, en la bsqueda de una definicin sencilla sera el siguiente, quizs
un poco informal, pero es el primer paso:
Forma de disear aplicaciones que consiste en juntar servicios (pequeos
programas) segn tus necesidades. El objetivo no es programar nuevos servicios si
no componer nuevos servicios basndose en otros ms bsicos ya programados.
Aqu vemos uno de los principios fundacionales de SOA, la composicin o la
creacin de nuevos servicios no se hace desde cero, si no a partir de otros servicios ya
existentes.
Que nos promete esta caracterstica de la orientacin a servicios? Pues que una
vez dispongamos de un conjunto de servicios bsicos, de bajo nivel, que implementen la
lgica de negocio de nuestra organizacin, no tendremos que volver a escribir de nuevo
estos programas.
La mejor forma de ver el concepto de composicin es con un ejemplo. Imaginemos
que estamos desarrollando una aplicacin para un banco. Construimos un servicio que nos
permite meter dinero en una cuenta corriente. Para ello habr que implementar un pequeo
programa que haga una actualizacin en varias tablas del modelo de datos. Desarrollamos
otro pequeo programa que nos permite sacar dinero de la cuenta. Igualmente tendremos
que que implementar el acceso a la base de datos para actualizar las tablas.
Bien y que pasa si ahora nos piden hacer una funcionalidad de transferencia de
dinero entre cuentas? es necesario volver a implementar un programa que accede a las
tablas para hacer las actualizaciones necesarias? Pues afortunadamente, con SOA, la
respuesta es no.
Aqu es donde entra la caracterstica de composicin de SOA. Podemos hacer un
nuevo servicio totalmente nuevo, que usa el servicio retirar dinero de una cuenta y el de
meter dinero en la cuenta. Un nuevo servicio de ms alto nivel, de ms valor para la
empresa y para entendernos sin programar. Ya no tendremos que saber, por ejemplo,
cmo se accede a la base de datos.

Pensando en SOA Andrs Hevia http://pensandoensoa.com

Claro que esto es mucho prometer. Nada ms y nada menos que la reutilizacin de
los activos software de la empresa. Algo que se ha perseguido quizs desde el inicio de la
programacin estructurada, all por los aos 70, y que nunca se haba hecho realmente
realidad. Pero creo sinceramente que con SOA, tenemos una oportunidad de llevarlo a la
prctica realmente ya que tenemos los medios para ello, como veremos en ms adelante en
el libro.
Volviendo al tema de la definicin, creo que para el trabajo de evangelizacin
sobre SOA en la empresa necesitamos una definicin un poco ms completa, aunque si es
posible, igual de sencilla.
En este sentido, me ha gustado especialmente la definicin que he encontrado en el
libro SOA Adoption for Dummies (un libro que distribuye Software AG de manera gratuita)
que en un traduccin libre quedara ms o menos as:
SOA es una forma (de arquitectura) de mirar el mundo, y cuando se mira de esta
manera todo es un servicio (el ladrillo con el que construir el edificio de SOA).
Volvemos a la idea de que con SOA el software de la empresa se implementa a
partir de piezas ms pequeas (los ladrillos) con los que se puede montar el edificio de las
aplicaciones de negocio.
Y llegados a este punto, si has llegado a leer hasta aqu, creo ya va siendo hora de
mostrar lo que yo que creo que es una definicin ms acertada (y sencilla) de SOA. Sera la
siguiente:
SOA es una forma de ver y disear el software de una empresa. Est basada en
la definicin de pequeos programas de utilidad para el negocio (servicio) que se
pueden combinar fcilmente para construir nuevos servicios con ms funcionalidad
ofreciendo a la compaa una gran flexibilidad, una reduccin del time to market y
una reduccin de costes.

Un nombre mal elegido

Pensando en SOA Andrs Hevia http://pensandoensoa.com

Una vez vista una definicin, que espero os sirva, de lo que es SOA, hay una cosa
que hay que tener muy clara en primer lugar. Me refiero a que no debemos ver SOA como
algo referente a una tecnologa. Tampoco es un Middleware, ni es una herramienta que se
pueda comprar en una caja. Lejos de esto, SOA es una forma de pensar, una nueva
forma de disear software.
Si se quiere decir con ms parafernalia, SOA es un nuevo paradigma de diseo
de aplicaciones software, a la altura (o incluso ms) de lo que signific en su da el paso a
la programacin estructurada o la orientacin a objetos.
Si nos preguntamos quin tiene que tirar por la implantacin de SOA en la empresa
podramos pensar, como ocurre muchas veces en la prctica, que debe ser el rea de las
Tecnologas de la informacin en el que debe hacerlo. Sin embargo, esto no es as. Dado
que no es algo relativo a la tecnologa, SOA debe venir impulsado, en primer lugar, por el
rea de Negocio.
Deben ser ellos los primeros interesados en disponer de servicios software que
tengan sentido desde su punto de vista precisamente, que tengan sentido para el negocio y
que den soporte a los productos y servicios que la empresa ofrece a sus clientes y socios.
Que aporten funcionalidad de negocio que puedan incorporar a sus procesos, y que de una
manera sencilla, puedan ofrecer a sus clientes nuevos servicios (de ms valor aadido) a
partir de otros de ms bajo nivel existentes en la empresa (composicin de servicios).
Sin embargo, todos sabemos que en la prctica como deca anteriormente SOA
viene impulsado por el departamento de IT de la organizacin. Desde IT se confa en SOA
para que haga realidad el viejo sueo de la reutilizacin del software, de la flexibilidad en la
construccin de nuevas soluciones y el acortamiento de los ciclos de desarrollo.
SOA no es una cuestin tecnolgica
Creo que en la actualidad, en la gran mayora de los casos, las IT han dejado atrs
el clich histrico de vivir de espaldas al negocio, en su propio frikismo tecnolgico y ya
esta orientada claramente al negocio y al cliente. Aunque pueda parecer un slogan
artificioso tenemos asumido desde las reas tcnolgicas aquello de somos esclavos del
negocio o damos servicios al negocio. A fin de cuentas, el rea de negocio es el que paga
el sueldo al rea de T.I..
Por supuesto, todava est instalada en muchas cabezas la correspondencia entre
IT y mquinas, discos duros, consolas, etc. etc. Por supuesto, todos estos elementos son
imprescindibles para que funcione el software, pero tambin es cierto que al rea de
negocio no les interesa los problemas con la falta de memoria en los servidores o si las
CPU estn al 100%. Simplemente quieren que los servicios de negocio que reciben estn
siempre disponibles (que cumplan el acuerdo de nivel de servicio) para que ellos puedan
atender a sus clientes de la mejor manera posible.
Debemos entonces, quitarnos el halo de tecnolgico o de infraestructura. En T.I. a
fin de cuentas se trabaja con informacin y no con tecnologa. De ah que hay quien
propone incluso cambiar el trmino TI (Tecnologas de la informacin) por servicios de
informacin.
Y la reflexin que me hago entonces, es: por que se llama SOA a SOA?. Si lo tiene
que impulsar el negocio y verlo como algo propio, que sentido tienen las palabras
arquitectura orientada a servicios?. Arquitectura tiene un tufillo demasiado tcnico y no
es fcilmente entendible para personas que no estn en el mundillo. como se explica a
alguien que no es informtico que es la Arquitectura de Software?.

Pensando en SOA Andrs Hevia http://pensandoensoa.com

Despus est aquello, poco afortunado a mi entender, de orientado. orientado a


qu? parece un quiero y no puedo. Quiero ser esto y no llego, entonces en lugar de ser
algo, como slo soy un poquito entonces digamos que esto orientado. Al menos en
espaol, este es el sentido que entiendo del uso de esta palabra.
Luego est lo de servicios. Normalmente en las presentaciones esto nos lleva a
explicar lo que es un servicio. Que si los principios de Gartner que debe cumplir (lo veremos
ms adelante en el libro), que si debe ser reutilizable, puede ser compuesto, distribuible,
etc. etc. ms y ms trminos tcnicos dficil de entender para los no iniciados en la
tecnologa, y menos para los responsables del rea de negocio.
Como conclusin a todo esto, y despus de varios aos ya intentando popularizar el
trmino SOA dentro de la organizacin,
modestamente propondra el cambio de nombre de este paradigma que est
llamado a revolucionar la situacin de las IT y de las aplicaciones software (y espero que
as sea). que tal algo como lo siguiente?:
SOA: Diseo dirigido por negocio.
En ingls quedara muy efectista:
SOA: Business Driven Design (BDD)
Creo que recoge mucho mejor lo que representa SOA, una forma de disear
software que responda a las necesidades de negocio y no simplemente una arquitectura
tcnica basada en servicios (un concepto difcil de explicar y ms an de entender). Y es
que qu demonios es un servicio?

qu es un servicio?
Bien, llegados a este punto espero que el concepto de SOA haya quedado ms o
menos claro. Cuento, por supuesto, que si es la primera vez que te encuentras con l,
todava tengas muchas dudas, esto es muy normal.
Hasta que no aplicamos este concepto en el da a da, no podemos hacernos una
verdadera idea. Es necesario enfrentarse a muchas situaciones para ver realmente las
muchas caras que tiene un concepto aparentemente sencillo. Uno de los objetivos de este
libro es plasmar esto precisamente con un enfoque prctico.
Es este el momento por lo tanto de continuar ahondando un poco ms y nos
pongamos en serio con otra gran pregunta qu es un servicio?
Empecemos por una definicin sencilla, incluso simplona, no es mucho pero por
algo hay que empezar:
Servicio: pequeo programa que hace algo til, con unos parmetros de
entrada/salida conocidos, que puede ser juntado con otros servicios para crear otro
ms complejo.

Pensando en SOA Andrs Hevia http://pensandoensoa.com

Ahora vamos a ir poco desgranando el concepto de servicio. Al final, tendremos un


definicin formal, exhaustiva y fcil de entender (al menos eso espero).
Lo primero que debemos tener en cuenta es que un servicio es un programa. Un
pequea aplicacin software que hace algo, y algo til. Este es un concepto muy sencillo
pero muy importante.
Cuando me refiero a algo til, me refiero ni ms ni menos, a algo til para el negocio.
Esta es la primera caracterstica de un servicio. Debe de ofrecer algo para el negocio,
debe hacer algo que tenga relevancia para la empresa.
Un servicio que sea algo as como validar usuario o poner traza seguramente no
ser realmente un servicio. Sin embargo, dar de alta usuario o reservar vuelo s tienen
sentido y valor para el negocio y sern buenos candidatos a ser servicios.
Si alguna tienes duda de si estis tratando con un servicio con verdadero valor para
el negocio pensad en qu dira del mismo el usuario o el cliente mismo de la aplicacin.
Preguntaros a vosotros mismos: qu dira si le presentamos un servicio que sea poner
traza? Seguramente no sabr ni siquiera de qu estamos hablando. Haced la prueba ahora
con tarificar seguro de hogar. Seguro que ahora s asiente y entiende perfectamente qu
es y para que vale este servicio. Normal, es el vocabulario y los conceptos con los que
trabaja todos los das.

qu es un proceso de negocio?
Todos sabemos que en la situacin actual, el entorno en el que se mueve el negocio
es enormemente cambiante. Hay ms competencia en un mundo globalizado, cambios
normativos y legales, y por supuesto, en los ltimos aos una crisis econmica galopante.
Para poder sobrevivir y mejorar, la empresa tiene la necesidad imperiosa de acelerar
el desarrollo de aplicaciones de negocio para llegar al mercado lo antes posible y competir
en mejores condiciones (time to market).
Por otra parte la actividad de la empresa se desarrolla en torno a procesos de
negocio, que son ni ms ni menos que un conjunto de tareas relacionadas llevadas a cabo
para lograr un resultado: desde comprar un libro por Internet, darse de alta en la compaa
elctrica o conceder una hipoteca.
En muchas organizaciones, sobre todo las pequeas, estos procesos son manuales
o si acaso, una combinacin de tareas manuales con algunas tareas soportadas por una
aplicacin informtica.
La metodologa que se ocupa de la gestin de estos procesos de la empresa
mediante su automatizacin, es decir, la eliminacin de las tareas manuales y la
informatizacin de los mismos es BPM (Business Process Management).
Un proceso de negocio es una serie de tareas relacionadas para lograr un
resultado de negocio definido. Es decir, podemos entender un proceso como una
flujo de tareas relacionadas, con bifurcaciones que provocan varios caminos
posibles para su terminacin. Estas tareas pueden ser de dos tipos: automticas
(ejecutadas por el sistema) y manuales o humanas (ejecutadas por personas)

Pensando en SOA Andrs Hevia http://pensandoensoa.com

Las tareas automticas son realizadas por el sistema y no necesitan de intervencin


humana alguna (por algo son automticas). Normalmente estas tareas pueden durar desde
unos cuantos milisegundos a unos cuantos segundos pero no suelen tener una duracin
muy larga.
Cuando interviene una persona para realizar una tarea (el segundo tipo)
normalmente las esperas se incrementan multiplicando por varios rdenes. No es raro que
una tarea humana pueda tardar horas, das o incluso meses o aos en ser resuelta.
Ponindonos en el extremo, imaginemos por ejemplo el proceso de gestin de un
expediente en una accidente de circulacin. Puede que el proceso no se pueda terminar
hasta que finalice el juicio y esto puede representar aos.
Esto hace necesariamente que el proceso se transforme en asncrono y se pare, en
un estado "suspendido", esperando a que se complete la tarea humana.

Proceso de negocio de comprar viaje

En la imagen anterior, vemos un proceso de negocio sencillo pero que sirve


perfectamente como ejemplo para todo lo dicho sobre los procesos.
En este proceso, el cliente solicita una oferta para realizar un viaje. El sistema
ejecuta tres tareas para reservar avin, hotel y coche. Una vez que se tengan todos los
detalles del viaje (incluido el precio) se notifica al cliente. En este caso, se pasa a una tarea
humana Aceptar viaje. El proceso se suspende en este punto hasta que el cliente apruebe
o rechace la oferta. Si decide aceptarla entonces se cobra el viaje y despus se notifica al
cliente.
Evidentemente un proceso de negocio se puede complicar casi hasta el infinito. No
tenemos ms que imaginarnos como puede ser el proceso de, por ejemplo, conceder una
hipoteca o gestionar un siniestro.
Ms adelante volveremos al concepto de proceso y repasaremos en detalle sus
caractersticas. Por el momento, me interesa resaltar que cada una de las cajas que
vemos en el diagrama, que representan las tareas que se tienen que ejecutar en un orden
determinado para ejecutar el proceso, son en realidad servicios.

Pensando en SOA Andrs Hevia http://pensandoensoa.com

Por ejemplo reservar hotel puede ser un servicio que se ejecuta dentro de nuestra
propia empresa, o tambin, puede ser realmente una invocacin a un servicio que nos
proporciona un socio. Como veremos, esta caracterstica de no saber realmente dnde se
ejecuta un servicio es una de sus grandes ventajas.
As pues, los servicios nos permiten construir el proceso. No se entiende por lo tanto
una orientacin a procesos en la empresa sin una orientacin a servicios.

Resumen del captulo


En este captulo hemos visto tres conceptos clave para entender SOA, y en
consecuencia todo este libro:
En primer lugar, qu es el propio concepto de SOA, una forma de disear software
para las necesidades de negocio que nos permite reutilizar el software de la empresa
combinndolo (composicin) para crear nuevas funcionalidades de ms alto valor aadido.
Este software se construye en forma de pequeos programas reutilizables que son
los servicios
Por ltimo, el concepto de proceso de negocio, que implementa la funcionalidad de
negocio de la empresa. No se puede entender el proceso sin servicios, y tambin en un
gran porcentaje de los casos, los servicios sin procesos se quedan cojos.