Gerenciamento e Elasticidade de Recursos Computacionais para Aplicações de IoT em Ambientes Multi-Cloud
Internet das Coisas, Computação em Nuvem, Multi-Cloud, Balanceamento de Carga, Elasticidade
A Internet das Coisas (do inglês, Internet of Things –IoT) é um paradigma emergente o qual abrange uma infraestrutura de hardware , software e serviços que conectam objetos físicos, denominados como coisas, à rede de computadores. Esse paradigma preconiza um mundo onde diversos objetos conectados a internet interagem entre si, compartilhando informações e reagindo de forma autônoma a eventos do mundo físico. Tal paradigma é caracterizado por uma enorme heterogeneidade, uma vez que os objetos físicos e os componentes de software que os gerenciam são desenvolvidos por diversos fabricantes e sem padronização. Outra característica marcante desse paradigma é a dinamicidade, em IoT, os objetos podem tornar-se indisponíveis devido a vários fatores, tais como: mobilidade dos dispositivos, ausência de rede, disponibilidade energética, etc. De forma similar, novos dispositivos antes desconectados podem vir a se tornar disponíveis no ambiente. Essas características acabam por dificultar o desenvolvimento de aplicações no domínio de IoT. Nessa perspectiva, plataformas de middleware tem surgido como soluções promissoras para facilitar o desenvolvimento de aplicações. Tais plataformas oferecem interfaces padronizadas para acesso aos dispositivos, abstraindo para os desenvolvedores detalhes de comunicação via rede, protocolos e formatos de dados utilizados pelos diversos dispositivos. Dado a dinamicidade do ambiente tais plataformas precisam se adaptar a quantidade crescente de dispositivos de forma rápida e eficiente. Devido a sua capacidade de provê recursos computacionais de forma rápida e prática, o paradigma de computação em nuvem (cloud computing) completa o paradigma de IoT, no sentido de provê recursos computacionais sob demanda para esse ambiente altamente dinâmico. No entanto nem sempre uma única plataforma de computação em nuvem é capaz de satisfazer os requisitos de aplicações no domínio de IoT em termos de: disponibilidade, confiabilidade, tolerância falhas, etc. O que leva a necessidade de utilizar serviços de mais de uma plataforma de nuvem simultaneamente, conceito conhecido como multi-cloud. Um levantamento feito recentemente mostrou que a maioria das propostas existentes na literatura nessa direção ainda estão em fase de maturação, essas propostas não são capazes ainda de se beneficiar plenamente dos benefícios que o paradigma de computação em nuvem pode provê ao paradigma de IoT, principalmente no que diz respeito a escalabilidade e utilização de múltiplas plataformas de computação em nuvem. Nessa perspectiva o seguinte trabalho propõe uma arquitetura para gerenciar a elasticidade de recursos consumida por aplicações de IoT em ambientes de multi-cloud. A arquitetura tem o potencial de provê facilidades para monitoramento e elasticidade de recursos em múltiplas plataformas de computação em nuvem, além de gerenciar a distribuição da carga de trabalho entre as aplicações e fornecer um sistema de armazenamento de dados escalável e distribuído que pode ser utilizado para armazenamento dos dados gerenciados pelas aplicações.