Máster en arquitectura distribuida

El próximo 26 de Noviembre (Barcelona) y 10 de Diciembre (Madrid) voy a realizar un máster de 4 días sobre arquitectura distribuida, en el que se van a tratar temas como:

  • Domain Driven Design / SOA
  • CQRS
  • Mensajería con NServiceBus.

Es un curso creado por Udi Dahan y que se va a realizar por primera vez en España después de varios años de éxito en Londres y USA.

Para ver temario, fechas y precios, podéis consultar la siguiente web: http://masterad.techdencias.net

Colaboran:

 IASA-Spain

Read More

IASA-Spain: Evento sobre Sistemas Distribuidos con NServiceBus en Madrid y Barcelona

 

El próximo jueves 26 de Abril a las 16h se realizará un evento en Madrid sobre Sistemas distribuidos con NServiceBus.
El enlace de registro para el evento en Madrid es: http://nservicebusiasamad.eventbrite.com

El jueves 3 de Mayo a las 16h se repetirá el evento en Barcelona añadiendo un track sobre arquitectura SOA con RabbitMQ y WebSockets de la mano de Braulio Megías.
El enlace de registro para el evento en Barcelona es: http://messagingiasabcn.eventbrite.com

Descripción del evento

En este evento presentaremos las particularidades de los Enterprise Service Bus (ESB) en comparación con las arquitecturas tipo Broker. En concreto, nos centraremos en las características de NServiceBus y cómo puede ayudarnos a diseñar sistemas distribuidos SOA de forma robusta, fiable y escalable.

Finalmente veremos de forma teórica y práctica los patrones de mensajería que incluye NServiceBus: Store & Forward, Request/Reply y Publish/Subscribe.

Read More

NServiceBus 3.0 – Distributor

En las últimas entradas estamos repasando las novedades de NServiceBus 3.0 que ya está en la Release Candidate 2. En esta entrada veremos una funcionalidad que ya existía en versiones anteriores pero que se ha rehecho completamente.

Distributor nos permite balancear la carga entre varios nodos a partir de un nodo maestro. La configuración del nodo maestro es muy sencilla a través de los profiles de NServiceBus, simplemente debemos añadir el argumento NServiceBus.Master en el Host. Para asegurar la alta disponibilidad del nodo maestro es recomendable que se ejecute en un cluster.

Para configurar los nodos worker, añadiremos a su vez el argumento NServiceBus.Worker para establecer este comportamiento.

El funcionamiento o flujo de trabajo es el siguiente:

  1. Los nodos worker envían un mensaje a [endpoint].distributor.control cada vez que están libres.
  2. El nodo Master procesa la cola guardando todos los nodos workers disponibles en la cola [endpoint].distributor.storage.
  3. Cuando el nodo Master recibe un mensaje utiliza el primer worker de la lista de [endpoint].distributor.storage para enviarle el mensaje y que lo procese. (more…)

Read More

NServiceBus 3.0 – Data Bus

Siempre que usemos algún sistema de mensajería tenemos que adaptarnos al límite de tamaño del mensaje que el sistema es capaz de enviar. Este límite varía dependiendo de la tecnología usada.

En la mayoría de sistemas on-premise no hay mucho problema ya que el tamaño acostumbra a ser suficiente para la mayoría de casos. Por ejemplo, en MSMQ – el transporte por defecto en NServiceBus – el límite es de 4MB.

En sistemas en la nube este límite es notablemente inferior. Algunos ejemplos:

  • Azure Queues: 8KB
  • Azure Service Bus Queues: 64KB
  • Amazon SQS: 64KB

En aquellos casos en los que se requiera un límite mayor ya sea porqué usamos NServiceBus en Azure o bien porqué queremos enviar algún dato de gran tamaño como una imagen o video, podemos hacer uso de la propiedad DataBusProperty<T>. (more…)

Read More

NServiceBus 3.0 – Message Mutators

Con la entrada del nuevo año ya falta menos para tener la versión definitiva de NServiceBus 3.0. Esta versión traerá un gran número de nuevas funcionalidades. Entre ellas:

  • Integración de RavenDB para la persistencia de Sagas y almacenamiento de la información de subscripciones.
  • Soporte para Azure.
  • Transportar grandes cantidades de datos gracias al DataBus.
  • Una configuración mucho más sencilla y no intrusiva.

Podéis leer un resumen de estas funcionalidades y descargar la beta desde aquí: http://www.nservicebus.com/NServiceBusV3NewFeatures.aspx

En este post hablaremos de los MessageMutators, una nueva funcionalidad que actúa como interceptores de los mensajes al llegar y/o al salir de nuestro endpoint. Así, podemos ejecutar transformaciones a nuestros mensajes de forma dinámica. (more…)

Read More

NServiceBus: Introducción y ejemplo One-Way

A raíz de algunos proyectos e inmersión en los mundos de Service Oriented Architecture (SOA) y Event-Driven Architecture (EDA) he conocido este producto creado por Udi Dahan y que podemos encontrar en: http://www.nservicebus.com/

NServiceBus es una implementación de Enterprise Service Bus (ESB) para .NET y que se apoya en Microsoft Message Queue Server (MSMQ) como transporte y persistencia de colas.

Enterprise Service Bus es una arquitectura que nos permite el intercambio de mensajes entre aplicaciones y servicios de manera desacoplada entre los mismos proporcionando la fiabilidad y manejo de errores que éste tipo de aplicaciones requiere.

Las diferencias entre Enterprise Service Bus y Enterprise Application Integration (EAI) como BizTalk y cuando usar uno u otro daría lugar a muchas discusiones y está fuera del alcance de éste humilde artículo.

NServiceBus proporciona varios patrones de mensajería OOB como One-Way, Request/Response y Publish/Subscribe aunque nos permite extenderlo según nuestras necesidades.

Ejemplo con mensajería One-Way

En este ejemplo veremos la comunicación asíncrona punto a punto. Aunque parezca a priori que podríamos conseguir los mismos resultados con netMsmqBinding y WCF, y en cierta manera así es, la verdad es que NServiceBus nos abstrae de muchas configuraciones que deberíamos realizar a mano: creación de las colas en MSMQ, habilitar permisos necesarios, etc.

Primero vamos a crear el proyecto Messages (Class library) con una referencia a la librería NServiceBus.dll. A continuación definiremos nuestro mensaje:

namespace Messages
{
    /// <summary>
    /// Esta clase será enviada por NServiceBus
    /// </summary>
    public class MyMessage : IMessage
    {
        public string SomeString { get; set; }
    }
}

La interface IMessage no obliga a implementar ningún método, simplemente se usa como marcador para NServiceBus.

(more…)

Read More