Google

martes, agosto 29, 2006

Artículo Tecnológico: "El IDE ha muerto, viva el ISE"

IDE son las siglas de Integrated Development Environment, es decir entorno de desarrollo integrado. Estamos hartos de oir esta palabra, y de asociarla a la típica herramienta de desarrollo como el famoso Websphere Studio Application Developer. Pero, ¿Estas herramientas son capaces de soportar el desarrollo de aplicaciones SOA? Rotundamente no.

Para que una herramienta sea capaz de soportar el desarrollo de aplicaciones SOA, es necesario que cumpla con una serie de características principales:

  1. Ofrecer la posibilidad de desarrollar código en un lenguaje determinado.
  2. Ofrecer todas las capacidades necesarias para construir servicios.
  3. Ofrecer la capacidad necesaria para diseñar procesos de negocio.

Actualmente los IDE sólo ofrecen la primera característica y un sucedaneo de la segunda. Por esta razón, las grandes empresas que ofrecen herramientas, han tomado la decisión de evolucionar las herramientas de desarrollo que ofrecen, y crear así los ISE (Integrated Service Environment). Un ISE no es más que un IDE, pero con las funcionalidades necesarias para permitir diseñar y desarrollar servicios (sobre todo servicios web) y procesos de negocio. Por lo tanto, si estás pensando desarrollar una aplicación SOA, te recomiendo que sigas leyendo este artículo.

En este artículo no se pretende indicar cual es la mejor herramienta, si no proporcionar un rango de herramientas disponibles para que así podais seleccionar la que mejor se adapte a vuestras necesidades. La primera toma de decisión será si deseamos una herramienta de pago o bien una herramienta de software libre.

En cuanto a software libre, la herramienta por excelencia es Eclipse. Como muchos sabreis esta herramienta permite el desarrollo de aplicaciones Java, con lo cual para que soporte servicios es necesario añadir algún plug-in. En este sentido hay dos posibilidades:

  • Utilizar un plug-in de pago. El más utilizado es MyEclipse IDE.
  • Utilizar un plug-in libre. Se puede utilizar las web tools de eclipse group, pero son menos potentes que las anteriores.

La otra posibilidad al software libre son las herramientas de pago. las tres herramientas de pago más utilizadas son las siguientes:

WebSphere Studio Application Developer Integration Edition: Es la herramienta de IBM y como su nombre indica es una evolución del famoso WebSphere Studio Application Developer. Es muy importante reseñar aquí que IBM ha decidido cambiar el nombre a su herramienta de desarrollo, y por tanto el WSADIE se llama ahora Rational Application Developer for WebSphere Software o RAD. Esta herramienta tiene las siguientes características:

  • Editores visuales basados en Eclipse.
  • Soporte para el diseño y desarrollo de servicios web (Compatible con WS-I).
  • Diseñador de WorkFlows compatible con WS-BPEL.
  • Posee un depurador de procesos.

La característica de esta herramienta es que todas sus funcionalidades están integradas en el mismo entorno, lo que es bastante útil al no tener que instalar otras aplicaciones extra.

WebLogic Integration: Herramienta de desarrollo de Bea. Sus características son:

  • Editores visuales propios.
  • Soporte para servicios web.
  • Diseñador de workFlow propietario aunque en breve será compatible con WS-BPEL.

Esta herramienta también es muy utilizada. Posee la misma característica que RAD, es decir, tiene absolutamente todo integrado en la misma herramienta. Para mí el gran defecto de esta herramienta es que abusa del uso de asistentes, haciendo que la persona que utiliza la herramienta a veces no se entere de lo que está haciendo.

Oracle SOA Tools: Conjunto de herramientas para el desarrollo SOA de Oracle. Posee las siguientes características:

  • Editores visuales (incluidos en la herramienta JDeveloper).
  • Soporte para el diseño y desarrollo de servicios web (incluido en la herramienta JDveloper), además posee compatibilidad WS-I.
  • Herramienta para diseñar WorkFlows compatible con WS-BPEL.
  • Posee un potente monitor de procesos de negocio.

El inconveniente de Oracle SOA Tools es que todas las funcionalidades no están incluidas en una sola herramienta, si no que son un conjunto de herramientas. Eso sí, Oracle SOA Tools es la más potente.

Como conclusión a este artículo, indicar que si estáis probando herramientas, no desestimeis las de pago, porque tanto IBM como Bea como Oracle ofrecen versiones de prueba completas en su web (en la sección "Enlaces de Herramientas" teneis los links para descargarlas). Aprovechaos porque es muy interesante probarlas todas y construid vuestras aplicaciones SOA.

martes, agosto 22, 2006

Aviso Importante

Hola a todos. Quiero informaros que a partir de ahora, los artículos del blog serán de tres tipos:
  • Artículos metodológicos: Son aquellos referentes a metodología de desarrollo de aplicaciones SOA. Los artículos recogerán las diferentes fases y entregables de una aplicación SOA mediante un ejemplo.
  • Artículos tecnológicos: Son los artículos que tratarán sobre todas las tecnologías existentes alrededor de los Servicios Web. Se hará todo mediante casos prácticos, y se implementará el ejemplo utilizado en los artículos metodológicos.
  • Referencias a otra documentación: Son artículos donde se comentará y proporcionará documentación extra para que la podais consultar.

Saludos

viernes, agosto 18, 2006

Modelado de servicios

Después de todos los artículos del blog, una cosa ha quedado clara: "una aplicación SOA está formada por un conjunto de servicios interconectados cuyo objetivo es automatizar uno o varios procesos de negocio".

Por tanto, a la hora de construir una aplicación SOA, el elemento sobre el que debemos enfocar nuestros esfuerzos es el concepto de servicio. En este punto surgen una serie de preguntas:
  • ¿Cómo puedo saber cuántos servicios se deben crear?
  • ¿Qué tipos de servicios existen?

La primera pregunta es demasiado compleja para contestarla en un solo artículo. Por tanto, me centraré en la última.

¿Qué tipos de servicios existen?. Esta pregunta se la hace todo desarrollador a la hora de enfrentarse a una aplicación SOA. Existen varias clasificaciones dependiendo de su autor. A mí me gusta la más simple, porque a la vez me parece la más práctica para tener una visión general de una aplicación SOA.

Existen básicamente tres tipos de servicios, dividos en base a sus funcionalidades:

  • Servicios controladores: Son los encargados de recibir las peticiones de los clientes y realizar las llamadas necesarias a otros servicios (en la secuencia adecuada) para devolver una respuesta. Es decir, son los servicios encargados de coordinar al resto de servicios. Si analizamos bien este tipo de servicios, nos daremos cuenta de que representan a los procesos de negocio que queremos implementar, ya que un proceso de negocio no es más que un conjunto de tareas ejecutadas en una determinada secuencia para obtener un objetivo.
  • Servicios de negocio: Son los servicios que representan una tarea de negocio, y que forman parte de un proceso de negocio. Este tipo de servicios suelen ser poco reutilizables porque están orientados a resolver una tarea muy puntual.
  • Servicios de utilidad: Son aquellos servicios que se caracterizan por representar una tarea altamente reutilizable. Existen dos tipos, los servicios orientados al negocio que representan una tarea de negocio altamente reutilizable entre aplicaciones y los servicios tecnológicos encargados de encapsular una determinada tecnología y por tanto altamente reutilizables (ej: servicio de acceso a bases de datos relacionales).

con lo cual, una aplicación SOA la podemos dividir en tres capas. La capa de recepción de peticiones (servicios controladores), la capa de tareas (servicios de negocio) la capa de lógica reutilizables (servicios de utilidad).