0

Tópicos quentes de pesquisa na área de Internet – Parte III: Cloud Computing

Daremos continuidade a série de postagens sobre os tópicos quentes de pesquisa na área de Internet, na qual já foi falada sobre CDNs e Internet das coisas. Falaremos sobre Cloud Computing ou Computação em Nuvem.

A computação em nuvem é hoje uma realidade e muitos usuários já a usam mesmo sem saber. Por exemplo, quando um usuário coloca um arquivo em um serviço do tipo Dropbox ou Google Drive, ele está fazendo uso de uma infraestrutura de computação em nuvem. Quando usa um serviço de formulários online, como SurveyMonkey ou Typeform para suas pesquisas, também está.

Apesar disso, para muitas pessoas o conceito de nuvem é um tanto quanto etéreo e abstrato. Afinal, se um usuário coloca um arquivo em um serviço em nuvem para onde isso vai? Para entender melhor é preciso voltar um pouquinho na história da computação. No início apenas grandes empresas tinham a possibilidade de possuir os mainframes, que nada mais são que computadores de grande porte com a capacidade de oferecer serviços de processamento a milhares de usuários conectados através de milhares de terminais. Nessa época, os terminais em si não tinham praticamente nenhum poder de processamento, sendo que os mainframes centralizavam todas as operações.

Com o advento dos PCs muitas das tarefas que antes eram executadas em um mainframe passaram a ser possíveis de ser realizadas localmente e assim o poder de processamento se tornou um pouco mais distribuído. Nesse contexto, o modelo cliente-servidor, que ainda hoje é o mais utilizado, tornou-se predominante. O servidor roda um ou mais serviços ou programas que compartilham recursos com os clientes. Já um cliente (que normalmente é uma máquina de usuário) inicia uma comunicação através de uma rede de computadores, solicitando conteúdo ou serviços de um servidor. Há vários exemplos de aplicações que seguem esse paradigma como o e-mail, a Web e as impressoras em rede. Inicialmente nesse modelo o servidor possuía um endereço lógico conhecido, além de se conhecer sua localização física (muitas vezes, no data center da própria empresa).

Pode-se pensar na computação em nuvem como uma evolução desse modelo no sentido de que o servidor não tem necessariamente uma localização conhecida. Além disso, os serviços prestados pelo servidor são geralmente terceirizados e executados de forma distribuída. Um usuário não é capaz de saber se apenas um servidor é responsável por toda a execução de um processamento ou se há vários envolvidos. Há a possibilidade de coordenação entre vários servidores em diferentes localidades para a “entrega” do serviço solicitado pelo cliente. Por isso, a ideia de nuvem aparece.

A computação em nuvem se baseia na virtualização de servidores, que nada mais é do que emular um servidor de forma virtual, configurando em um software de virtualização quanto de memória RAM, espaço de armazenamento, processador e sistema operacional aquela máquina vai ter. O interessante é que numa máquina real é possível ter quantas máquinas virtuais forem desejadas, com diferentes configurações que atendam o que for necessário. Basicamente esses servidores virtuais compartilham o mesmo hardware e podem rodar simultaneamente de forma otimizada. Para ajudar na compreensão analisemos um exemplo: imagine um servidor real com um processador Intel i7, 10GB de memória RAM e 1TB de espaço de armazenamento (HD). Nele foi instalado um software de virtualização e com isso foram configuradas 2 máquinas virtuais, sendo que uma roda Windows e tem disponível 8GB de RAM e 500MB de HD, enquanto a outra roda um Linux e tem disponível 4GB de RAM e 800MB de HD. Somando as capacidades das máquinas virtuais notamos que o valor é maior do que o existente na máquina real. Mas isso não é um problema porque os valores configurados são os máximos a serem atingidos no caso da outra máquina virtual estar ociosa ou superdimensionada. Quando uma máquina virtual não for mais necessária, ela pode ser simplesmente apagada da memória da máquina real.

Há várias vantagens em se usar a computação em nuvem, sendo que dentre as principais estão a alta disponibilidade dos serviços, a alta capacidade de processamento, os custos reduzidos em comparação a uma solução interna e a grande flexibilidade para ampliar ou diminuir a capacidade de processamento ou de armazenamento (o que se conhece como elasticidade). Por outro lado, há desvantagens que devem ser consideradas na hora de se adotar a nuvem como a redução de desempenho, o esforço de portabilidade de aplicações já existentes internamente para a nuvem, o atendimento a regulamentação de países específicos e os riscos de segurança, especialmente em relação ao vazamento de informações e violação à privacidade.

