# Fog computing

Computação em névoa ou em inglês: fog computing (também denominada de computação em neblina, computação de borda ou nevoeiro, que deriva da denominação fogging), consiste na alocação do poder de processamento mais perto do limite da rede. Portanto é uma arquitetura de computação descentralizada onde dados, cálculos, comunicações, armazenamentos, medições, aplicações e gerenciamentos são distribuídos no local mais lógico e eficiente: entre a fonte de dados e a nuvem.
Esta abordagem é apresentada por alguns autores, e.g. CISCO, como uma alternativa à solução de computação em nuvem, pois este paradigma reduz a quantidade de dados transmitidos na rede e também a complexidade computacional necessária na nuvem. Porém, existem abordagens no ramo da computação que tentam tirar partido de ambas as abordagens em simultâneo. O grau de liberdade apresentado por este novo ramo incide principalmente sobre o panorama da internet das coisas, que necessita de uma infra-estrutura que englobe todos os seus requisitos, situação em que a computação em névoa se encaixa, o que possibilita um foco principal em permitir que a tomada de decisões e gestão dos dados seja feita localmente.

## Relação entre Névoa (Fog) x Nuvem (Cloud) x Internet das Coisas (IoT)

Quando soluções de Internet das Coisas (IdC) precisam atingir escala global, com dispositivos presentes em diferentes localidades se comunicando de forma contínua, é comum adotar também um modelo de computação em nuvem. Afinal, os dados coletados pelos sensores podem ser processados e armazenados na nuvem, o que compensa as restrições dos dispositivos. Além disso, a nuvem pode ser utilizada como uma plataforma de IdC quando os sensores e as coisas estão concentrados de forma densa e/ou geodistribuídos.
Com esse elevado volume de tráfego, entretanto, os centros de processamento e as redes que conectam esses centros aos dispositivos podem se tornar gargalos caso esses elementos não sejam projetados com capacidade adequada. Assim, esse cenário pode tornar-se incompatível com as necessidades de aplicações em Internet das Coisas, principalmente aquelas utilizadas em ambientes industriais e em ambientes de missões críticas: como elas exigem respostas mais rápidas aos estímulos do ambiente, a baixa latência se torna um requisito fundamental para esses sistemas.
Uma das alternativas que vêm sendo utilizadas para resolver essas questões de integração entre Nuvem e Internet das Coisas é o modelo de computação de névoa (fog computing). A visão da Cisco sobre de computação em névoa, por exemplo, consiste em transformar as bordas da rede em uma infraestrutura de computação distribuída, levando vantagens a bilhões de dispositivos já conectados na IdC.

## Definições de Computação em Névoa

Por ainda não ser um termo largamente difundido, não há ainda um consenso sobre qual a melhor definição para Computação em Névoa. Algumas das definições mais utilizadas por acadêmicos podem ser observadas a seguir:
* “Computação em névoa é uma proposta para habilitar computação diretamente na borda da rede, sendo capaz de entregar novas aplicações e serviços especialmente para a Internet das Coisas”
* “Um cenário em que um elevado número de dispositivos, descentralizados e ubíquos, se comunicam e potencialmente cooperam entre si e com a rede para realizar tarefas de armazenamento e processamento sem a intervenção de terceiros. Estas tarefas podem ter como objetivo dar suporte a funções básicas de rede ou a novos serviços e aplicações que executam em ambientes isolados”
* “É uma plataforma altamente virtualizada que provê computação, armazenamento e serviços de rede entre dispositivos finais e servidores tradicionais na nuvem, tipicamente, mas não exclusivamente, localizados na borda da rede.”
* “Computação em névoa é uma extensão não trivial da Computação em Nuvem — ao prover serviços computacionais, de armazenamento e de rede próximos à borda de uma rede empresarial. As características peculiares da névoa são a proximidade aos usuários finais, sua distribuição geográfica densa, e seu suporte à mobilidade”
A grande diferença conceitual entre a computação em névoa e os demais modelos de computação na borda refere-se às características específicas que um nó em uma rede de névoa (Fog Node) pode assumir. Sobre isso, Tordera afirma que é possível atribuí-lo ao conceito de Névoa para Nuvem (Fog to Cloud, F2C) onde a gestão de todos os recursos acontece de forma coordenada e em camadas (desde a nuvem até a borda), propiciando serviços colaborativos baseado em clusters de recursos e compartilhamento de informações.

