Durante estos años he estado trabajando con la suite de SOA de uno de los mayores fabricantes de software a nivel mundial… digamos que los productos son de los más caros del mercado, sin embargo la productividad deja mucho que desear.
El desarrollo de servicios es complicado y costoso, en tiempo y esfuerzo, aunque por supuesto no es sólo culpa de una herramienta en concreto. Pero es curioso que una de estos suites, hace tiempo vendidos como lo más de lo más en cuanto a IDEs de desarrollo no logren acortar los tiempos del desarrollo, más bien al contrario.
El primer problema que nos encontramos es que estas herramientas son muy especializadas y bastante complejas. Llegar a conocer sus tripas y sobre todo sus worksarounds o ñapas lleva bastante tiempo. Como consecuencia vemos que los expertos escasean bastante.
El segundo problema es que estas herramientas de alto nivel, ocultan el código que generan por debajo. En principio esto está muy bien, pero en la práctica puede resultar en que nadie sabe muy bien qué es lo que hace cuando le das a salvar y generar el desplegable…. es como una especie de magia que genera una caja negra, muy negra, en la que no se puede atisbar muchas veces qué es lo que tiene dentro, y mucho menos llegar a modificar lo que ha generado si nos encontramos un problema.
El tercer problema que veo es la falta de herramientas de pruebas de verdad. Algunas de estas suites ni siquiera permiten hacer pruebas unitarias. Para testear la funcionaliad más pequeña hace falta «levantar» todo el entorno de desarrollo y hace falta un maquinón para hacerlo.
En muchas ocasiones he estado tentado en dejar esta herramienta de lado y hacer el desarrollo directamente en lenguaje Java… puede parecer una barbaridad pero te vas dando cuenta que el 90% de las cosas que hay que hacer son siempre las mismas y son bastante sencillas. Me refiero claro al clásico mantenimiento de entidad (alta, baja, consulta y modificación) propia de un desarrollo empresarial normal.
Debido a todo esto, hay algunos proyectos en los que no se quiere hacer con SOA porque se tarda mucho o es muy complejo. Por supuesto, no se entra en el fondo de si SOA es apropiado o merece la pena para la empresa. Esta resistencia a abordar el proyecto SOA se debe en muchas ocasiones a la falta de productividad de las propias herramientas.
Así pues, en definitiva, piensa bien con que tipo de IDEs o herramientas de desarrollo vas a utilizar para tu proyecto. Puede que el éxito o el fracaso dependa de ello.
13/09/2015 at 21:43
Hola, bueno desde mi punto de vista para encaminar un proyecto SOA, no es estrictamente obligatorio que se tenga de trabajar con algún vendor, es más una de sus principales recomendaciones es que sea independiente de los vendor (osea que uno no se amarrar a estos: IBM, ORACLE, etc). Ahora si es requerimiento fundamental usarlos caballero.
Sobre la SOASuite 11g ó 12c, son buenas pero como tu dices ocultan información ya que la gran parte de su construcción es vía drag-and-drop con relación a sus nodos. Por otro lado, si bien la curva de aprendizaje es alta una vez que uno le agarra el truco los desarrollos no los veo lentos, lo que si se deben especificar y formalizar una serie de estándares a nivel de nombres y manejo de sus adapters (WS, JCA, EJB, etc). Ya que estas herramientas autogeneran todo y cuando no se tiene definido todo esto los estándares de nombres generados son horribles.
Hay que tener claro que uno puede iniciar un proyecto SOA de la misma maneja (usando un vendor o no), desde el análisis SOA y su descomposición de procesos para llegar al inventario formalmente. Un vez con ello para los desarrollos ya se puede optar siguiendo equivalencias:
– Implementación de Servicios (Topdown): con vendor (BPEL), sin vendor (JAVA u otro).
– Service BUS: con vendor (OSB), sin vendor (algúno opensource MULE).
Entre otras equivalencias…
Finalmente, para las pruebas SOASuite maneja un tester propio desde sus consolas web u osb, que permiten testear y hacer el seguimiento de la traza de error. Así mismo, pueden testear mejor aun con herramientas externas como SOAPUI.