Arquitetura de Sistemas

IoT - Internet of Things

Requisitos Básicos

Introdução

Computação Ubíqua (A terceira onda da tecnologia)

A primeira onda foram os Mainframes compartilhado por várias pessoas.
A segunda onda é a que estamos agora, a era da computação pessoal com pessoas e máquinas estranhando umas às outras.
A terceira onda está apenas começando, a Computação Ubíqua, é a era da tecnologia "calma", quando a tecnologia recua para o pano de fundo de nossas vidas. As tecnologias mais importantes são aquelas que desaparecem, elas se integram a vida do dia a dia, ao nosso cotidiano até serem indistinguíveis dele.

Arquitetura

Atributos a considerar na escolha da arquitetura
Arduíno
É uma plataforma de Prototipagem, um microcontrolador com entradas e saídas digitais, geralmente programável em C/C++, com conexões de interface serial ou USB. Não tem uma conexão com a internet, mas tem os Shields, que são componentes que podem ser agregados para dar conectividade, como blooth, wirelles, etc.
MCUs
É um sistema embarcado, um microcontrolador de chip único contendo um sistema operacional real time (sistema que fala diretamente com o hardware e com tempo de resposta mais rápido). Uma das grandes vantagens é a segurança, porque se tem mais controle.
Uso industrial, médico, militar, transporte, etc.
Raspberry PI
É um minicomputador completo, com hardware integrado em uma única placa, roda SO Linux ou Windows.
Uso doméstico e comercial.

Protocolos de Comunicação

MQTT - Message Queue Telemetry Transport

É o protocolo mais conhecido e mais usado em IoT. Também denominado de M2M (Machine-To-Machine).
O MQTT é um protocolo de rede leve de publicação-assinatura que transporta mensagens entre dispositivos. O protocolo geralmente é executado em TCP/IP, no entanto, qualquer protocolo de rede que forneça conexões bidirecionais ordenadas, sem perdas, pode suportar MQTT. Usa mensagem assíncrona, envia e não fica aguardando resposta.
Criado pela IBM para conectar sensores de pipelines da industria de petróleo e transmitir os dados via satélites, ou seja, criado para ambientes hostis, para ser confiável, para trabalhar com grande quantidades de dados. Depois foi padronizado pela OASIS e suportado pelas linguagens de programação mais populares.
OBS: Um sistema embarcado com SO Real time pode usar o protocolo HTTP para se comunicar com a nuvem.
Relembrando o Modelo Cliente/Servidor
Stateless Server: Não tem estado (Não conhece cliente, mas pode armazenar algumas informações).
Síncrono: Porque o cliente sempre aguarda a resposta do servidor.
Modelo de Comunicação do MQTT - Modelo de Publish/Subscribe
Há uma separação (desacoplamento) do cliente em fornecedor (Publish) e consumidor (Subscribe).
MQTT Broker é um Middleware cuja função é ser um distribuídor/roteador, receber e entregar as mensagens.
Esse modelo tem um poder de escabilidade em lidar com dados muito maior que o modelo cliente/servidor.
O Broker nada mais é que um software, então ele possui um endereço público.

                                // Broker
                                mqtt://my-tracker.com
    
                                // Publish
                                pub mqtt://broker/user/gps/position {'lat:-23.64644, lon:-46.6544'}
                                pub mqtt://my-tracker.com/d7k901/gps/position {'lat:-23.64644, lon:-46.6544'}
    
                                // Subscribe
                                sub mqtt://broker/user/gps/position
                                sub mqtt://my-tracker.com/d7k901/gps/position
                            

Flexibilidade dos Tópicos

Os tópicos são definidos pelo usuário, é a parte que vem depois do endereço do Broker mqtt://my-tracker.com
A flexibilidade do MQTT para compor os tópicos, permite modelar o sistema conforme a necessidade de produzir e receber os dados.
Exemplo de Topicos

QoS - Quality of service

O protocolo MQTT fornece o QoS com três níveis diferentes de qualidade de serviço.
Qualidade de serviço é a descrição ou medição do desempenho geral de um serviço, como uma rede telefônica ou de computadores ou um serviço de computação em nuvem, particularmente o desempenho visto pelos usuários da rede.

Cloud

Grande e cada vez maior a quantidade de devices conectados, tem potencial de escala global.
Há dois tipos de soluções em Cloud:

Tipos de Soluções em Cloud

Estudo de Caso com Data Store

Arquitetura é escolha!

Arquitetura

Prova de Conceito!

Arquitetura

Mínimo Produto Viável

Arquitetura

Solução que a própria nuvem oferece

Arquitetura

Estudo de Caso com Cache (Real Time)

IoT na prática

Arquitetura
Arquitetura
Arquitetura