## Funcionamento

A computação em névoa possui a finalidade de aumentar a capacidade do computador e o armazenamento em nuvem em toda a rede. E por isso é uma camada intermediária entre a nuvem e o hardware, permitindo um processamento, análise e armazenamento de dados de forma mais ágil. Nesse contexto, é importante salientar que a rede em névoa e a computação em nuvem, são complementares, pois a névoa permite análise a curto prazo na borda e a nuvem executa análises a longo prazo.
Em um cenário de computação em névoa, o processamento ocorre em um dispositivo inteligente (seja num hub de dados, num gateway ou roteador inteligente) gerenciando processos e serviços de maneira local, assim reduzindo o fluxo de dados enviados para nuvem. Assim, a névoa torna-se uma nova extensão de virtualização de informações e comandos para os profissionais da nuvem.
Com esses conceitos, observa-se que na prática a computação em névoa funciona para facilitar acessos. Por exemplo, num município onde os sistemas de semáforos conectados consigam detectar as luzes de emergência de uma ambulância e entender que o acesso necessita ser liberado, em vez do processo ser feito na nuvem, o que necessariamente precisa passar por todo sistema em uso, pode ser feito na névoa, onde os comandos serão feitos quase que automaticamente por essa estar mais próxima dos dispositivos que recolhem os dados.

## OpenFog Consortium e computação em névoa

OpenFog é um consórcio criado em 19 de novembro de 2015 pelos líderes de ecossistemas de internet das coisas (incluindo ARM, Cisco, Dell, Intel, Microsoft e o Laboratório Edge da Universidade de Princeton) com o objetivo de disseminar a computação em névoa através do desenvolvimento de uma arquitetura aberta e de tecnologias essenciais e a liderança necessária para utilizar todo o potencial da internet das coisas.
Umas das funções não tão explícitas do consórcio é a de prover documentação técnica, plataformas de testes e outros produtos que possibilitem as melhores práticas da computação em névoa para a indústria e para as lideranças acadêmicas e reduzir o tempo necessário para suprir a demanda do fornecimento da implantação de internet das coisas.
O OpenFog publicou documentações de descrição para os processos a qual estão trabalhando: o “OpenFog Reference Architecture” (em fevereiro de 2017), que descreve os oito pilares técnicos da arquitetura da computação em névoa: segurança, escalabilidade, aberto, autonomia, programabilidade, agilidade, hierarquia e RAS (confiabilidade referente ao termo reliability, disponibilidade referente ao termo availability e manutenção referente ao termo serviceability).

## Fogonomics

A utilização cada vez mais frequente de computação em névoa leva a um grande arcabouço de soluções e aplicações que buscam gerar valor aos negócios, especialmente aqueles que utilizam sistemas de Internet das Coisas. Esse novo cenário econômico envolvendo a névoa foi denominado por Weinman de fogonomics, ou “nevoaeconomia” em tradução livre. Fogonomics refere-se ao quanto os fatores econômicos afetam na definição das arquiteturas de névoa, às consequências econômicas aos usuários e operadores, e às interações econômicas entre os usuários finais e os provedores de serviços. Esse novo cenário gera novas oportunidades para que usuários e demais atores envolvidos nessas interações econômicas consigam otimizar custos no transporte e processamento de dados.

## Vantagens

A maior vantagem da computação em névoa é a eficácia ao reduzir a quantidade de dados que necessitam ser transportados para nuvem, para análise, processamento ou armazenamento. Mas há outras vantagens:
* Maior rapidez ao acesso aos dados pelo usuário final, a computação em névoa torna o processamento e a análise de dados mais ágil através da utilização de dispositivos (hardware) de borda, o que permite um acesso mais rápido a esses dados pelo usuário.
* Diferente da computação em nuvem que se faz necessário o acesso a um servidor central para se ter acesso aos dados, a computação em névoa permitiria o fácil acesso aos dados entre dispositivos locais, não havendo nenhuma dependência da nuvem, com isso criaria-se uma rede igualmente distribuída ajudando para uma menor paralisação.
* Na computação em névoa as análise de dados podem ser feitas com maior rapidez e com isso fornece melhores resultados, de forma que possibilitaria a análise de dados em tempo real, em uma escala verdadeiramente maciça.
* O modelo de computação em névoa, utiliza uma parte menor da banda necessária para o transporte desses dados para nuvem, pela proximidade dos dados ao usuário final.
* Com a natureza fragmentada e mais distribuída da arquitetura de névoa, faz com que sua utilização em negócios funcione de uma forma mais eficiente e econômica. Como a arquitetura se “desfaz” em dispositivos e se distribui em nuvens, a névoa fornece serviços internos altamente funcionais e ao mesmo tempo amplia a escalabilidade global do negócio, tornando a produção de produtos e serviços mais eficiente e com isso mais rentável.

## Desvantagens

A mais visível desvantagem da névoa é mostrar certos deméritos nas seleções de plataformas tecnológicas, aplicações web ou outros serviços. Porém ressalta-se outros, tais quais:
* Problemas de privacidade, pois com a névoa muitos dados são armazenados nos próprios dispositivos (que geralmente estão localizados fora das instalações de quem a usa), fato que é percebido como um risco por partes de algumas comunidades de desenvolvedores.
* Problemas de segurança e de confiança e autentificação, pois torna-se fácil enganar o endereço IP e ter acesso a dados, já que a computação em névoa não concentra formas de verificar o acesso aos dados.
* Disponibilidade e custo do hardware da computação em névoa, que por ser uma tecnologia que demanda muito da utilização do equipamento físico acaba o tornando mais custoso e complexo de ser construído.
* Problemas de análise local. Como a computação em névoa permite que os desenvolvedores acessem os dados mais importantes de outros locais, pode acabar por ter a ocorrência de pilhas de informações menos importantes nos estoques locais.
* A existência de uma proteção de dados precária, pois esses mecanismos, principalmente a criptografia, não conseguem por recursos somente da névoa proteger os dados de atacantes.

## Aplicações da computação em névoa
### Na área medica

A ideia de uso da computação em névoa na área médica consiste na implementação de um sistema de computação "supervisionada", que auxilia na gestão clínica, seja conectando dispositivos que monitoram o estado do paciente, alertando inteligentemente aos cuidadores humanos ou agindo autonomamente quando há problemas.
O desafio da implementação atual desse sistema é de que os aparelhos médicos da atualidade não se comunicam, ou seja, não há cruzamento de informações entre eles.
Uma outra abordagem na área clínica seria o monitoramento remoto do paciente, onde se utiliza de dispositivos de vestíveis inteligentes, com a capacidade de tomar algumas decisões e ter como recorrer a um humano para decisões mais difíceis. Um exemplo dessa abordagem seria que num caso de infarto, o aparelho que estivesse monitorando os batimentos cardíacos do paciente acionasse o pedido de socorro.

### No automobilismo

Em várias aplicações de computação em névoa, dados de sensor vindos do dispositivo final ou acoplado diretamente em um servidor simples (algumas vezes chamado gateway) é ativado para desencadear certas ações ou executar determinadas tarefas. Depois disso, o dado é passado a frente no fluxo para servidores mais poderosos que tipicamente residem na nuvem para análise avançada de dados.
Provavelmente o melhor exemplo de computação de borda avançada é o carro autônomo ou semi autônomo. Graças a combinação de enormes quantidades de dados, poder de processamento local crítico e uma necessidade de se reconectar para mais análise de dados avançado na nuvem, os carros autônomos são vistos como o sonho da computação de borda avançada. Jogando isso no amplo campo de diferentes tipos de elementos de computação requeridos para uma pilotagem autônoma, é fácil ver o porque de tantas empresas estarem fazendo grandes aquisições nessa área.