17 fevereiro 2018

Onde Colocar a Inteligência?



A Internet das Coisas implica em: coletar quantidades gigantescas de dados, transmitir estes dados a alguma central de processamento, processá-los e inferir ações baseadas no processamento destes dados. Na verdade, este é o conceito básico de qualquer sistema de controle.

Em sistemas de automação residencial mais antigos, o processamento é feito em uma central que se encontra no mesmo ambiente dos sensores e atuadores. Com a melhoria do acesso à Internet e com a grande capacidade computacional disponível nos servidores da Internet, começou a aparecer a oportunidade de se usar os conceitos de Internet das Coisas nos sistemas de automação residencial.

Colocar parte do processamento na Nuvem permite baixar os custos de equipamentos, aumentar a capacidade de “inteligência”, trabalhar dados historicamente e integrar o sistema a outros fornecedores de dados.

Contudo, depender apenas do processamento na chamada Nuvem impõe alguns problemas e riscos: o tempo de resposta depende da performance da comunicação com a Nuvem; a perda da conectividade interrompe todo o processamento.

Portanto, a solução é dividir a responsabilidade de processamento entre os servidores na Nuvem e as centrais locais.

E é este o caminho que os sistemas de automação residencial têm seguido, seja nas arquiteturas mais tradicionais, expandindo a oferta de inteligência através do uso do processamento na Nuvem, seja nas soluções mais “modernas” onde o sistema é composto por dispositivos “inteligentes” onde um deles é “mestre” e a Nuvem a grande condutora do processo como um todo.

Muito se discute sobre esta divisão de processamento, buscando definir limites mais claros para cada lado, bem como entendendo as vantagens e desvantagens envolvidas. Estes tipos de processamento já até ganharam seus nomes em inglês: Cloud Computing (computação na Nuvem) para o processamento nos servidores da Internet, e Edge Computing (Computação na Borda) para o processamento local (esta tradução para Edge Computing ainda não está generalizada).

Então, vamos entender um pouco mais de tudo isso.

Primeiramente, vamos entender o que seria a borda. Considere como Borda tudo aquilo que está no mesmo local que o gerador de dados. Um sensor IoT está na borda; um gateway ou central que esteja junto aos sensores e atuadores é parte da borda. De certa forma, tudo que tem um local físico definido e que esteja na mesma localização física de onde os dados são coletados, faz parte da Borda.

Computação na Borda é, então, todo o processamento que ocorre no mesmo local físico onde estão estes sensores, atuadores ou outros equipamentos relacionados com o sistema.

Mas este conceito não é novo. É, na verdade, onde todo sistema de controle começa, seja na indústria ou na sua residência. Então, o que a IoT está chamando de Computação na Borda só tem de novidade o nome.

E o que seria computação na Nuvem? De forma simples, seria toda computação de um sistema que não esteja sendo feita na Borda...

Expandindo este conceito, as plataformas na Nuvem processam dados que não lhe pertencem, pois não foram obtidas por estas plataformas. Quem os coletou foram os sistemas de Borda, que então os transmitiu para a plataforma. Como consequência, saber onde ficam estes servidores é irrelevante, daí o conceito de Nuvem, indicando que por trás da Nuvem existe uma capacidade computacional, mas que não é relevante sabermos onde fica ou exatamente o que seja.

Fica cada dia mais claro que a solução para a Internet das Coisas, seja na Casa Inteligente, seja nas gigantescas plantações, é o uso equilibrado de ambas as formas de computação.

Obviamente, uma solução baseada apenas na Nuvem tem seus atrativos. Em princípio, é um sistema mais simples de ser concebido e mantido: colocar no campo apenas sensores responsáveis por coletar e transmitir dados torna a tarefa mais fácil e, incialmente, mais econômica.

Gerir toda a aplicação diretamente na Nuvem também facilita a manutenção e o gerenciamento do sistema como um todo.

Contudo, há alguns pontos onde a computação na Nuvem deixa a desejar, o que nos leva a considerar a incluir Computação na Borda como necessária em qualquer arquitetura de sistema IoT.

Um desses pontos é a chamada latência, que podemos definir como o tempo que leva para a informação ser coletada, processada e a ação consequente deste processamento ser comandada e obedecida pelo atuador no campo.

Aqui precisamos nos preocupar com duas coisas: variabilidade dos tempos e validade das informações.

Todo sistema apresenta latência. Mesmo um sensor leva um determinado tempo entre o momento de variação de alguma grandeza sendo medida e o tempo para transformar esta grandeza em um dado digital e deixá-lo disponível para alguém usar. Se estes tempos são conhecidos e fixos, desde que não muito altos, as lógicas que processam estas informações podem levar em conta este tempo. Contudo, se temos latências variáveis as informações coletadas podem perder sua validade se estes tempos forem superiores a um determinado limite.

Se pensarmos no Carro Autônomo, é claro que as latências têm que ser a menores possíveis e alguns dos dados obtidos dos sensores tem uma validade muito curta, que pode ser medida em milissegundos.  Fica claro que o Carro Autônomo não pode depender apenas da computação na Nuvem.

