caos d2d: uma solução para o loading de …...caos d2d: uma solução para o loading de métodos...

5
CAOS D2D: Uma Solução para Offloading de Métodos entre Dispositivos Móveis Gabriel B. dos Santos, Paulo A. L. Rego, Francisco A. A. Gomes e Fernando Trinta [email protected],[email protected],[email protected],[email protected] Universidade Federal do Ceará Grupo de Redes de Computadores, Engenharia de Software e Sistemas (GREat) Fortaleza, Ceará ABSTRACT In spite of the increasing processing power of smart handheld devi- ces, their capacity is always a few steps behind their contemporary desktop counterparts. Besides, mobile devices have limited power supplies, which leads software designers to keep energy consump- tion in mind. An alternative to help overcome this issue is using the offloading (or cyber foraging) technique, which allows a mobile device to offload an expensive task to another device, for the sake of performance or energy saving. This second device may be a remote server hosted in a public cloud, or in the same Wi-Fi network as the first mobile device (i.e., a cloudlet). This paper presents CAOS D2D: a framework which allows a mobile device to offload tasks to another mobile device, as well as acting as an offloading server too. We briefly describe the development process of our implementation, starting from another offloading solution developed by our rese- arch group. We also describe CAOS D2D architecture and provide a small usage example with code snippets. And finally, we define some future works to guide the evolution path of our solution. KEYWORDS Mobile Cloud Computing, Offloading, Device-to-Device 1 INTRODUÇÃO O uso de tecnologias digitais está cada vez mais presente na socie- dade mundial. Essa tendência é fortemente representa pelo aumento considerável no uso de aplicativos móveis com acesso à Internet por praticamente todas as camadas sociais. Aplicativos como o WhatsApp Messenger 1 tornaram-se quase que imprescindíveis para comunicação em nosso cotidiano. Essa massificação foi conquistada a partir da popularização dos smartphones, um modelo simplificado de aquisição de aplicações a partir das lojas virtuais, e da diversi- dade de aplicações como jogos em tempo real, redes sociais, dentre outras. Porém, o grande diferencial é a possibilidade do usuário ainda acessar suas aplicações, mesmo enquanto o mesmo esteja em deslocamento. Além disso, dispositivos móveis carregam diferentes sensores que permitem obter informações contextuais relevantes, e que podem ser usadas para melhorar a experiência do usuário ao usar um determinado aplicativo. A mobilidade e uso de informa- ções contextuais são características chaves para a concretização do 1 http://www.whatsapp.com In: XVI Workshop de Ferramentas e Aplicações (WFA 2017), Gramado, Brasil. Anais do XXIII Simpósio Brasileiro de Sistemas Multimídia e Web: Workshops e Pôsteres. Porto Alegre: Sociedade Brasileira de Computação, 2017. © 2017 SBC – Sociedade Brasileira de Computação. ISBN 978-85-7669-380-2. cenário de computação ubíqua, onde o usuário usa suas aplicações e dados, em uma interação natural. Porém a mobilidade tem seu preço. Dispositivos móveis precisam ser compactos para serem portáteis, e com isso, possuem limitações em relação aos recursos de processamento e armazenamento. Além disso, seu funcionamento depende de uma bateria, que em geral tem autonomia de funcionamento de poucas horas. Tais restrições são ainda mais problemáticas quando as aplicações têm uma ten- dência forte de uso intensivo de dados e sensores embutidos nos dispositivos. Exemplos destas aplicações incluem jogos e realidade aumentada (e.g., Pokémon Go 2 ), processamento de imagens e lin- guagem natural (e.g., Google Translator 3 ) e computação vestível (e.g., Nike+ Run Club 4 ). Uma das possíveis soluções para contornar este problema é a Computação Móvel em Nuvem (do inglês, Mobile Cloud Computing - MCC). Segundo Dinh et al. [3], MCC tem por objetivo provisionar um conjunto de serviços equivalentes aos da nuvem, adaptados à capacidade de dispositivos com recursos restritos, de modo a trazer melhorias de desempenho das aplicações ou economia de energia nos dispositivos. Em geral isso é alcançado por meio de uma técnica conhecida como offloading, em que processos ou dados são transferidos de um dispositivo mais fraco (e.g., smartphone) para um dispositivo mais potente (e.g., máquina virtual na nuvem). Segundo Satyanarayanan [15], a técnica de offloading tem resultados ainda melhores quando se dá entre dispositivos próximos, uma vez que a latência de comunicação é um dos principais empecilhos para que a migração de tarefas seja realmente eficiente [2, 5]. Com isso, propôs-se o conceito de cloudlet, uma infraestrutura para processar tarefas ou armazenar dados em nome de dispositivos mais fracos, mas que encontra-se na mesma rede local do dispositivo móvel. Um cloudlet pode ser tanto um servidor dedicado, um notebook pessoal de um usuário, ou mesmo outro dispositivo móvel que deseje ofertar seus recursos para ajudar dispositivos mais fracos. Nesse caso, o offloading é dito como device-to-device, ou D2D. O suporte a offloading já foi proposto por vários estudos [1, 6, 8, 11, 18]. Um deles é o CAOS (Context Acquisition and Offloading System)[8], uma plataforma para offloading de métodos em aplica- ções Android, e que também permite o compartilhamento de dados contextuais de diversos usuários em cloudlets. O CAOS permite que o desenvolvedor marque quais métodos se deseja migrar para um cloudlet, e de acordo com regras sobre o tipo de processamento, parâmetros utilizados e a condição da rede, o sistema decide ou não migrar o processo. Vários experimentos realizados com o CAOS 2 http://www.pokemongo.com 3 http://translate.google.com 4 http://www.nike.com.br/running/nrc-app Anais do XXIII Simpósio Brasileiro de Sistemas Multimídia e Web: Workshops e Pôsteres 164

