Desenvolvimento

28 ago, 2017

Popularização do padrão Publisher/Subscriber no mobile e na IoT

Publicidade

O desenvolvimento de software, independentemente da plataforma alvo, sofre mudanças, evoluções e inovações constantes. O uso de um padrão de desenvolvimento, ou de um padrão de comunicação para os componentes que fazem parte do software como um todo, se tornou comum e trivial nos últimos anos.

Recentemente, um padrão vem ganhando destaque no mundo do desenvolvimento, principalmente quando falamos de mobile e Internet of Things. O padrão Publisher/Subscriber está cada vez mais presente em APIs, frameworks e bibliotecas de código, para as mais diferentes plataformas com foco nas categorias descritas anteriormente.

Antes de comprovar essa teoria e mostrar algumas das possibilidades que o desenvolvedor mobile/IoT possui, vamos descrever de forma sucinta o padrão Publisher/Subscriber.

Publish - Subscriber. Fonte: https://goo.gl/RTIg47
Publish – Subscriber. Fonte: https://goo.gl/RTIg47

Na Figura 1, tem-se uma representação visual do padrão. Além de falar sobre o Publisher/Subscriber, a imagem está inserida em um texto que fala sobre o MQTT (Message Queue Telemetry Transport), comprovando a união com IoT. Mas vamos à descrição:

O padrão Publish/Subscribe cria uma entidade central, muitas vezes chamada de Broker, que recebe mensagens dos publishers e as reencaminha para subscribers cadastrados. Uma analogia semelhante seria a assinatura de um RSS em uma página de notícias, por parte do leitor.

Um dos pontos fortes desse protocolo é o desacoplamento entre o publish e o subscribe. Os dois elementos têm conhecimento zero um do outro, permitindo uma independência muito grande entre os elementos que populam as mensagens no broker e os elementos que irão consumir essa informação.

E essa independência favorece, e muito, a adoção do protocolo no ambiente móvel e, principalmente, no mundo da Internet das Coisas. Justamente porque a heterogeneidade dos elementos, tanto no publish quanto no subscribe, é muito grande. Imaginem a quantidade de plataformas, linguagens de programação, protocolos de comunicação e tecnologias para um software poder atingir um número massivo de clientes em IoT.

E começando pela IoT, o MQTT foi um dos primeiros protocolos popularizados que utiliza o padrão publish/subscribe. O Eclipse, uma das IDEs mais adotadas para desenvolvimento, fornece até um broker open source. Veja a descrição encontrada no site oficial da ferramenta (https://mosquitto.org/): “Eclipse Mosquitto™ is an open source (EPL/EDL licensed) message broker that implements the ​MQTT protocol versions 3.1 and 3.1.1. MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for “Internet of Things” messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino”.

O mesmo Eclipse também fornece o Paho (https://goo.gl/AyFW2Q), uma biblioteca cliente escrita em Java para uso na plataforma mobile Android. Olhando sob um ponto de vista mais genérico, podemos inclusive dizer que, mesmo no smartphone, não saímos da IoT, afinal de contas, um dispositivo móvel também é uma “coisa”, ou um nó que produz e consome dados da Internet.

Mas nem só de Eclipse o mundo vive, não é mesmo? Uma API que tem muitos adeptos no mundo mobile é a PubNub. Sua biblioteca para as principais plataformas do mobile, Android e iOS, é simplificada – basta criar um canal e publicar e/ou esperar por mensagens publicadas. Mas há alguns pontos que chamam a atenção.

O primeiro deles é que o PubNub tem um conceito de canais. O broker, que mencionamos anteriormente, vira um Channel nessa API. O segundo e, no entendimento deste autor, o mais impactante: o PubNub oferece SDK e documentação completa para mais de 70 plataformas distintas.

Por exemplo, é possível fazer um jogo (tem suporte para Unity) que, quando o jogador atinge uma fase ou conquista algo importante, pisca as luzes da residência (tem suporte para 16 plataformas de IoT) e liga o aparelho de televisão (tem suporte para WebOS e Samsung Smart TV). Simplesmente sensacional.

Outro bom exemplo é o Google Pub/Sub. Na página oficial da plataforma, podemos encontrar uma imagem que, basicamente, poderia ser usada em alguma aula sobre o padrão publish/subscribe:

Fonte: https://goo.gl/yD7sGq
Fonte: https://goo.gl/yD7sGq

Falando especificamente sobre o Android, líder no mercado de smartphones, temos a Event Bus. Segundo o próprio site oficial da biblioteca, “is an open-source library for Android using the publisher/subscriber pattern for loose coupling. EventBus enables central communication to decoupled classes with just a few lines of code – simplifying the code, removing dependencies, and speeding up app development”.

Poderia escrever mais alguns parágrafos sobre exemplos de implementação do protocolo publish/subscribe no mundo móvel e IoT, mas acredito que já foi possível entender sua importância e penetração nesses dois mercados. Além disso, indico que o leitor comece a utilizar qualquer uma das soluções apontadas aqui – você também vai se impactar com a facilidade de implementação e codificação.