Hoje existem 3 categorias de serviços de computação em nuvem. O mais conhecido é o SaaS (Software as a Service) em que o provedor de serviços fornece um programa que fica em um servidor remoto e as aplicações são acessíveis por meio de dispositivos do cliente, com uso de interfaces simples, como a Web. O usuário não gerencia ou controla nenhum item da infraestrutura que hospeda o software, sendo somente possível ajustar configurações específicas a nível de usuário. Exemplos desse tipo de serviço são o Google Drive, Dropbox, SurveyMonkey e Typeform.

Ainda existem as categorias conhecidas como PaaS (Platform as a Service) e IaaS (Infrastructure as a Service) que no geral são mais voltadas para equipes de desenvolvimento de software. Uma das empresas mais conhecida que fornece esses tipos de serviço é a Amazon Web Services (AWS).

Apesar da computação em nuvem já ser uma realidade e estar sendo comercializada, ainda há muitos desafios a serem superados, os quais são tópicos relevantes de pesquisa na área da Internet e de redes de computadores. Um dos mais relevante concerne às questões de segurança, em como minimizar o vazamento de informações. Isso porque há a possibilidade de explorar vulnerabilidades em relação ao incorreto isolamento entre os servidores virtuais.

No próximo post continuaremos falando sobre tópicos quentes de pesquisa na área de Internet. Até lá!

Anúncios
2

Tópicos quentes de pesquisa na área de Internet – Parte II: Internet das Coisas

Na texto anterior foi iniciada uma série de postagens sobre os tópicos quentes de pesquisa na área de Internet, falando sobre uma visão sobre CDNs. Nesse texto, será abordado outro tópico que está em alta no momento: Internet das coisas.

Apesar do seu nome, não se trata de uma outra Internet no senso estrito da definição. Segundo Whitmore [1], mesmo não havendo uma definição universal para Internet das coisas, o conceito básico é o de que objetos do cotidiano podem ser equipados com funcionalidades de identificação, sensoriamento, roteamento e processamento que permitam a comunicação entre eles e com outros dispositivos e serviços através da Internet para atingir algum objetivo útil. Um exemplo engraçado e até mesmo assustador é explorado por Demi Getschko em sua coluna, onde a geladeira, sabendo a data de aniversário de seu dono, encomenda a comida para uma festa surpresa e convida seus amigos.

As ideias em que se baseiam a Internet das coisas não são novas. Por muitos anos, tecnologias como RFID e rede de sensores têm sido usadas no contexto industrial para rastreamento de itens. A Internet das coisas representa uma evolução no uso dessas tecnologias em termos de quantidade e variabilidade de dispositivos, assim como da comunicação entre eles através da Internet [1].

O universo da Internet das coisas é bastante heterogêneo devido ao uso de vários dispositivos, com diferentes capacidades. Por exemplo, uma das aplicações possíveis da Internet das coisas seria o monitoramento de certas propriedades do meio ambiente para averiguar se estão adequadas para a plantação de uma espécie específica em uma determinada região. Através desse monitoramento, seria possível tomar as atitudes cabíveis a fim de tornar a área mais propícia para a plantação. Além disso, o próprio dispositivo poderia ser capaz de tomar tais providências. Nesse exemplo específico, são necessários diferentes sensores, como de luminosidade, de umidade, de temperatura, etc, para monitorar o ambiente. E então, dependendo da umidade do solo e da temperatura, os sensores poderiam acionar um outro dispositivo que garantisse a irrigação dessa plantação. Todos esses aparelhos devem ser capazes de se comunicar através da rede para enviar e receber as informações pertinentes.

De uma forma resumida, Salman [2] coloca que a Internet das coisas ainda tem vários desafios a enfrentar para que possa se popularizar, como mobilidade, confiabilidade, escalabilidade, gerenciamento, disponibilidade, interoperabilidade, segurança e privacidade.

Quanto à mobilidade, os dispositivos da Internet das coisas precisam se mover livremente e mudar de rede e o seu endereço IP baseadas em sua localização. Assim, o protocolo de roteamento tem que lidar com muita sobrecarga para refazer as rotas cada vez que um dispositivo se conecta ou se desconecta de uma rede. Além disso, a mobilidade pode resultar em uma mudança de prestador de serviços, o que pode adicionar outra camada de complexidade devido à interrupção do serviço e mudança de rede [2].