Upload: others

Post on 10-Mar-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

CAOS D2D: Uma Solução para Offloading de Métodos entreDispositivos Móveis

Gabriel B. dos Santos, Paulo A. L. Rego, Francisco A. A. Gomes e Fernando [email protected],[email protected],[email protected],[email protected]

Universidade Federal do CearáGrupo de Redes de Computadores, Engenharia de Software e Sistemas (GREat)

Fortaleza, Ceará

ABSTRACTIn spite of the increasing processing power of smart handheld devi-ces, their capacity is always a few steps behind their contemporarydesktop counterparts. Besides, mobile devices have limited powersupplies, which leads software designers to keep energy consump-tion in mind. An alternative to help overcome this issue is usingthe offloading (or cyber foraging) technique, which allows a mobiledevice to offload an expensive task to another device, for the sake ofperformance or energy saving. This second device may be a remoteserver hosted in a public cloud, or in the same Wi-Fi network asthe first mobile device (i.e., a cloudlet). This paper presents CAOSD2D: a framework which allows a mobile device to offload tasks toanother mobile device, as well as acting as an offloading server too.We briefly describe the development process of our implementation,starting from another offloading solution developed by our rese-arch group. We also describe CAOS D2D architecture and providea small usage example with code snippets. And finally, we definesome future works to guide the evolution path of our solution.

KEYWORDSMobile Cloud Computing, Offloading, Device-to-Device

1 INTRODUÇÃOO uso de tecnologias digitais está cada vez mais presente na socie-dade mundial. Essa tendência é fortemente representa pelo aumentoconsiderável no uso de aplicativos móveis com acesso à Internetpor praticamente todas as camadas sociais. Aplicativos como oWhatsApp Messenger1 tornaram-se quase que imprescindíveis paracomunicação em nosso cotidiano. Essa massificação foi conquistadaa partir da popularização dos smartphones, um modelo simplificadode aquisição de aplicações a partir das lojas virtuais, e da diversi-dade de aplicações como jogos em tempo real, redes sociais, dentreoutras. Porém, o grande diferencial é a possibilidade do usuárioainda acessar suas aplicações, mesmo enquanto o mesmo esteja emdeslocamento. Além disso, dispositivos móveis carregam diferentessensores que permitem obter informações contextuais relevantes, eque podem ser usadas para melhorar a experiência do usuário aousar um determinado aplicativo. A mobilidade e uso de informa-ções contextuais são características chaves para a concretização do1http://www.whatsapp.com

In: XVI Workshop de Ferramentas e Aplicações (WFA 2017), Gramado, Brasil. Anaisdo XXIII Simpósio Brasileiro de Sistemas Multimídia e Web: Workshops e Pôsteres.Porto Alegre: Sociedade Brasileira de Computação, 2017.© 2017 SBC – Sociedade Brasileira de Computação.ISBN 978-85-7669-380-2.

cenário de computação ubíqua, onde o usuário usa suas aplicaçõese dados, em uma interação natural.

