Skip to main content
WSO2 Data Services Server

Crea tus servicios de datos sin una línea de código con WSO2 Data Services Server

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (Ninguna valoración todavía)
Cargando…

Hoy en día, uno de los activos más importante en las organizaciones son los datos, información de clientes, de operaciones o de inteligencia, etc. Toda esta información está en diferentes fuentes de datos y a veces de forma desestructurada. Tener esta información está muy bien, pero lo ideal sería poder explotarla y de forma gestionada.

Estoy seguro de que en vuestra empresa habéis desarrollado o habéis planteado algún servicio que expone operaciones para acceder a estos datos (el típico CRUD de actualización de una base de batos). Es una brillante idea centralizar el acceso a datos, y que las aplicaciones no tengan que buscarse la vida para acceder directamente a las fuentes, con los típicos problemas de seguridad, de formas heterogéneas de acceder, etc.

Os habéis parado alguna vez a pensar, cuánto tiempo y dinero nos gastamos en las empresas en desarrollar estos servicios y qué coste nos suponen:

  • Cada vez que queremos añadir nueva información, evolucionamos el servicio
  • Cada vez que el almacenamiento cambia, evolucionamos el servicio
  • Cada vez que queremos modificar los datos expuestos, evolucionamos el servicio

En resumen, cualquier cambio sobre la fuente de datos o necesidad requiere un nuevo desarrollo.

Hay varias tecnologías que intentan hacer transparentes estos cambios (Hibernate, JPA, etc.), pero aun así suele ser necesario nuevos ciclos de desarrollo, ¿Qué coste tiene? ¿Qué esfuerzo? ¿Pruebas? ¿Calidad? ¿Gestión de configuración?…

Si no me equivoco, por desgracia, la mayoría de empresas sufrimos estos problemas. ¿Os imagináis tener una solución para la que todos estos cambios tan solo sean cambios de configuración?

¿Cuánto dinero y esfuerzo nos ahorraríamos?

WSO2 Data Services Server

WSO2 Data Services Server Logo

En el mercado existen varias soluciones que son capaces de realizar esta labor con diferentes enfoques, en este blog vamos a hablar de WSO2 Data Services Server, solución open source de la empresa WSO2.

WSO2 Data Services Server es capaz de exponer servicios tanto SOAP como REST para poder tratar fuentes de datos diversas, como se muestra en la siguiente figura. wso2 servicios

De esta forma cualquier acceso a datos, ya sea de una base de datos relacional tradicional, NoSQL o ficheros de datos (XML, CSV, etc) o incluso almacenes personalizados pueden ser convertidos a servicios con tan solo configuración.

Soporta de forma nativa:

  • Fuentes de Datos. Cualquier base de batos RDBMS (vía JDBC), CSV, Excel, ODS, Cassandra, Google Spreadsheets, RDF o incluso cualquier página web via “scraping”.
  • Transporte. Los servicios expuestos pueden ser accedidos vía HTTP, HTTPS, JMS, SMTP.

Para cada servicio existen opciones muy interesantes como pueden ser:

  • Transaccionalidad. Cada servicio puede exponer operaciones que pueden ejecutarse de forma transaccional, pudiendo aceptar los cambios o abortarlos.
    • Ejemplo. Imaginaos que para realizar una operación de inserción, se requiere realizar dos inserciones en diferentes tablas (incluso de diferentes esquemas), mediante la transaccionalidad podemos controlar la consistencia de nuestro esquema de base de datos, rechazando o aceptando las operaciones.
  • Validaciones. Por ejemplo en una inserción se pueden validar los datos introducidos (umbrales de valores, longitud, expresiones regulares).
    • Ejemplo. Validar que la inserción de una persona, el DNI cumpla con la nomenclatura adecuada, o incluso operaciones más complejas como comprobar que una fecha de nacimiento no sea una fecha del futuro.
  • Operaciones anidadas. Se pueden anidar operaciones entre diferentes operaciones exponiendo el resultado con un único servicio.
    • Ejemplo. Se podría recuperar un producto de un stock de venta, con todos sus datos asociados e incluir en la respuesta las ventas realizadas de ese producto relacionadas por un dato recuperado en la consulta inicial.
  • Relacionar diferentes fuentes de datos. Se puede cruzar información de diferentes tablas y/o esquemas exponiendo la información como único conjunto de datos.
    • Ejemplo. Información de una persona distribuida en diferentes tablas, la información básica en RMDBS tradicional y las operaciones de ese usuario en Cassandra, devolviendo toda la información en único mensaje.
  • Lanzar eventos.  Ante operaciones definidas se pueden lanzar eventos que realicen tareas u otras operaciones.
    • Ejemplo. Si se detecta una inserción que pueda considerarse crítica podría enviarse un correo electrónico de aviso.
  • Control de versiones.  Basado en subversión se puede llevar un control de versiones de las configuraciones de los servicios expuestos de forma sencilla.
    • Ejemplo. Poder recuperar servicios antiguos y llevar una gestión de la configuración adecuada.