A confiabilidade significa que um sistema deve estar trabalhando perfeitamente e entregando tudo o que foi especificado para que ele faça de forma correta [2]. É um requisito crítico em aplicações que requerem respostas de emergência, como por exemplo, sistemas de healthcare nos quais há alguma vida assistida. Normalmente, são colocados sensores nos equipamentos de monitoramento utilizados pelos pacientes. A informação recolhida por estes sensores é disponibilizada através da Internet para médicos e membros da família, a fim de melhorar o tratamento e a capacidade de resposta a incidentes [1]. Em casos como o exemplificado, o sistema deve ser altamente confiável e rápido na coleta de dados, comunicando e tomando decisões, visto que eventuais erros podem levar a cenários desastrosos, como a morte de uma pessoa.

A escalabilidade é outro desafio de aplicações de Internet das coisas. Uma vez que há milhões de dispositivos conectados em uma mesma rede, gerenciar sua distribuição não é uma tarefa fácil. Além disso, as aplicações de Internet das coisas devem ser tolerantes a novos serviços e à adesão constante de outros dispositivos na rede e, portanto, devem ser projetadas para permitir a extensão de serviços e de operações [2].

Mais um desafio na Internet das coisas é o gerenciamento desse grande número de dispositivos interconectados, mantendo o controle das falhas, das configurações, da contabilidade, do desempenho e da segurança, conhecido como FCAPS na área de redes [2]. As soluções convencionais de gerenciamento como o Simple Network Management Protocol (SNMP) podem não ser suficientes para dar conta de toda essa complexidade e também podem ser “pesadas” demais para alguns dispositivos.

A questão de disponibilidade em Internet das coisas envolve questões de software e hardware. A disponibilidade de software significa que o serviço é prestado para quem está autorizado a recebê-lo, enquanto a disponibilidade de hardware significa que os dispositivos existentes são de fácil acesso e são compatíveis com a funcionalidade e protocolos da Internet das coisas. Além disso, esses protocolos devem ser compactos para serem capazes de ser inseridos em dispositivos restritivos em termos de memória e uso de energia [2].

A interoperabilidade, por sua vez, é a ideia de que os dispositivos e protocolos heterogêneos precisam ser capazes de trabalhar uns com os outros. Este é um desafio devido ao grande número de diferentes plataformas utilizadas no universo da Internet das coisas. A interoperabilidade deve ser tratada tanto pelos desenvolvedores de aplicativos quanto pelos fabricantes de dispositivos, a fim de que os serviços funcionem, independentemente da especificação da plataforma ou do hardware utilizado pelo cliente [2].

Na referência [2] é apresentado o cenário de protocolos usados no universo da Internet das coisas, conforme pode ser observado na tabela abaixo.

protocolosiot

Dentre eles, há ainda um uso grande de protocolos proprietários. O seu uso dificulta a interoperabilidade entre os diversos dispositivos, ou seja, torna-se mais difícil a comunicação entre eles. Além disso, os protocolos usualmente utilizados em computadores e servidores nem sempre são adequados às necessidades dos dispositivos da Internet das coisas. Comumente há restrições em relação à memória e ao consumo de energia neles. O cenário é bastante complexo e têm suscitado muitas pesquisas sobre o tema.

Na parte de protocolos de rede, há um grupo do Internet Engineering Task Force (IETF) chamado 6Lo trabalhando na padronização de alternativas mais enxutas do IPv6 para o uso com as diferentes tecnologias do universo da Internet das coisas. A padronização do 6LowPan, que é um protocolo usado para redes com o padrão IEEE 802.15.4, é um resultado desse grupo. O IEEE 802.15.4, por sua vez, é um padrão que especifica a camada física e efetua o controle de acesso para redes sem fio pessoais de baixas taxas de transmissão.

A criptografia é vista como uma questão chave para garantir a segurança da informação no universo da Internet das coisas [1]. Porém, muitos dispositivos dentro desse cenário não são poderosos o suficiente para aguentar criptografia robusta. Para permitir criptografia no universo da Internet das coisas, os algoritmos precisam ser mais eficientes e usar menos energia, além de ser necessária uma forma eficiente de distribuição das chaves criptográficas.

Finalmente, quanto mais objetos tornam-se rastreáveis através da Internet das coisas, mais sérias tornam-se as ameaças à privacidade. É importante que esteja bem clara e definida para os usuários de quem é a propriedade dos dados coletados pelos dispositivos. Uma ideia é interessante é a de que os objetos inteligentes na Internet das coisas sejam equipados com políticas de privacidade. Quando dois objetos entram em contato, eles podem verificar a política de privacidade um do outro para checar a compatibilidade entre elas antes de se comunicarem [1].