Porém a mobilidade tem seu preço. Dispositivos móveis precisamser compactos para serem portáteis, e com isso, possuem limitaçõesem relação aos recursos de processamento e armazenamento. Alémdisso, seu funcionamento depende de uma bateria, que em geraltem autonomia de funcionamento de poucas horas. Tais restriçõessão ainda mais problemáticas quando as aplicações têm uma ten-dência forte de uso intensivo de dados e sensores embutidos nosdispositivos. Exemplos destas aplicações incluem jogos e realidadeaumentada (e.g., Pokémon Go2), processamento de imagens e lin-guagem natural (e.g., Google Translator3) e computação vestível(e.g., Nike+ Run Club4).

Uma das possíveis soluções para contornar este problema é aComputação Móvel em Nuvem (do inglês, Mobile Cloud Computing- MCC). Segundo Dinh et al. [3], MCC tem por objetivo provisionarum conjunto de serviços equivalentes aos da nuvem, adaptadosà capacidade de dispositivos com recursos restritos, de modo atrazer melhorias de desempenho das aplicações ou economia deenergia nos dispositivos. Em geral isso é alcançado por meio de umatécnica conhecida como offloading, em que processos ou dados sãotransferidos de um dispositivomais fraco (e.g., smartphone) para umdispositivo mais potente (e.g., máquina virtual na nuvem). SegundoSatyanarayanan [15], a técnica de offloading tem resultados aindamelhores quando se dá entre dispositivos próximos, uma vez quea latência de comunicação é um dos principais empecilhos paraque a migração de tarefas seja realmente eficiente [2, 5]. Com isso,propôs-se o conceito de cloudlet, uma infraestrutura para processartarefas ou armazenar dados em nome de dispositivos mais fracos,mas que encontra-se na mesma rede local do dispositivo móvel. Umcloudlet pode ser tanto um servidor dedicado, um notebook pessoalde um usuário, ou mesmo outro dispositivo móvel que deseje ofertarseus recursos para ajudar dispositivos mais fracos. Nesse caso, ooffloading é dito como device-to-device, ou D2D.

O suporte a offloading já foi proposto por vários estudos [1, 6,8, 11, 18]. Um deles é o CAOS (Context Acquisition and OffloadingSystem) [8], uma plataforma para offloading de métodos em aplica-ções Android, e que também permite o compartilhamento de dadoscontextuais de diversos usuários em cloudlets. O CAOS permite queo desenvolvedor marque quais métodos se deseja migrar para umcloudlet, e de acordo com regras sobre o tipo de processamento,parâmetros utilizados e a condição da rede, o sistema decide ou nãomigrar o processo. Vários experimentos realizados com o CAOS

2http://www.pokemongo.com3http://translate.google.com4http://www.nike.com.br/running/nrc-app

Anais do XXIII Simpósio Brasileiro de Sistemas Multimídia e Web: Workshops e Pôsteres

164

WebMedia’2017: Workshops e Pôsteres, WFA, Gramado, Brasil Santos et al. 2017

mostraram a eficiência da solução [7, 8], porém, sua atual versãoimpõe restrições no tipo de máquina utilizada como cloudlet, o queimpede o offloading de tarefas entre dois smartphones. Com isso,em um cenário como de, por exemplo, uma catástrofe natural, ainteração entre dispositivos seria prejudicada, uma vez que a infra-estrutura estaria possivelmente perdida, e a comunicação ad-hocseria a única disponível.

Este trabalho aborda essa questão, ao apresentar o CAOS D2D(CAOS Device-to-Device), uma extensão do CAOS com suporte aooffloading de tarefas entre dispositivos móveis baseados na plata-forma Android. O CAOS D2D parte da refatoração de componentesexistentes no CAOS, de forma a tornar o offloading entre disposi-tivos móveis possível sem a infraestrutura de cloudlets necessáriano CAOS. Dessa forma, o CAOS D2D nasce como uma versão com-plementar do CAOS, que possibilita que uma grande variedade dedispositivos possam contribuir para melhorar o desempenho deuma aplicação móvel, o que representa mais um passo dentro doobjetivo das aplicações distribuídas e ubíquas.

A partir desta introdução, é apresentado um referencial teóricosobre Mobile Cloud Computing na Seção 2. A Seção 3 discute ostrabalhos relacionados; a Seção 4 introduz a solução CAOS D2D,sua arquitetura e principais componentes. Por fim, a Seção 5 concluio trabalho e apresenta trabalhos futuros para evolução da soluçãoproposta.

2 MOBILE CLOUD COMPUTINGMCC é um paradigma que une duas tecnologias heterogêneas: com-putaçãomóvel e computação em nuvem [5]. Esse paradigma destina-se a mitigar as limitações dos dispositivos móveis em relação aoconsumo de energia e desempenho, utilizando recursos de nuvenspara aumentar tanto o poder de processamento como a capacidadede armazenamento dos dispositivos.