Operaciones sobre el servicio

Cada servicio expuesto con el producto gracias a la plataforma WSO2 Carbon, puede ser gestionado de forma sencilla pudiendo:

  • Aplicar seguridad basada en estándares WS-*
  • Aplicar calidad de servicios (throttling, timeout, etc)
  • Realizar transformaciones de la información vía XSLT o XQuery
  • Monitorización de los servicios y de la infraestructura
  • Habilitar cache para optimizar tiempos de respuesta

Infraestructura

El producto está preparado para convertirse en una solución global tanto en una gran empresa como pequeña. Por ello tiene las siguientes características:

  • Escalabilidad horizontal. Clusterizado sencillo y con escalabilidad de los nodos que se desee, multiplicando la potencia por cada uno de los nodos de forma lineal.
  • Rendimiento. Soporta un gran número de peticiones nodo. En pruebas se ha llegado hasta 1000 TPS por nodo de forma estable.
  • Respuesta. Se han hecho pruebas de estrés comparándolo con acceso tradicionales (vía JPA) y apenas introduce latencias de 20 ms, de forma mantenida en el tiempo (estos valores obviamente varían en función de la infraestructura de red).
  • Límites. En pruebas realizadas, normalmente solemos encontrar el cuello de botella en las fuentes de datos (inserciones simultáneas, consultas masivas), este problema ocurrirá con otros tipos de soluciones (limitaciones de la fuente de datos como acceso a disco, reordenación de índices, etc).

Personalización

El producto dispone de varias formas de extenderlo buscando el paradigma de “código 0” en producción. Destacan como posibilidades más interesantes:

  • Fuente de datos personalizada. Mediante un sencillo desarrollo se puede implementar una interfaz que realizará la comunicación con una fuente de datos no soportada, pudiendo acceder a esta fuente con un pseudo-lenguaje.
    • Ejemplo. Se podría acceder a datos de un servidor que respondiese la información mediante peticiones sobre sockets, pudiendo enviar diferentes operaciones y construir la respuesta de forma selectiva.
  • Validador personalizado. Para validar datos complejos, se puede implementar una interfaz sencilla que realizará la validación que se desee del campo, incluso referente a otros campos del mensaje.
    • Ejemplo. Comprobar que una fecha introducida no sea futura.

Además

Por supuesto este producto puede dotarse de mayor potencia junto a otros productos de WSO2:

  • WSO2 API Manager. Crear APIs seguras y gestionadas para que terceros puedan ampliar tu negocio de forma controlada.
  • WSO2 Identity Server. Realizar operaciones de Seguridad más complejas como Single Sign-on o basadas en protocolo XACML (autorización de grano fino).
  • WSO2 Enterprise Service Bus. Mediante el bus, se añade a la solución capacidades de orquestación de servicios, de esta forma por ejemplo se podrían controlar flujos de inserciones de manera controlada.
  • WSO2  Gobernance Registry. Conseguir centralizar el gobierno de todos los activos.
  • WSO2 Complex Event Processor. Poder detectar eventos que se produzcan y realizar acciones ante ellos.
  • WSO2 Business Activity Monitor. Realizar monitorización avanzada y disponer de cuadros de mando personalizados de toda la actividad.

En la siguiente figura vemos cómo encajan todos los productos wso2 productos

Pero una de las mayores virtudes de WSO2 DSS es su sencillez, ya que por sí solo puede dar toda la funcionalidad aquí descrita sin necesidad de complejas soluciones de productos o suites.

Conclusión

WSO2 Data Services es un producto que permite agilizar los cambios de servicios de datos, optimizando costes y tiempo, con una solución open source. Actualmente apenas hay competencia en el mercado, ya que otras soluciones son suites completas (costosas y complejas).

Y por supuesto, lo mejor de todo esto es que podemos desarrollar servicios sin escribir ni una línea de código (los programadores “temblarán”).

Vuestra empresa podrá enfocarse de esta forma a un ‘paradigma código 0’, con un ROI casi inmediato y una inversión mínima, creando una infraestructura de servicios flexible que hace transparente toda la capa de acceso a datos.

Para más información sobre el producto http://wso2.com/products/data-services-server/

GFI

Desde GFI estamos promoviendo este tipo de soluciones, ya que el ahorro de costes es visible a muy corto plazo, además de las ventajas que aporta una capa de acceso a datos centralizada:

  • Transparencia
  • Seguridad
  • Homogeniedad

Hemos hecho varias implementaciones con éxito en varios clientes en España, usando todas las características explicadas en este artículo.

