Translate...

lunes, 23 de julio de 2018

OSB-382040 - Error Común del flujo del mensaje OSB

Cuando se esta manipulando el flujo del mensaje en el pipeline, se puede dar el escenario de errores poco comunes en los cuales nos podemos enfrentar, como el siguiente error en particular, como se muestra a continuación:

Failed to set the value of context variable "body". Value must be an instance of {http://schemas.xmlsoap.org/soap/envelope/}Body.

OSB-382040


Este error se debe a que el OSB siempre encierra las variables de contexto $body $header con <soap-env:Body> y <soap-env:Header> respectivamentePor lo tanto cuando estemos manipulando estas variables de contexto, debemos asegurarnos que no se eliminen estas etiquetas.

El uso correcto en la actividad de asignación o remplazo es como se muestra a continuación:

  • Expresion:
<soap-env:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <eje:ejemplo xmlns:eje ="http://ejemplo.com/ejemplo/">
       <valor>Valor de ejemplo</valor>
    </eje:ejemplo>
</soap-env:Body>
  • Variable: Body ($body) y Header ($header)

Cuando utilizamos el llamado a un servicio, la variable de contexto dada para el 'Encabezado de la solicitud SOAP' siempre debe contener el elemento <soap-env:Header>, independientemente de la selección de 'Configure SOAP Body' o 'Configure Payload Document'. de lo contrario, aparecer el error relacionado con el encabezado:

Invalid message: the SOAP Header value is not an XML instance.

miércoles, 30 de mayo de 2018

Microservices


Los Microservices es un estilo arquitectónico que estructura una aplicación empresarial como una colección de servicios ligeramente acoplados, con un enfoque de desarrollo de una sola aplicación o modulo. Donde cada una de las aplicaciones o servicios son independientes y cada uno de estos ejecuta su propio proceso.

Están construidos para satisfacer necesidades puntuales del negocio, o cubren un requerimiento puntual de un módulo específico del negocio, en simples palabras es crear programas independientes que hagan una sola cosa, pero que la hagan bien.

Microservicio


La comunicación entre los Microservices debe ser de forma ligera (API's, HTTP) y también la comunicación con otros servicios debe ser de forma asíncrona, ya que como se mencionaba antes cada Microservice tiene su propio proceso de ejecución independiente, dicha forma de comunicación tiene que ser universal para que sea de manera fluida y eficiente.

Características de los Microservices:
  • Totalmente autónomos y abstractos.
  • Como recomendación deben ser Stateless.
  • Poseen funcionalidades limitadas.
  • Organizados por capacidades, módulos o por una especialidad de trabajo.
  • Poliglotas.
  • Soportan la interoperabilidad por mecanismos de comunicación basada en mensajes.

Restricciones acerca de los Microservies:
  • Inexperiencia
  • Poca documentación existente.
  • Oferta del mercado.
  • Nueva tecnología.

martes, 29 de mayo de 2018

Oracle Services Bus (OSB)

Oracle Services Bus (ESB), es una plataforma de desarrollo de la SOA Suite de Oracle que funciona como intermediario de comunicación entre diferentes sistemas heterogéneos, además que está basada en estándares y patrones de diseño de la arquitectura SOA.

OSB


Está diseñado para la virtualización, conectar, mediar y gestionar interconexiones entre servicios, aplicaciones, sistemas e instancias en una red empresarial orientada a servicios.

Además, que permite el control y manipulación flexible de los mensajes, mediante diversas estrategias como son:

  • Validaciones
  • Transformaciones
  • Monitoreo y Supervisión
  • Enrutamiento de mensajes
  • etc.

Características principales del OSB:

  • Ofrece una capa de seguridad (Token’s, SLA’s. Datos Encriptados, Certificados, etc.)
  • Alta flexibilidad para cambios de interfaz
  • Monitoreo y estadísticas de Servicios
  • Transformación de modelos de datos y ruteo de mensajes
  • Manejador de excepciones
  • Escalabilidad 
  • Procesamiento de grandes volúmenes de mensajes
  • Soporte a mensajes NO XML


En mí opinión como desarrollador tengo algunos puntos o recomendaciones de uso del bus de servicios de Oracle como buenas prácticas de uso del mismo, las cuales son las siguientes:

  • Virtualizar Servicios.
  • Agregar un buen manejo de excepciones en cada uno de los servicios visualizados, para tener mejor visibilidad en caso de fallo.
  • Uso del componente Split-Join para agilizar la ejecución de servicios de forma paralela.
  • Utilizar Message Throttling en los servicios de negocio para evitar sobrecarga de los mismos.
  • Agregar validaciones de Schemas para reducir errores de ejecucíon de errores de Datos.
  • Evitar el uso de Transformaciones de mensajes (XSLT, inLinedXML) ya que incrementa el flujo de procesamiento del Proxy, y sustituir por xQuery ya que es más fácil del interpretar para el servidor.
  • Hacer una buena estimación y configurar el TimeOut en los servicios.
  • Agregar un elemento identificador de quien invoco a cada servicio del OSB, para tener visibilidad del Cliente Consumidor del servicio.
  • Configurar SLA's con el fin de identificar el comportamiento irregular de los servicios visualizados.