Integração de processamento distribuído em uma plataforma de cidades inteligentes - Guedes, Dylan Jefferson Mauricio Guimaraes (2019)
Nos últimos anos, diversas cidades passaram a disponibilizar e a fazer uso de seus dados de forma eficiente, possibilitando a criação de soluções tecnológicas para cidades inteligentes. Essas soluções podem ser desenvolvidas de uma maneira específica e adhoc, ou podem ser apoiadas sobre uma plataforma de cidades inteligentes, que são mais interoperáveis e padronizadas. Na prática, uma aplicação utiliza a API de uma plataforma de cidades inteligentes para ter garantias de requisitos não-funcionais, como desempenho, escalabilidade e tolerância a falhas. Contudo, quando várias aplicações utilizam a plataforma, o fluxo de dados gerado e consultado é grande e só pode ser atendido com grande poder computacional. Atualmente, uma forma acessível de atingir o poder computacional necessário é aumentar os recursos computacionais horizontalmente, adicionando mais computadores para distribuir as tarefas de processamento. Nesse contexto, as plataformas devem utilizar ferramentas de processamento distribuído para lidar com aplicações intensivas em dados. Porém, a maior parte das plataformas não integram essas ferramentas, e as que integram, não disponibilizam uma forma facilitada de uso. Neste trabalho, apresentamos uma arquitetura que faz a integração entre ferramentas de processamento distribuído e plataformas de cidades inteligentes com ênfase em usabilidade sem gradação de desempenho. Implementamos a arquitetura como um microsserviço chamado DataProcessor, responsável tanto por integrar a ferramenta de processamento em cluster Apache Spark e a plataforma de cidades inteligentes InterSCity, quanto por disponibilizar essa integração através de uma API REST. Assim, desenvolvedores da plataforma InterSCity podem criar novas tarefas de processamento que utilizam os recursos disponíveis de maneira efetiva, mas sem a necessidade de conhecimento específico sobre a ferramenta de processamento em cluster. Avaliamos o DataProcessor em um experimento que utilizou o simulador de larga escala InterSCSimulator para simular dados de trânsito, que nos permitiu concluir que: (1) o uso do DataProcessor para facilitar o uso do Spark não traz perda de eficiência; (2) embora o DataProcessor disponibilize uma API REST, que é uma opção mais difundida que a API do Spark, a quantidade de código necessário é semelhante; e (3) é possível adicionar novas funcionalidades ao DataProcessor facilmente com a adição de poucas linhas de código.