Provocação Konker no 1º hackday FIESP 2016

Post on 13-Feb-2017

57 views 0 download

Transcript of Provocação Konker no 1º hackday FIESP 2016

Engenharia das CoisasIoT onde hardware não é mais um desafio

Alexandre Cardoso1º Hackday FIESP – 16/Ago/2016

Quem sou eu?• Líder em Arquitetura de Software

• Bacharel em Ciências da Computação / Pós-graduação em Big Data e Data Science

• Construindo software há 16 anos

• Desenvolvedor / Consultor / Líder técnico

• Web, mobile, Big Data, Internet das Coisas

• Java, Scala, Python, Ruby, Javascript

Agenda

1.1. O que é IoT – Internet das Coisas?1.2. Evolução da tecnologia1.3. Hardware mais fácil e mais barato1.5. Conectividade e transmissão de dados1.6. Protocolos e modelos de comunicação1.7. A “nuvem” e a “névoa” – Descentralizar a computação1.8. Considerações finais

• “É a rede de objetos físicos dotados de tecnologia embarcada para comunicar e sentir ou interagir com si próprios ou o ambiente externo.” (Gartner)(1)

• “É o conceito sobre objetos do cotidiano – de máquinas industriais à wearables – que utilizem sensores e tecnologia embarcada para coletar dados e tomar ações sobre estes dados através de uma rede” (SAS)(2)

O que é IoT - “Internet das Coisas”?

(1) http://www.gartner.com/it-glossary/internet-of-things/(2) http://www.sas.com/pt_br/insights/big-data/internet-das-coisas.html

O que podemos chamar de “coisa”?

“Qualquer coisa, antes desconectada, mas agora capaz de transmitir e receber dados e/ou comandos através de uma rede”

IoT vs M2M – Machine to Machine

• Dispositivos conectados “by design”• Ponto a ponto• Intranet ou Internet• Não dependem diretamente de

intervenção humana

• Automação industrial• Formula 1• Tráfego aéreo

Na Internet, primeiro vieram as pessoas

Fonte: http://dazeinfo.com/2014/11/19/growth-internet-telecom-users-india-q2-2014-disappoints/

Agora é a vez das “coisas”

Pra chegar lá, o que aconteceu?• Desenvolvemos tecnologia:

• IPv6• Cloud computing• Tecnologia embarcada

• Microcontroladores• SoC – System on a Chip• Sensores• Dispositivos de baixo

consumo• Miniaturização

• Protocolos

Está mais fácil prototipar

• Hardware mais barato e acessível

• Linguagens e ambientes para desenvolvimento

• Open-source

• Cada vez mais didático

Está mais fácil conectar

• Conectividade de baixo consumo• Bluetooth Low Energy• Zigbee• 6LowPAN• Z-Wave (RF)

• Conectividade como “commodity”• Custo cada vez menor• Fácil de integrar com o cotidiano

• Wi-fi doméstico• Wi-fi corporativo• Bluetooth veicular

WiFiESP8266 v12E

GSMArduino Uno + Shield GSM

SoC (System on a Chip)

Raspberry PI 3 ou Zero

Se tudo é “fácil”, qual o desafio??• Distribuir

• Ampliar presença

• Escalar• Adicionar mais capacidade

sem perder desempenho/eficiência

Arquiteturas distribuídas• Principais elementos

• Processamento• Bare metal• Virtualização• Cloud computing

• Elasticidade x Granularidade

• Armazenamento (guardar e recuperar)• Dados em todo o lugar• Tolerância ao particionamento

• NoSQL, Hadoop, etc

• Transmissão

Arquiteturas distribuídas

“O recurso mais escasso e menos confiável de uma arquitetura distribuída é, e sempre será, a rede de dados que interliga seus elementos”

Redes de dados em IoT

• Wired e wireless• IP-based ou não• Maior parte com foco em baixo

consumo de energia e baixo custo de implementação

• Todas oferecem níveis diferentes de latência e largura de banda

• Todas oferecem caminhos à Internet

O “vai e vem” na nuvem • Dados são transportados mediante

protocolos estabelecidos:• TCP / UDP

• Integração se dá em vários modelos:• Request - Response• Publish - Subscribe• Message queuing

• Dados são trocados mediante protocolos de aplicação• HTTP(s)• MQTT• CoAP• AMQP

TCP vs UDPTCP UDP

Tipo de conexão Orientado à conexão Orientado à troca de pacotes

Uso Confiabilidade antes de velocidade Velocidade antes de controle de integridade

Protocolos que utilizam

HTTP (S), FTP, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP, VoIP

Ordenação Garante Não garante

Velocidade Mais lento que UDP Rápido, pois não há controle de erros

Confiabilidade Garantia de integridade e ordenação de todo os pacotes

Sem garantias (best effort)

Tamanho de cabeçalho

20-60 bytes 8 bytes

Overhead Pesado (criação de conexões, ack) Leve (QA é responsabilidade do app)

Controle de tráfego

Possui Não possui

Controle de erros Verificação e recuperação de erros Apenas verificação (descarte)

• Infraestrutura de IoT, normalmente, impõe restrições• Redes de banda estreita• Redes com latência moderada a alta• Uso de suprimento instável e finito de energia (baterias, painéis

solares, etc)

• Controle de erros e recuperação, em dispositivos embarcados, pode exigir tempo adicional para transmissão• Mais tempo -> Maior consumo -> Menor autonomia

• Fique atento aos detalhes, por muito tempo, ocultos e “transparentes”

TCP vs UDP

• Request -> Response• Troca de mensagens• Síncrono• Bom para comando-controle• Ponto a ponto• Tempo de resposta é sensível a:

• Latência e largura de banda• Tempo de processamento

Modelo de Integração

• Publish / Subscribe• Distribuição de mensagens• Assíncrono• Múltiplos pontos de interesse• Elemento adicional: Message broker• Bom para “empurrar”, não para “puxar”

Modelo de Integração

• Message queuing• Troca de mensagens• Assíncrono• Ponto a ponto• Elemento adicional: Message broker• Bom para comando-controle

Modelo de Integração

• HTTP/HTTPS• Request / response• Baseado em texto• Ponto a ponto• Seguro (via TLS/SSL)• Largamente utilizado• Escalabilidade e disponibilidade• Bom para comando-controle• REST• Transporte por TCP• Não desenhado para microdispositivos• Alto overhead

Protocolos de aplicação

• MQTT• Publish / subscribe• Binário• Seguro (via TLS)• Desenhado para microdispositivos• Otimizados para redes restritas

• Baixa largura• Alta latência

• Transporte via TCP• Last will• QoS (3 níveis, dependendo do broker)• Não é fácil escalar (depende do broker)

Protocolos de aplicação

• CoAP• Request / Response• Baseado em texto• Síncrono / Assíncrono• Seguro (via DTLS)• Desenhado para microdispositivos• Transporte via UDP• REST model (headers, content negotiation, etc)• QoS (confirmable / nonconfirmable)• Padrão ainda não “maduro”

Protocolos de aplicação

• AMQP• Message queuing• Binário• Assíncrono• Ponto a ponto ou distribuído (via bindings)• Foco em durabilidade e garantia de

entrega• Normalmente utilizado para escalar

processamento de mensagens no servidor• Várias implementações• Não muito utilizado para integrar

microdispositivos

Protocolos de aplicação

Muitas opções, alguns tradeoffs• Tecnologias e protocolos disponíveis

para agregar eficiência e segurança (entrega e violação) na transmissão

• Tecnologia disponível para embarcar processamento e sensoreamento em “coisas” do cotidiano

• A “nuvem” está aí pra guardar e processar os dados. CERTO??

Muitas opções, alguns tradeoffs

“Não é tão simples quanto parece”

Qual é a “real”?“Há uma INTERNET de distância entre a nuvem e seu dispositivo

mais frágil e remoto”

“O recurso mais escasso e menos confiável de uma arquitetura distribuída é, e sempre será, a rede de

dados que interliga seus elementos”

“Dispositivos são restritos, frágeis, feitos para falhar. Não confie a eles a guarda de dados”

Como lidar?• Fog/Edge Computing

• Computação descentralizada• Localização próxima da fonte do dado• Composto de “fog nodes”

• Dispositivo de baixo custo• Processar e armazenar pequenos

volumes de dados “em trânsito”• Controlar grupos de dispositivos,

mesmo na ausência temporária da nuvem

• Gateway / router / data noise cleaning

Fog Computing

Fog Computing• Fog node – Raspberry PI 3

• Baixo custo (~ USD40)• Pequeno (standard credit card size)• Recursos

• Wifi / Ethernet / Bluetooth 4.0 BLE• GPIO / USB / HDMI / Camera• Full Linux Distro

• 4 vCPU• Armazenamento expansível (até 32GB

em SD card)• Java / Python / Node.js / whatever

Pra encerrar

1. Internet das coisas não se faz apenas com hardware2. Lembre-se: Redes não são infalíveis (nunca serão)3. Toda solução de IoT deve conduzir aos “dados”. Desenhe o projeto

para garantir a sobrevida dos dados4. Toda integração flue melhor na abordagem certa. Escolha a sua5. A “névoa” veio pra ficar. Descentralizar para escalar e garantir

Obrigado!