Somos partner de WSO2 y tenemos especialistas en la solución. Por ello podemos ayudarte, tanto en información del producto, pruebas de concepto, implantaciones y/o personalizaciones del mismo.

Si necesitas más información de algún servicio de los que podemos ofrecer, no dudes en contactar con nosotros.

 

 

Martín Suárez Méndez

Consultor Senior en Arquitectura e Integración orientado a Seguridad en GFI. Ingeniero en Informática y Master de Seguridad informática. Especialista en Gestión de Identidades, PKI, securización de servicios Web y productos WSO2

Martín Suárez Méndez ha escrito 3 entradas


Martín Suárez Méndez

Consultor Senior en Arquitectura e Integración orientado a Seguridad en GFI. Ingeniero en Informática y Master de Seguridad informática. Especialista en Gestión de Identidades, PKI, securización de servicios Web y productos WSO2

8 comentarios en “Crea tus servicios de datos sin una línea de código con WSO2 Data Services Server

  1. Hola, primero que todo agradecer por el trabajo que estan realizando y por este post que esta muy interesante. Soy nuevo en el trabajo con esta plataforma. Por lo que he leido en internet es una potente herramienta para la administracion, el control y el monitoreo de servicios basado en SOA y REST. Trabajo con Alfresco y me gustaria integrarlo con otros sistemas de gestion. Alfresco tiene una excelente gama de servicios SOA y REST y me interesa utilizar esta plataforma para la gestion de esos servicios. He leido mucho sobre los productos de WSO2 pero todos por serparados, me gustaria saber como se integran entre ellos o sea como puedo integrar el Gobernance Registry con el EBS, o con otro de sus productos.
    Si puediera ayudarme, lo agradeceria bastante…
    Muachas gracias de antemano

    1. Hola Julio,

      Ante todo agradecer tu interés y tu opinión sobre el artículo.
      Llevo ya varios años trabajando con WSO2 en GFI y toda la gama de sus productos.
      Por lo que comentas, para realizar integraciones habitualmente con WSO2 ESB sería suficiente.

      Una de las mayores virtudes de los productos de WSO2 es su modularidad, de forma que para cada escenario tienes una solución.
      Por suerte todos los productos comparten una misma plataforma común basada en WSO2 Carbon, por lo cual combinarlos no es ningún problema.
      Por ejemplo todo el registro de todos los productos, por el cual muestras interés, es un registro. Este registro puede ser simplemente una BBDD compartida entre todos los productos, o bien el propio WSO2 Registry (que facilita el gobierno de los elementos).
      Te dejo un enlace que lo explica https://docs.wso2.com/display/Governance460/Sharing+Registry+Space+across+Multiple+Product+Instances

      La mayoría de productos tienen conectores que facilitan la integración entre ellos, y otros simplemente se comunican con endpoints con estandares, por lo cual no hay problema.
      Por ejemplo ya hemos realizado en varios clientes:
      – WSO2 DSS para exponer servicios como datos con WSO2 ESB como capa de mediación y protección.
      – WSO2 ESB con WSO2 BAM para monitorizar, detectar alertas y actuar en tiempo real sobre los servicios
      – WSO2 APIM con WSO2 IS, WSO2 ESB y WSO2 BAM, para crear una infraestructura completa de API Management.
      – WSO2 ESB, WSO2 Registry, WSO2 DSS, WSO2 IS y WSO2 BAM, para crear una infraestructura completa SOA.
      – Y así un largo etc….

      Si tienes alguna duda con alguna integración concreta, ¿puedes preguntarme abiertamente?

      Te ánimo, a que juegues y los uses, de verdad que merece la pena.
      Un saludo

      1. Muchas gracias, Martin…
        Realmente me fue de mucha ayuda la referencia que me diste, lo cierto es que no tenia ni idea de como intercambiar servicios, registros entre los productos de WSO2. No te habia contestado antes porque enseguida que vi tu respuesta me dedique a probar y todo me salio bien..
        La solucion que quiere dar mi equipo a nuestra problematica es la siguiente:
        Tenemos 3 soluciones que integrar, que por suerte para nosotros las 3 implementar servicios SOA o RESt, una es de gestion documental basada en Alfresco, otra es de gestion academica en Symphony y la otra seria un portal en wordpress. Entonces pensamos en hacer un ente intermedio que de cierta manera gestionara la comunicacion entre estas tres app que nos ayudara a monitorizar el funcionamiento y rendimiento de cada servicio, buscamos en internet y aparecio WSO2 como una de las mejores candidatas para darle solucion a nuestra problematica y es por eso que te preguntaba como se integraban entre ellas porque se que la arquitectura que se debe proponer para la plataforma debe de estar compuesta por varios productos de la WSO2.
        Como bien decias, el hecho de que todos sus productos esten hechos sobre WSO2 Plataform Carbon es considerado una gran ventaja…
        Pero no habia encontrado nada asociado a los conectores entre ellas…
        La documentacion que me referenciaste esta muy buena y explica bien los diferentes despliegues que se pueden entre los productos.
        Hoy probe Registrar un servicio SOA de Alfresco(autenticacion) en WSO2 G-REG y desde el WSO2 ESB le cree un Proxy para consumirlo…quiero probar el servicio en soapUI más tarde porque con la app de testear servicios en ESB me da problemas Me gustaria mantener el contacto por si tengo alguna otra duda en el futuro…muchas gracias otra vez…
        Saludos..

        1. Me alegro que te haya servido la información.
          Aquí estamos para lo que quieras, un placer ayudar.

          Saludos.

          1. Saludos Martin, necesito tu ayuda…
            Estoy tratando de hacer un gobierno de uno de los servicios de alfresco a traves de wso2GReg y wso2Esb, pero me da un error a la hora de crear el proxy en el ESB. Probe el de autenticacion(no incluye en el contrato wsdl “imports”) y me funciono, pero con el servicio del repositorio no me funciona(tiene “imports”)…
            ¿Como procedo?
            Primero que todo configure GReg y ESB para establecer el conector entre ellos(Esto lo hice, gracias a la documentacion referencia que me diste la primera vez). Utilice esta configuracion de despliegue “Config and governance partitions in the remote Governance Registry instance.”

            El servicio de alfresco que quiero gobernar es el del Repositorio (RepositoryService), es un servicio SOA, que Alfresco lo tiene definido y en su wsdl se escribe esto:
            ————————————–
            <xsd:import schemalocation="”../wsdl/headers.xsd”" namespace="”http://www.alfresco.org/ws/headers/1.0″"> </xsd:import>
            ——————————————

            Presta atencion a los import de los xsd porque es la esencia de mi problema.
            Cuando entro al GReg, registro el servicio sin problemas y me genera el codigo siguiente para los imports(Revise en el Browser si la carpetas de los schemas se generaban correctamente y todo esta ok):
            ——————————————————-
            <xsd:import namespace=”http://www.alfresco.org/ws/headers/1.0″ schemaLocation=”../../../../../../../../schemas/org/alfresco/www/ws/headers/_1_0/headers.xsd”>
            ————————————-

            Despues voy al ESB, creo el EndPoint y cuando trato de crear el Proxy para probrar el servicio desde ESB(donde selecciono el contrato del servicio registrado en GReg y el EndPoint..ambos desde el ” Governance Registry”), me lanza este error:
            ————————————-
            Unable to add proxy service :: Error trying to add the proxy service to the ESB configuration : inagbe.alfr.repo.proxy2 :: Error building service from WSDL-Error trying to add the proxy service to the ESB configuration : inagbe.alfr.repo.proxy2 :: Error building service from WSDL
            —————————————————-

            Cuando reviso el log en la Terminal, me dice
            [2015-03-03 12:23:09,055] ERROR - ProxyService Error building service from WSDL
            org.apache.axis2.AxisFault: WSDLException (at /wsdl:definitions/wsdl:types/schema): faultCode=PARSER_ERROR: Problem parsing '../../../../../../../../schemas/org/alfresco/www/ws/cml/_1_0/cml.xsd'.: java.io.FileNotFoundException: /../../../../../../schemas/org/alfresco/www/ws/cml/_1_0/cml.xsd (No existe el archivo o el directorio)

            Me da a entender que no encuentra los xsd importados en el contratos…he buscado en internet si hay alguna solucion pero no he dado con ella, he pensado que es un problema de despliegue del wso2GReg pero no estoy seguro. Si sabes como puedo lograr arreglar este problema, lo agradeceria bastante…
            Un saludo, espero que hayas entendido todo el reguero que he formado para explicarme lo mejor posible jaja..

          2. Hola Martín…muchas gracias por la referencia…Estuve un poco desvinculado del trabajo en estos dias y no habia tenido tiempo revisar lo que me enviaste…ya lo revise y me sirvio de mucho, aunque no directamente, pero me ayudo mucho a buscar la forma de solucionar mi problema…pero despues que encontre la solución del problema entendi bien la situación de Jorge en el post que me envias…es cierto que se hace un poco incomodo tener que hacer los import de forma manual…sobretodo cuando tiene algunos anidados dentro de otros…hay que estar bien claro del despliegue de los xsd para saber donde buscar e incorporarlos uno a uno…
            Gracias una vez mas…
            Nos mantenemos en contacto…

  2. Hola, soy nueva en el tema de wso2. Yo particularmente estoy trabajando con la herramienta WSO2 Business Process Server, mi duda es como integro esta a la solución completa de WSO2, en que parte intenvendría en el proceso?, es conveniente crear los procesos bpel??. Cual sería la mejor solución?, Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *