Provocação Konker no 1º hackday FIESP 2016

33
Engenharia das Coisas IoT onde hardware não é mais um desafio Alexandre Cardoso 1º Hackday FIESP – 16/Ago/2016

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

Page 1: 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

Page 2: Provocação Konker no 1º hackday FIESP 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

Page 3: Provocação Konker no 1º hackday FIESP 2016

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

Page 4: Provocação Konker no 1º hackday FIESP 2016

• “É 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

Page 5: Provocação Konker no 1º hackday FIESP 2016

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”

Page 6: Provocação Konker no 1º hackday FIESP 2016

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

Page 7: Provocação Konker no 1º hackday FIESP 2016

Na Internet, primeiro vieram as pessoas

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

Page 8: Provocação Konker no 1º hackday FIESP 2016

Agora é a vez das “coisas”

Page 9: Provocação Konker no 1º hackday FIESP 2016

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

Page 10: Provocação Konker no 1º hackday FIESP 2016

Está mais fácil prototipar

• Hardware mais barato e acessível

• Linguagens e ambientes para desenvolvimento

• Open-source

• Cada vez mais didático

Page 11: Provocação Konker no 1º hackday FIESP 2016

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

Page 12: Provocação Konker no 1º hackday FIESP 2016

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

• Ampliar presença

• Escalar• Adicionar mais capacidade

sem perder desempenho/eficiência

Page 13: Provocação Konker no 1º hackday FIESP 2016

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

Page 14: Provocação Konker no 1º hackday FIESP 2016

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”

Page 15: Provocação Konker no 1º hackday FIESP 2016

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

Page 16: Provocação Konker no 1º hackday FIESP 2016

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

Page 17: Provocação Konker no 1º hackday FIESP 2016

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)

Page 18: Provocação Konker no 1º hackday FIESP 2016

• 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

Page 19: Provocação Konker no 1º hackday FIESP 2016

• 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

Page 20: Provocação Konker no 1º hackday FIESP 2016

• 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

Page 21: Provocação Konker no 1º hackday FIESP 2016

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

Modelo de Integração

Page 22: Provocação Konker no 1º hackday FIESP 2016

• 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

Page 23: Provocação Konker no 1º hackday FIESP 2016

• 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

Page 24: Provocação Konker no 1º hackday FIESP 2016

• 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

Page 25: Provocação Konker no 1º hackday FIESP 2016

• 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

Page 26: Provocação Konker no 1º hackday FIESP 2016

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??

Page 27: Provocação Konker no 1º hackday FIESP 2016

Muitas opções, alguns tradeoffs

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

Page 28: Provocação Konker no 1º hackday FIESP 2016

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”

Page 29: Provocação Konker no 1º hackday FIESP 2016

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

Page 30: Provocação Konker no 1º hackday FIESP 2016

Fog Computing

Page 31: Provocação Konker no 1º hackday FIESP 2016

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

Page 32: Provocação Konker no 1º hackday FIESP 2016

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

Page 33: Provocação Konker no 1º hackday FIESP 2016

Obrigado!