Uma visão de futuro para a Internet das coisas é o da Web das coisas, que propõe o uso de padrões web para integrar objetos inteligentes com a World Wide Web. Através do uso dessas tecnologias será mais fácil para os desenvolvedores construírem aplicações utilizando objetos inteligentes, uma vez que os protocolos atuais podem permitir a interoperabilidade e comunicação mais facilmente de diferentes dispositivos [1].

Outra visão de futuro que envolve a integração de ainda mais dispositivos na Internet das coisas é a Internet das nano-coisas. A Internet de nano-coisas pode ser descrita como a interligação de dispositivos em nanoescala com redes de comunicação e a Internet. Embora a proposta seja de que estes dispositivos se comuniquem através sinais eletromagnéticos, existem inúmeros desafios técnicos que devem ser superados antes que a ideia se torne viável [1].

Continuem acompanhando essa série de posts, onde continuarei a falar sobre os tópicos quentes de pesquisa na área de Internet!

Bibliografia:

[1] Whitmore, A. et al. The Internet of Things–A survey of topics and trends. Information Systems Frontiers 17, 2 (April 2015), 261-274. Disponível em: < http://dl.acm.org/citation.cfm?id=2750627 >. Acesso em: 24 out. 2016.

[2] Salman, T. Internet of Things Protocols and Standards. Disponível em < http://www.cse.wustl.edu/~jain/cse570-15/ftp/iot_prot/ >. Acesso em: 14 out. 2016.

0

Neutralidade de rede: interesses em jogo e questões em aberto

No início do desenvolvimento das redes de computadores, existiam diversas delas desconectadas, usando diferentes tecnologias e protocolos que se comunicavam. A Internet nasceu como um projeto militar, uma tentativa de conectar várias redes em lugares distintos para o intercâmbio de informações; ser uma “rede de redes”. Logo foi amplamente adotada por acadêmicos e cresceu como uma forma de democratização ao conhecimento, permitindo o compartilhamento de descobertas entre pesquisadores de diversos países. Com a criação da Web, a Internet se popularizou e atingiu às demais camadas da população, proporcionando acesso a uma quantidade inimaginável de conteúdos antes restritos a uma pequena parcela e também permitindo a criatividade e criação de novos aplicativos que, depois, vieram a se tornar empresas lucrativas.

Pode-se dizer que hoje a Internet é um dos meios importantes para a disseminação do conhecimento para todos, promovendo a inclusão de pessoas em diversos processos existentes no mundo. Para que a Internet continue a ser esse ambiente de inclusão das pessoas na era do conhecimento, bem como promotor da difusão de informações e da inovação, é necessário manter algumas características técnicas que foram essenciais durante seu desenvolvimento e crescimento. Uma dessas características que suscita muito debate é a neutralidade de rede.

Uma rede neutra é aquela em que não há o favorecimento de uma aplicação em detrimento de outra. A neutralidade de rede pode ser melhor definida como um princípio de projeto de redes de computadores. A ideia é a de que uma rede de informação pública útil aspira tratar todos os conteúdos, sites e plataformas de forma igual. Isso significa, por exemplo, que um pacote transportando conteúdos de uma ligação por voz não pode ser transmitido mais lentamente que um pacote de mesmo tamanho contendo informações de um e-mail.

Apesar desse conceito não ser algo novo, ele tem causado polêmica no Brasil e em outros países e cada vez mais atraído a atenção da opinião pública internacional. De um lado, provedores de conteúdo e comunidade técnica defendem o modelo de neutralidade, de outro lado, provedores de acesso, em sua maioria empresas de telecomunicações, vislumbram formas de maximizar seus lucros por meio da cobrança por vias rápidas (“fast lanes”) para o tráfego de dados, ou por meio de outros artifícios que beneficiam ou prejudicam certo tipo, origem ou destino de tráfego de dados em detrimento dos demais.

Várias pesquisas científicas apontam que há diversas vantagens em se manter a Internet neutra. Dentre as principais estão:

  • Maior incentivo para inovação através da criação de aplicações disruptivas e de novas tecnologias de rede, se comparado com uma arquitetura fechada;
  • Possibilidade de concorrência entre novos entrantes e empresas já estabelecidas, seja na área de aplicações, seja no provimento de acesso à Internet; e
  • Acesso a qualquer serviço que o usuário desejar sem a necessidade de pagamento adicional para esse fim.

