La identificación de los servicios útiles para el negocio es una de las tareas más difíciles en el diseño de una solución basado en SOA. Hace ya algún tiempo, en este mismo blog, trataba el asunto en esta entrada ¿cómo identificar los servicios de negocio en SOA? y en esta otra a vueltas con la identificación de servicios en SOA.
Nunca está demás tener en cuenta alguna técnica o consejo que nos ayude en el análisis de la solución y que nos facilite el «descubrimiento» de los servicios que formarán parte de nuestra aplicación.
Al hilo de esto, hay una interesante reflexión en esta página dónde se discute sobre cuál es la mejor aproximación en el diseño de una solución SOA. Una aproximación Top-Down o descendente u otra del tipo Bottom-Up o ascendente.
Bottom-up o análisis ascendente, lo mejor para empezar aunque con peros
Parece que todo el mundo está de acuerdo que el enfoque ascendente es lo mejor para empezar, ya que se consigue rápidamente un gran número de servicios.
Los que están a favor del enfoque ascendente, defienden que de una manera rápida se pueden ensamblar una gran cantidad de servicios a partir de servicios ya existentes o de la rápida exposición como servicio de lógicas de negocio ya existentes en el backend de la empresa.
Sin embargo, los detractores de este enfoque indican que se corre el riesgo de llegar a una situación que de manera muy gráfica se llama ABOS (a buch of services) o lo que es lo mismo, un montón de servicios sin mucho orden ni concierto.
Además, si se sigue un enfoque ascendente, probablemente se tendrán muchos servicios duplicados y lo que es peor tener una conjunto de servicios (más o menos organizados) que reflejan lo que tienes actualmente, no lo que los clientes necesitan.
Según el artículo, la elección de un enfoque u otro dependen de la relación entre IT y negocio. En esto me temo que queda mucho trecho que recorrer, ya que en el caso de que Negocio haya oído hablar siquiera de SOA, seguro que es para decir que es cosa de técnicos. Este es uno de los mayores problemas que tenemos que sobrellevar para adoptar SOA en la empresa: lograr que SOA no se vea como una cosa de los «frikis» de IT, y para ello ni siquiera ayuda las siglas de SOA.
Ni uno ni otro, la virtud está en el justo medio
Como siempre, la virtud está en el justo medio y la tercera vía es hacer las dos aproximaciones aunque con una matiz:
- Por un lado tenemos que SOA no es un concepto técnico, es un estilo de arquitectura, de diseñar u organizar los servicios de negocio de la empresa.
- Sin embargo el estándar de web services, la forma más común de implementar SOA, sí que es una es una cuestión técnica (y no precisamente trivial).
Por lo tanto, lo mejor es realizar primero un análisis descendente, viendo lo que el cliente necesita y por tanto teniendo en cuenta las necesidades de negocio (perspectiva de negocio).
Por otra parte, desde el punto de vista técnico seguir un enfoque ascendente para partir de lo que se tiene (perspectiva técnica). Por supuesto, con la vista puesta en proporcionar servicios compuestos (de más alto nivel) que respondan a las necesidades del cliente.
14/02/2012 at 23:42
Esto es justo lo que necesito hacer, plantear como realizar el procedimiento de identificar los servicios en aplicaciones a partir de servicios que ya existen. Que pasos debo seguir para hacre esto.
15/02/2012 at 08:25
Lo normal en un organización grande que existan funcionalidades o lógicas de negocio en varios lenguajes: COBOL, .Net, Java, procedimientos almacenados, etc.
Lo primero que hay que ver es si estas lógicas se puede exponer como servicios, es decir, no tengan sesión, la lógica de negocio no esté repartida entre el cliente y el servidor, tengan la granularidad adecuada, etc.
A partir de ahí, la cosa es fácil, todas las lógicas que cumplan estos criterios, se recubren como web services. Para tecnologías antiguas se puede hacer una aplicación (por ejemplo en Java) que recubra la lógica en COBOL, o en PL/SQL.
08/12/2015 at 15:06
Andres buen dias, tienes una entrada donde expliques si una logica de negocio se puede o no exponer como servicio ? te agradezco de antemano…