Existem várias definições para MCC. Em [17], os autores afir-mam que MCC é o mais recente paradigma computacional prático,que estende a visão da computação utilitária de computação emnuvem para aumentar os recursos limitados dos dispositivos móveis.Segundo [14], MCC é uma rica tecnologia de computação móvelque utiliza recursos elásticos unificados de nuvens variadas e tec-nologias de rede com funcionalidade irrestrita, armazenamento emobilidade para servir uma multidão de dispositivos móveis emqualquer lugar, a qualquer momento através do canal de Ether-net ou Internet independentemente de ambientes heterogêneos eplataformas baseadas no princípio pay-as-you-go.

2.1 OffloadingExistem vários temas de pesquisa relacionados a MCC, sendo des-tacado na literatura o offloading [5], técnica que visa aumentar odesempenho e reduzir o consumo de energia de dispositivos móveispor meio da migração de processamento ou dados de dispositivosmóveis para outras infraestruturas, commaior poder computacionale armazenamento. É importante destacar que offloading é diferentedo modelo cliente-servidor tradicional, em que os clientes sempredelegam a responsabilidade de realizar o processamento ao servidor.No offloading, quando não há conexão entre dispositivo móvel eservidor, o processamento é realizado no dispositivo. Quando existe

a conexão e existem ganhos em se migrar dados ou processamento,o offloading é realizado.

Tipicamente, existem dois tipos principais de offloading: proces-samento e dados [5]. O offloading de processamento é a entregade um processamento computacional do dispositivo móvel paraoutro ambiente de execução (e.g. laptop, máquina virtual na nuvemou outro dispositivo móvel), a fim de preservar a carga da bate-ria e aumentar a capacidade computacional. O offloading de dadostem por objetivo estender a capacidade de armazenamento do dis-positivo móvel. Assim, retira-se o armazenamento do dispositivoe enviam-se os dados para um ambiente com maior capacidadede armazenamento, com a possibilidade também de enviar dadosprocessados de volta para o dispositivo móvel [7].

2.2 Onde Executar o Offloading?Existem várias questões de pesquisa relacionadas ao offloading.Dentre as mais importantes, pode-se citar: Por que, Quando, Comoe Onde executar o offloading [5, 10]. Este trabalho foca na últimaquestão. Em geral, a execução dessa técnica pode acontecer em trêslocais possíveis: (i) uma nuvem pública; (ii) um cloudlet; e (iii) outrodispositivo móvel.

Na execução em nuvem pública, os desenvolvedores de aplica-tivos móveis podem utilizar os serviços da nuvem para obter umbom desempenho, assim como elasticidade e conectividade a redessociais para melhorar os serviços dos aplicativos. A execução emcloudlet é proposta em [16] e tem como principal objetivo aproxi-mar os serviços de offloading dos dispositivos móveis para seremexecutados em máquinas locais, ao invés de utilizar uma nuvempública. Essas máquinas podem ser desktops ou laptops, que estãodisponíveis em uma mesma rede local sem fio que os usuários dasaplicações móveis.

Executar o offloading em outro dispositivo móvel com maiorpoder computacional também é possível. Nessa abordagem, os dis-positivos móveis são normalmente conectados usando uma redepeer-to-peer, criando uma nuvem de dispositivos (nuvem móvel),em que dispositivos mais robustos cedem parte dos seus recursoscomputacionais, para resolver uma tarefa em comum a todos osoutros dispositivos [5] mais fracos. Existem diversas tecnologiasque podem ser usadas para a conexão entre os dispositivos (e.g.,Wi-Fi, Bluetooth e ZigBee), como ilustrado na Figura 1.

Figura 1: Ambiente de execução de offloading formado poruma nuvem de dispositivos.

Anais do XXIII Simpósio Brasileiro de Sistemas Multimídia e Web: Workshops e Pôsteres

165

CAOS D2D WebMedia’2017: Workshops e Pôsteres, WFA, Gramado, Brasil

3 TRABALHOS RELACIONADOSO CAOS D2D tem como principal requisito de projeto oferecersuporte a offloading entre dispositivos móveis. Tal suporte é pro-posto por vários estudos [1, 6, 8, 11, 18]. O framework propostoem [1] oferece suporte a offloading D2D, em um modelo de CloudFederation, de maneira que os servidores oferecem serviços dentroda rede, como uma nuvem. A solução conta com mecanismos deprivacidade e incentivos, porém o framework pressupõe que hajaum diretório central de cloudlets móveis dentro da rede, o que reduza disponibilidade do serviço.

