Como instalar Mosquitto Server MQTT Broker en Windows para notificaciones push

mosquitto-server-logo

Mosquitto es un message broker open source que implementa el protocolo MQTT, originalmente diseñado por IBM para utilizarlo como mensajeria ligera, muy útil hoy en dia para usar con Arduino y dispositivos IoT como sensores, sistemas de monitorización y diagnóstico, etc. pero también lo podemos usar como servidor de notificaciones push.

Tiene clientes para los principales lenguajes actuales: client libraries y el protocolo MQTT es un OASIS standard con lo que tiene soporte y continuidad de la comunidad.

Recientemente, he tenido que valorar este broker para usarlo como sistema de notificaciones push para una aplicación en Android (sin tener que depender de los Google Service) y aunque es bastante simple instalarlo se deben tener en cuenta una serie de pasos que me gustaria compartir por si alguien tiene la necesidad de montarlo en un servidor Windows.

Después de leer varios blogs y foros, algunos confusos o complejos de entender, encontré este video donde se explica paso a paso el proceso de instalación de Mosquitto:

En mi caso, lo he instalado en un Windows Server 2008R2 y también en un Windows 10 sin problemas, eso sí, necesitamos el .NET Framework 2.0 y 3.5 porque necesita alguna dll para funcionar, sino es posible que se instale corrrectamente el servicio pero luego no funcione las publicaciones/suscripciones a los topics.

Nos leemos!!

 

Software Architecture Conference 2015

Durante el mes de Marzo, ha tenido lugar la Software Architecture Conference 2015 organizada por O’Reilly un evento imprescidenble para todos los arquitectos, teams leads y desarrolladores interesados en las nuevas formas de arquitectura de construir software y arquitecturas agiles que me parecen muy interesantes.

Como muestra del evento, aqui podeis ver algunos videos

5 Reasons To Attend O’Reilly’s Software Architecture Conference

Agile Architecture – Molly Dishman & Martin Fowler

No os lo perdais!!

Microsoft Foro Arquitectos 2015

El pasado mes de Enero se realizo en las oficinas Microsoft Madrid el Foro de Arquitectos 2015 un evento donde se dan varias charlas muy interesantes sobre como crear y migrar nuestras soluciones a un entorno cloud y otros temas que os dejo aqui:

 

 

La lista de charlas fue la siguiente:

9:00 – 9:30 Registro
9:30 – 10:45 CQRS/ES – Cambiando tu forma de pensar
10:45 – 12:00 Fuentes de datos e integraciones de aplicaciones
12:00 – 12:30 Coffee break
12:30 – 13:45 Caché en Azure a fondo
13:45 – 15:00 Rendimiento y monitorización en aplicaciones en la nube

Para los que no pudimos asistir al evento, Microsoft a publicado los documentos de las charlas de forma libre en su blog MSDN. Aqui teneis los enlaces

CQRS/ES – Cambiando tu forma de pensar

CQRS y Event Sourcing no son conceptos que se usen a menudo en el día a día de nuestras aplicaciones, pero si estás desarrollando una aplicación con una gran cantidad de usuarios concurrentes los cuales están usando/modificando el mismo conjunto de datos, deberías tener en cuenta estos patrones.

http://www.slideshare.net/luisruizpavon/foro-arquitectos-de-microsoft-2015-cambiando-tu-forma-de-pensar

Fuentes de datos e integraciones de aplicaciones

En la siguiente charla abordaremos diferentes modelos de persistencia de datos y como encajan en nuestras aplicaciones empresariales, intentando enfocar aquellos puntos en los que pueden ser útiles. Al mismo tiempo hablaremos de integraciones entre estos modelos de datos, tanto dentro de una misma solución como entre diferentes soluciones empresariales.

Foro arquitectos.pptx

Caché en Azure a fondo

La caché es una memoria más pequeña y rápida que la de nuestro almacén de información, por lo que su uso se ha extendido desde el hardware hasta el software. Con la evolución de las tecnologías hacia internet y la utilización de diferentes servidores en entornos cloud, se ha creado la necesidad de desarrollar sistemas de caché distribuidos. Microsoft Azure nos provee de diferentes servicios de caché distribuida, pero debemos aprender a utilizarlos de la forma más eficiente. A lo largo de esta charla revisaremos los sistemas de caché disponibles y cómo podemos explotarlos en nuestras aplicaciones.

http://es.slideshare.net/fernandoescolar/foro-de-arquitectos-cach-en-azure-a-fondo

Rendimiento y monitorización en aplicaciones en la nube

Cuando hablamos de aplicaciones en la nube, tenemos que ser plenamente conscientes, de que si bien, son unos entornos dónde podemos tener un gran escalado horizontal, el escalado vertical no es tan sencillo ni barato, por lo que siempre querremos que nuestras aplicaciones escalen horizontalmente.

http://www.slideshare.net/lfraile/validando-la-escalabilidad-de-la-arquitectura

 

Que los disfruteis!!

 

Libro Gratis Principios SOLID

Libro en formato Pdf bajo licencia Creative Commons, donde aprender que es SOLID, basado en los principios de diseño y desarrollo descritos por Robert C. Martin, apodado ‘Uncle Bob’, en su famoso articulo  http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

El temario del libro es este:

SRP Single Responsibility Principle A class should have one, and only one, reason to change.
OCP Open Closed Principle You should be able to extend a classes behavior, without modifying it.
LSP Liskov Substitution Principle Derived classes must be substitutable for their base classes.
DIP Dependency Inversion Principle Depend on abstractions, not on concretions.
ISP Interface Segregation Principle Make fine grained interfaces that are client specific.

Fuente oficial: http://lostechies.com

Descarga: http://lostechies.com/wp-content/uploads/2011/03/pablos_solid_ebook.pdf

Guias de Arquitectura Microsoft PAG y P&P

Lista de las guias disponibles de Microsoft para consultar y descargar en formato Pdf y saber como construir aplicaciones empresariales:

Guias para Arquitectos:

Guias para Desarrolladores:

Diagrama principal de la arquitectura con WCSF:
Pagina Principal WCSF:

Desacoplamiento n-capas, patron IoC, DI y SOLID

Aqui teneis este excelente video de Hadi Hariri realizado en el XXV Foro de Arquitectos celebrado en Microsoft Ibérica de Madrid sobre el Desacoplamiento entre componentes de arquitecturas n-capas: IoC & DI.

Los puntos tratados son:

  • Principios SOLID
  • Desacoplamiento de las tecnologías-infraestructura
  • Importancia de las Pruebas Unitarias
  • Mocking
  • Introducción a Unity
  • Mapeo a Arquitectura N-Layer

Las siglas IoC y DI significan:

Las siglas SOLID son un acrónimo de :

  • Single Responsibility Principle: Una clase solo debe tener una única responsabilidad o propósito.
  • Open/Closed Principle: Una clase debe esta abierta para ser extendida, pero cerrada para ser modificada. (os suenan las clases abstractas).
  • Liskov Substitution Principle: Las clases derivadas deberían poder ser sustituibles por sus clases base.
  • Interface Segregation Principle: Nos propone utilizar interfaces para modelar las clases y dotarlas de funcionalidad y  no usar clases con interfaces que no son necesarias.
  • Dependency Inversion Principle:  Las abstracciones no deben depender de los detalles, los detalles deben depender de las abstracciones. Es decir, los módulos de más alto nivel no deben depender de los de más bajo nivel sino que ambos deben depender de abstracciones. (Os suena el patrón IoC)

Podeis ver el video online o descargarlo en este link: video IoC-DI

Arquitectura SOA (Services Oriented Architecture)

La Arquitectura SOA o Arquitectura Orientada a Servicios, es un concepto de arquitectura de software que define la utilización de servicios para dar soporte a los requisitos del negocio. Permite la creación de sistemas altamente escalables que reflejan el negocio de la organización, a su vez brinda una forma estándar de exposición e invocación de Servicios Web, lo cual facilita la interacción entre diferentes sistemas propios o de terceros.

Esta definición se hace mediante los estándares que engloban los WebServices (WS) y seguramente todos conoceis, como son XML, SOAP, WSDL, UDDI, DISCO.

Aspectos Básicos de SOA

En la arquitectura SOA la funcionalidad deseada se descompone en unidades (servicios) que pueden ser distribuidos en diferentes nodos conectados a través de una red y que, asimismo, son combinados entre sí para alcanzar el resultado deseado. Estos servicios pueden proporcionar datos a otros o llevar a cabo actividades de coordinación entre uno o varios servicios.

Esta arquitectura presenta un modelo de construcción de sistemas distribuidos donde la funcionalidad demandada será entregada a la aplicación a través de servicios. En la siguiente figura se muestra el esquema de la arquitectura y los elementos que podrían observarse. Como puede observarse, el esquema se encuentra dividido en 2 zonas; una que abarca el ámbito funcional de la arquitectura y otra vinculada a la calidad de servicio.

En definitiva, en la actualidad hablar de arquitectura de software es hablar de SOA. Pero hablar de SOA no es hablar sólo de web services, sino que el tema va mucho más allá. El ciclo de vida de desarrollo de software, desde el diseño hasta la operación, está encima de la mesa para ser re-estudiado en base a las aportaciones y posibilidades de SOA. A medida que el mercado vaya adoptando las estrategias y tecnologías implicadas, veremos madurar el desarrollo de software hasta niveles no alcanzados por el momento. El mundo del software no deja de reinventarse contínuamente. Tenemos entre manos una nueva generación de ideas, vamos a ver hasta dónde nos llevan.

Si queremos ampliar información consultar este documento de MS sobre la arquitectura SOA aplicada al mundo (real-world-SOA) donde se detallan casos reales de uso.

También teneis esta blog de arquitectura SOA, que no os podeis perder.