Porém, a manutenção de uma Internet neutra não é algo simples, uma vez que há diversos atores nesse ecossistema com diferentes interesses em relação a esse tópico. De uma forma resumida os interesses em jogo para cada um dos atores da rede são:

  • Provedores de Acesso (por exemplo, Vivo, NET, Oi): ao serem impedidos de discriminar conteúdos e aplicações, eles perdem um instrumento de controle de suas redes, o que pode levar a redução de lucros e diminuição do potencial de eficiência de suas redes. Essas perdas podem levar à redução de incentivos para inovação na infraestrutura de telecomunicações e à redução na geração de empregos do setor;
  • Grandes Provedores de Conteúdo: os grandes da Internet (por exemplo, Google, Facebook, Netflix) não precisariam mais negociar condições especiais para o tráfego de seus conteúdos com provedores de acesso, e assim podem alocar mais recursos em inovação e geração de empregos. Por outro lado, a proibição de acordos para priorização de tráfego reduz os instrumentos disponíveis para que eles mantenham sua hegemonia, tendo em vista que pequenos provedores terão condições de oferta semelhantes;
  • Pequenos Provedores de Conteúdo: são os grandes beneficiários da neutralidade da rede. Com o tráfego de seus conteúdos sendo tratados da mesma forma que o dos grandes, há uma redução nas barreiras de entrada no mercado. Pequenos provedores de conteúdo não vão precisar negociar com provedores de acesso para terem uma oferta de qualidade de seus aplicativos, e a maior diversidade de iniciativas levará a um aumento na inovação como um todo; e
  • Usuários: com a neutralidade da rede, usuários terão acesso a conteúdos mais diversificados, impedindo efeitos de filtro de conteúdo que são hoje aplicados pelos grandes provedores de conteúdo. Há também um ganho na capacidade de autonomia, visto que usuários terão maiores incentivos para também se tornarem provedores de conteúdo. Há também ganhos expressivos no campo da liberdade de expressão, já que a neutralidade da rede impediria que provedores de acesso criem bloqueios de conteúdo.

Hoje em dia há pelo menos três formas de um provedor de acesso discriminar um conteúdo ou aplicação específica na Internet, violando a neutralidade de rede:

  • Bloqueio total da aplicação e/ou conteúdo na Internet;
  • Redução da sua velocidade de acesso em comparação a outras aplicações e/ou conteúdos; e
  • Cobrança de um preço diferente pelo acesso àquele conteúdo e/ou aplicação em comparação aos demais.

No Brasil, a Lei nº 12.965, conhecida como Marco Civil da Internet, está em vigor desde 2013 e garante a neutralidade de rede na Internet brasileira (Art. 3º, IV). De acordo com a mesma lei (Art. 9º), “o responsável pela transmissão, comutação ou roteamento tem o dever de tratar de forma isonômica quaisquer pacotes de dados, sem distinção por conteúdo, origem e destino, serviço, terminal ou aplicação”. Apenas há a previsão de discriminação ou degradação do tráfego em casos de requisitos técnicos indispensáveis à prestação adequada dos serviços e aplicações; e priorização de serviços de emergência (Art. 9º, § 1º).

Apesar do Brasil já contar com uma lei que protege a neutralidade de rede, há duas questões relevantes nesse área que continuam ainda em aberto. A primeira delas é como verificar tecnicamente se a neutralidade de rede tem sido cumprida pelas empresas e a outra é se a discriminação de tráfego ocorre apenas nos casos previstos pelo Marco Civil da Internet. Esse debate ainda vai dar muito pano para manga antes de ser superado.

Referências:

WU, T. Network Neutrality, Broadband Discrimination. Journal of Telecommunications and High Technology Law, Vol. 2, p. 141, 2003.

WU, T. Network Neutrality FAQ. Disponível em: < http://www.timwu.org/network_neutrality.html >. Acessado em: 06 jul. 2016.

PRESIDÊNCIA DA REPÚBLICA. Lei Nº 12.965, de 23 de abril de 2014. Disponível em: < http://www.planalto.gov.br/ccivil_03/_ato2011-2014/2014/lei/l12965.htm >. Acessado em: 06 jul. 2016.

RAMOS, P. Neutralidade da Rede. Disponível em: < http://www.neutralidadedarede.com.br/ >. Acessado em: 06 jul. 2016.