A abordagem proposta em [11] propõe um framework para off-loading D2D, usando o protocolo OpenFlow e redes definidas porsoftware para abstrair a camada de rede entre os dispositivos. Entre-tanto, as implementações existentes do OpenFlow para dispositivosmóveis são relativamente recentes, e ainda enfrentam alguns pro-blemas [9]. A granularidade da solução é a nível de camadas deaplicação, separadas em front-end e back-end. A camada back-endda aplicação pode ser executada remotamente em outro dispositivomóvel.

O framework Hyrax [18] é voltado para crowdsourcing, baseando-se em Map Reduce, derivado do Hadoop5. Apesar da proposta decrowdsourcing em dispositivos móveis alcançar resultados satisfató-rios, a arquitetura proposta conta com uma série de pressupostosque nem sempre podem ser cumpridos:

• A necessidade de um nó central que não pode falhar.• Os dados não podem sofrer alterações durante o processa-

mento.• Todos os dispositivos dentro da nuvem móvel devem pos-

suir de antemão os dados a serem processados.A arquitetura AnyRun Computing (ARC) [6] propõe um modelo

de offloading D2D dinâmico e oportunista, com granularidade deoffloading a nível de método. Da mesma forma que o CAOS (D2D),o desenvolvedor de aplicações deve anotar os métodos propensos aoffloading.

3.1 CAOSUm trabalho que merece especial atenção é o CAOS. Uma plata-forma de software desenvolvida dentro do nosso grupo de pesquisa,com a finalidade de ajudar no desenvolvimento de aplicações mó-veis e sensíveis ao contexto da plataforma Android; com suporte aomecanismo de offloading para delegar a migração e o processamentode dados contextuais de dispositivos móveis para plataformas denuvem [8]. O CAOS tem como base duas soluções: (i) Loosely Cou-pled Context Acquisition Middleware (LoCCAM) [4, 12], que é ummiddleware que ajuda os desenvolvedores de aplicações móveis esensíveis ao contexto a obter informações dos sensores, bem comoa separar questões relacionadas à aquisição de informações con-textuais dos aplicativos da lógica de negócio; e (ii) MultiplatformOffloading System (MpOS) [13], que é um framework que permiteaos desenvolvedores marcarem métodos nos aplicativos usandoanotações, a fim de que esses métodos sejam transferidos e execu-tados em servidores da nuvem. Assim como o CAOS D2D, o CAOSprovê suporte a offloading através de anotações Java a serem apli-cadas nos métodos passíveis de offloading6. Mas diferente do CAOS5http://hadoop.apache.org/6Ver seção 4 (CAOS D2D), na página 3

D2D, esse offloading é realizado para cloudlets disponibilizados namesma rede Wi-fi do dispositivo cliente, em vez de dispositivosmóveis. No CAOS, a tarefa de tomada de decisão (se é necessárioou não o offloading) é compartilhada, parte dela é executada nodispositivo móvel e outra parte é executada no servidor. No CAOSD2D, apenas o cliente participa na tomada dessa decisão.

4 CAOS D2DA ideia de desenvolver um framework para dar suporte a offloadingentre dois dispositivos móveis surge da necessidade de se reali-zar offloading de computação quando não há uma nuvem/cloudletdisponível para tal.

O principal objetivo deste trabalho é realizar offloading direta-mente de um dispositivo móvel para outro. Por isso, foi adotadaa abordagem de adaptar componentes existentes no CAOS parasuportar tal funcionalidade.

4.1 CaracterísticasO CAOS D2D, assim como o CAOS, foi desenvolvido como umframework para o sistema operacional Android. Com respeito aosuporte de offloading do CAOS, a granularidade adotada é a nívelde método, que deve ser marcado com a anotação @Offloadable. OCAOS D2D suporta execução local ou remota de métodos anotados,dependendo da disponibilidade de servidores na mesma rede Wi-Fido cliente. O CAOS D2D possui um mecanismo de descoberta paraprocurar dispositivos móveis fazendo o papel de cloudlet na mesmarede do usuário.

4.2 ArquiteturaO CAOS D2D possui componentes que são executados no disposi-tivo móvel cliente e no dispositivo móvel que fará o papel de cloudlet.A Figura 2 ilustra esses componentes. Os principais componentesdo lado móvel são: Offloading Monitor, Offloading Client, DiscoveryClient, Profile Monitor e os módulos de aquisição, gerenciamento earmazenamento de contexto do LoCCAM.

O Offloading Monitor é o componente responsável por monito-rar a execução das aplicações e interceptar o fluxo de execuçãodo método marcado. No CAOS D2D (e no CAOS), os métodos sãomarcados com anotação Java (@Offloadable), o qual define que ométodo deve executar preferencialmente fora do dispositivo móvel.Ao interceptar a execução do método, o Offloading Monitor analisase há algum servidor CAOS D2D disponível na mesma rede. Se a res-posta for negativa, o fluxo de execução do método é retomado e suaexecução continua localmente. Caso contrário, quando a respostafor positiva, o Offloading Monitor solicita ao Offloading Client queinicie o processo de offloading do método, que transfere o métodoe seus parâmetros ao servidor da nuvem/cloudlet/nuvem móvel.O componente Discovery Client usa um mecanismo baseado emUDP/Multicast para descobrir servidores CAOS D2D (Ou CAOS)disponíveis na rede. Ao descobrir novos servidores, dados sobreeles – tipo de servidor (CAOS ou dispositivo móvel), nível de cargada bateria, endereço IP – são armazenados em uma estrutura dedados; O Discovery Client também é responsável por disparar odeploy de dependências do cliente para o servidor. O módulo ProfileMonitor é responsável por monitorar a conectividade entre clientee servidor (e.g., ping). O módulo Deploy Client, é responsável por

Anais do XXIII Simpósio Brasileiro de Sistemas Multimídia e Web: Workshops e Pôsteres

166

WebMedia’2017: Workshops e Pôsteres, WFA, Gramado, Brasil Santos et al. 2017

Figura 2: Visão geral da arquitetura do CAOS D2D

realizar a injeção de dependências em formato .apk dinamicamentedo cliente para o servidor, de forma que este se torne apto a receberchamadas de offloading feitas por aquele.

Os principais componentes do lado remoto são: Discovery Ser-vice , Profile Services , Authentication Service , Offloading Service eOffloading Method Invocation Service.

O componente Discovery Service responde às chamadas do Disco-very Client, e fornece o endereço da parte servidora do CAOS D2Dpara os dispositivos móveis clientes. O Profile Service é responsávelpor responder às chamadas do componente Profile Monitor, do ladocliente. O Deploy Service recebe dependências enviadas pelo DeployClient e os armazena em um diretório no sistema de arquivos, paraque o servidor possa executar adequadamente as chamadas de exe-cução remota feitas pelo cliente. OOffloading Service recebe pedidosde offloading diretamente do Offloading Client e encaminha para oOffloading Method Invocation Service, responsável por carregar asdependências e executar o método.

Vale frisar que em um cenário dinâmico proporcionado por inú-meros dispositivos que potencialmente podem assumir o papel deservidores, o deploy dinâmico de dependências é um requisito im-portante do CAOS D2D, que não existia no CAOS. Portanto oscomponentes Deploy Service e Deploy Client foram desenvolvidosdesde o princípio para essa solução. O componente Deploy Clientage de maneira transparente para o usuário, que não precisa adici-onar as dependências em um diretório de recursos no projeto doaplicativo.

4.3 ImplementaçãoPara implementação do lado servidor do CAOS D2D, a abordagemadotada a princípio foi partir da implementação existente do Off-loading Method Invocation Service – que é o componente do CAOSque reside na máquina virtual que executa os métodos remotos, eadicionar serviços a ela, de forma a tornar o novo componente com-pletamente autônomo, e posteriormente, fazer a adição do DeployService.

No lado cliente, foram feitas adaptações nos componentes Off-loading Client e Discovery Client, de modo que eles se comuniquem

diretamente com a versão modificada do Offloading Method Invoca-tion Service. O Offloading Client foi modificado de forma a agregarparte da responsabilidade do Offloading Service, para fazer o offload-ing diretamente para o dispositivo móvel em vez de um cloudlet.O Discovery Client foi alterado para se comunicar com o DiscoveryService incorporado no lado servidor. Posteriormente, foi implemen-tado o componente Deploy Service, para receber as dependênciasenviadas pelo Deploy Client.

Os componentes do CAOS D2D, incluindo componentes novose componentes do CAOS alterados para implementação do CAOSD2D são apresentados na Figura 2. As alterações para implementa-ção do lado cliente do CAOS D2D foram feitas sem alterações naAPI do CAOS. Isso significa que códigos-fonte desenvolvidos paraserem executados com o CAOS também podem ser usados com oCAOS D2D, fazendo-se necessária apenas a mudança de biblioteca,mas não de código-fonte.