O processamento na Borda é uma forma de controlar e conhecer as latências, posto que mesmo que as informações devam ser passadas de um sensor a uma central local, as formas de comunicação são conhecidas e controladas, garantindo a validade das informações.

Então, processamentos que precisam ser executados em tempo real, ou perto disso, devem ser obrigatoriamente tratados pela computação na Borda.

Já processamentos que dependam de análises históricas de dados, de informações de terceiros ou de algoritmos muito complexos devem ser processados na Nuvem.

Outro ponto a considerar, tanto tecnologicamente quanto comercialmente, é o volume de dados que deve ser transmitido dentro de um certo intervalo de tempo. Grosseiramente, estamos falando de largura de banda e volume de dados.

Ao termos todo o processamento sendo feito na Nuvem, esta deve receber todos os dados dos sensores de forma crua, sem nenhum tratamento na Borda (já que estamos supondo a computação na Borda inexistente). Mesmo que os dados de um determinado sensor sejam simples, como apenas a informação da temperatura ambiente, cada transmissão desta informação até a Nuvem vai consumir um determinado pedaço da largura da banda e do volume de dados. Se lembrarmos que muito provavelmente uma grande parte do que é transmitido pelo sensor é apenas informação gerencial (quem sou, como estou, em que instante coletei este dado, sim eu posso falar com você, a senha para falar com você é XXX, etc.), vemos um certo desperdício se temos que repetir este “protocolo” de comunicação a cada transmissão. E consumir banda e volume significa contratos mais caros com as operadoras responsáveis pelas redes de comunicação do sistema em questão.

Agora, se eu tenho uma certa capacidade de processamento na Borda, seja diretamente no sensor ou em algum gateway local, podemos otimizar este processo. A computação na Borda se responsabiliza pela coleta dos dados do sensor e faz a primeira validação quanto ao estado do sensor. A inteligência local pode também acompanhar a variação da temperatura e avisar a Nuvem apenas quando a variação for, digamos superior a 1 grau. E isto provavelmente acontecerá apenas umas 20 vezes por dia.

Adicionalmente, lógicas mais simples com pertinência local podem ser executadas pela computação na Borda. Comandos de ligar ou desligar aparelhos de ar condicionado conforme a temperatura medida pelo sensor não precisam ser processados na Nuvem.

Como já inferido anteriormente, outro aspecto que valoriza a computação na Borda é a confiabilidade do sistema. Ter as lógicas críticas processadas localmente elimina os riscos de falha com a perda da comunicação com os servidores na Nuvem (comunicação que depende de terceiros na vasta maioria dos casos).

Um outro ponto que mostra o valor da computação na Borda é a chamada propriedade da informação. Ao se projetar sistemas que tenham capacidade de processamento local é possível garantir que o processamento pontual de informações sensíveis ao usuário ou cliente sejam feitas localmente, não enviando à Nuvem informações que possam ser consideradas sigilosas ou de valor a terceiros.

Fica claro, consequentemente, que o balanço entre o processamento na Nuvem e na Borda é a melhor solução, tanto tecnologicamente quanto comercialmente. O ponto de equilibro depende, obviamente, de cada aplicação e deve ser definida considerando os conceitos acima e também outros mais específicos relacionados aos desafios impostos pelo usuário, pela localidade e pela legislação.

E como aplicaríamos isso à Automação Residencial?

Primeiramente temos que considerar duas realidades: sistemas que nasceram antes da computação na Nuvem e sistemas que estão nascendo dentro desta nova realidade de Internet das Coisas.

Os sistemas existentes já com contam a computação na Borda, através de centrais locais, ou até através da capacidade de processamento distribuída pelos seus dispositivos locais. Estes sistemas também já possuem uma porta de comunicação com a Internet, posto que seus aplicativos móveis precisam se comunicar com a sua central local mesmo quando o usuário está fora da sua residência.

Para estes sistemas, o caminho natural é conceber novas capacidades e inteligências que possam funcionar na Nuvem. Funcionalidades gerenciais ou que dependam de análise de dados ao longo do tempo são as possiblidades mais fáceis de serem implementadas. Um passo adicional seria a integração com outros sistemas (sistemas de alarme e vigilância, por exemplo) ou com serviços disponíveis na Internet (como previsão de tempo), tornando o sistema parte de um universo maior.

Já para os sistemas que estão por vir, a oportunidade de se conseguir um equilíbrio entre os dois tipos de processamento é uma ótima forma de maximizar a oferta de recursos, minimizando investimentos por parte do cliente, e fidelizando-o através da prestação de serviços continuada.

Em resumo, o balanço entre os métodos de computação é uma realidade que todos os fornecedores de sistemas de automação residencial devem implementar em seus sistemas. Caso não o façam, com certeza não oferecerão a mesma gama de valor que seus concorrentes que optaram pelo uso de ambos métodos.

Um comentário: