Professional Documents
Culture Documents
Andrs Hevia
Captulo 2.
Conceptos
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
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.
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?.
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.
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)
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.