4.4 Uso da APIPara usar a API do CAOS D2D, deve-se importar para o projeto doaplicativo a biblioteca do CAOS API. Em seguida, deve-se marcarmétodos de uma interface passíveis de execução remota com aanotação @Offloadable, conforme ilustrado no Código-fonte 1.

Código-fonte 1: Exemplo de interface com método anotadocom@Offloadable

import br.ufc.great.caos.api.offload.Offloadable;

public interface Calculator {@Offloadablepublic int sum(int a, int b);

}

O próximo passo é anotar a Activity do seu aplicativo com aanotação @CaosConfig, e anotar com a anotação @Inject os atri-butos que implementam as interfaces anotadas no passo anterior.Após isso, deve-se invocar os métodos Caos.start e Caos.stop, pararespectivamente iniciar e encerrar as atividades de monitoramento

Anais do XXIII Simpósio Brasileiro de Sistemas Multimídia e Web: Workshops e Pôsteres

167

CAOS D2D WebMedia’2017: Workshops e Pôsteres, WFA, Gramado, Brasil

do CAOS durante o ciclo de vida da Activity, conforme ilustrado noCódigo-fonte 2.

Código-fonte 2: Exemplo de Activity com@CaosConfig

import br.ufc.great.caos.api.Caos;import br.ufc.great.caos.api.config.CaosConfig;import br.ufc.great.caos.api.config.Inject;

@CaosConfigpublic class MainActivity extends Activity {

//Classe que implementa UtilsOffloadable@Inject(CalculatorImp.class)//Interface marcada com a anotação @OffloadableCalculator calc;//Demais atributos e métodos@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);//Demais operações de inicialização//Argumentos: um objeto das quais os atributos//serão avaliados pelo CAOS, e um ContextCaos.getInstance().start(this, this);

}@Overrideprotected void onDestroy() {

super.onDestroy();Caos.getInstance().stop();

}}

Fazendo os passos descritos acima, as tarefas de monitoramento,decisão e o offloading dos métodos anotados são realizadas de ma-neira transparente para o usuário. Os métodos marcados com @Of-floadable podem ou não ser executados remotamente, dependendoda disponibilidade de servidores na mesma rede do cliente.

5 CONSIDERAÇÕES FINAISNeste artigo foi apresentado o CAOS D2D7, framework para darsuporte ao offloading entre dispositivos móveis, sem a necessidadede uma estrutura de nuvem ou cloudlet. Foram descritas a concepçãoe a implementação do framework, a partir de uma outra soluçãoexistente, desenvolvida dentro do nosso grupo de pesquisa.

Em trabalhos futuros, pretende-se implantar um algoritmo dedecisão mais robusto, que faça uma consideração mais ajustada defatores como complexidade dométodo a ser executado, tamanho dosargumentos e métricas de conectividade de rede. Adicionalmente,pretende-se tornar o CAOS e o CAOS D2D interoperáveis entre si,ou seja, convergir as duas soluções de forma que um cliente CAOSD2D possa usufruir de um cloudlet CAOS ou de um dispositivomóvel com CAOS D2D, dependendo da disponibilidade de um ououtro dentro da rede; além da implementação do suporte a dadoscontextuais também pelo CAOS D2D.

REFERÊNCIAS[1] Abdalla Artail, Karim Frenn, Haidar Safa, and Hassan Artail. 2015. A Framework

of Mobile Cloudlet Centers Based on the Use of Mobile Devices as Cloudlets.

7Vídeo com demonstração da solução: https://goo.gl/UeKpM6

In Advanced Information Networking and Applications (AINA), 2015 IEEE 29thInternational Conference on. IEEE, 777–784.

[2] Eduardo Cuervo, Aruna Balasubramanian, Dae-ki Cho, Alec Wolman, StefanSaroiu, Ranveer Chandra, and Paramvir Bahl. 2010. MAUI: Making SmartphonesLast Longer with Code Offload. In MobiSys 2010, Proceedings ACM. ACM, NewYork, NY, USA, 49–62. https://doi.org/10.1145/1814433.1814441

[3] Hoang T. Dinh, Chonho Lee, Dusit Niyato, and Ping Wang. 2013. A survey ofmobile cloud computing: architecture, applications, and approaches. WirelessCommunications and Mobile Computing 13, 18 (2013), 1587–1611. https://doi.org/10.1002/wcm.1203

[4] Paulo Artur Duarte, Luís Fernando Maia Silva, Francisco Anderson Gomes,Windson Viana, and Fernando Mota Trinta. 2015. Dynamic Deployment forContext-Aware Multimedia Environments. In Proceedings of the 21st BrazilianSymposium on Multimedia and the Web (WebMedia ’15). ACM, New York, NY,USA, 197–204. https://doi.org/10.1145/2820426.2820443

[5] Niroshinie Fernando, Seng W. Loke, and Wenny Rahayu. 2013. Mobile CloudComputing. Future Gener. Comput. Syst. 29, 1 (Jan. 2013), 84–106. https://doi.org/10.1016/j.future.2012.05.023

[6] Alan Ferrari, Silvia Giordano, and Daniele Puccinelli. 2016. Reducing your localfootprint with anyrun computing. Computer Communications 81 (2016), 1–11.

[7] Francisco A.A. Gomes, Windson Viana, Lincoln S. Rocha, and Fernando Trinta.2016. A Contextual Data Offloading Service With Privacy Support. In Proceedingsof the 22Nd Brazilian Symposium on Multimedia and the Web (Webmedia ’16).ACM, New York, NY, USA, 23–30. https://doi.org/10.1145/2976796.2976860

[8] Francisco A A Gomes, Paulo A L Rego, Lincoln Rocha, Jose N de Souza, and Fer-nando Trinta. 2017. CAOS: A Context Acquisition and Offloading System. In 2017IEEE 41th Annual Computer Software and Applications Conference (COMPSAC),Vol. 1.

[9] C Kolias, S Ahlawat, C Ashton, et al. 2013. OpenFlow-Enabled Mobile andWireless Networks. White Paper (2013).

[10] Karthik Kumar, Jibang Liu, Yung-Hsiang Lu, and Bharat Bhargava. 2013. A surveyof computation offloading for mobile systems. Mobile Networks and Applications18, 1 (2013), 129–140.

[11] Lingxia Liao, Meikang Qiu, and Victor CM Leung. 2015. Software Defined MobileCloudlet. Mobile Networks and Applications 20, 3 (2015), 337–347.

[12] Marcio E. F. Maia, Andre Fonteles, Benedito Neto, Romulo Gadelha, WindsonViana, and Rossana M. C. Andrade. 2013. LOCCAM - Loosely Coupled ContextAcquisition Middleware. In Proceedings of the 28th Annual ACM Symposiumon Applied Computing (SAC ’13). ACM, New York, NY, USA, 534–541. https://doi.org/10.1145/2480362.2480465

[13] Paulo A L Rego, Philipp B Costa, Emanuel F Coutinho, Lincoln S Rocha,Fernando AM Trinta, and Jose N de Souza. 2016. Performing computationoffloading on multiple platforms. Computer Communications (2016). https://doi.org/10.1016/j.comcom.2016.07.017

[14] Z. Sanaei, S. Abolfazli, A. Gani, and R. Buyya. 2014. Heterogeneity in MobileCloud Computing: Taxonomy and Open Challenges. IEEE CommunicationsSurveys Tutorials 16, 1 (First 2014), 369–392. https://doi.org/10.1109/SURV.2013.050113.00090

[15] Mahadev Satyanarayanan, Paramvir Bahl, Ramón Caceres, and Nigel Davies.2009. The Case for VM-Based Cloudlets in Mobile Computing. IEEE PervasiveComputing 8, 4 (Oct. 2009), 14–23. https://doi.org/10.1109/MPRV.2009.82

[16] Mahadev Satyanarayanan, P. Bahl, R Caceres, and N. Davies. 2009. The Case forVM-Based Cloudlets in Mobile Computing. Pervasive Computing, IEEE 8, 4 (Oct2009), 14–23. https://doi.org/10.1109/MPRV.2009.82

[17] M. Shiraz, A. Gani, R.H. Khokhar, and R. Buyya. 2013. A Review on DistributedApplication Processing Frameworks in Smart Mobile Devices for Mobile CloudComputing. Communications Surveys Tutorials, IEEE 15, 3 (Third 2013), 1294–1313. https://doi.org/10.1109/SURV.2012.111412.00045

[18] Vincent Teo and Chye Liang. 2012. Hyrax: Crowdsourcing Mobile Devices toDevelop Proximity-Based Mobile Clouds. Ph.D. Dissertation. Carnegie MellonUniversity Pittsburgh, PA.

Anais do XXIII Simpósio Brasileiro de Sistemas Multimídia e Web: Workshops e Pôsteres

168