O documento descreve um projeto de sistema chamado ThingProvider que aplica arquitetura de microsserviços para integrar dispositivos IoT. O sistema será dividido em quatro módulos: autenticação, interface web, nós e servidor. Cada sensor IoT irá expor uma API REST. O servidor gerenciará as APIs locais e a interface web permitirá aos usuários acessarem e compartilharem serviços.
1. PUC-Campinas Projeto Final A
ThingProvider- Página 1 de 12
PONTIFÍCIA UNIVERSIDADE CATÓLICA
ENGENHARIA ELÉTRICA - CEATEC
Projeto Final A
PROPOSTA DE PROJETO TÉCNICO
ThingProvider
Nome do aluno (a): Kevin Matheus Martins
Orientador: Fabio Pereira Benjovengo
3. PUC-Campinas Projeto Final A
ThingProvider- Página 3 de 12
1 Introdução
Com a crescente necessidade de integrar diferentes sistemas o conceito de APIs(application
programming interface) se tornou bastante popular e se mostrou como uma das melhores soluções
para a exposição de serviços, permitindo a gerencia de serviços escaláveis, flexíveis e seguros.
Atualmente as APIs são construídas em sua maior parte utilizando os conceitos do modelo
arquitetural REST(Representational State Transfer) onde recursos são gerenciados e identificados
com o conceito de URI(Uniform Resource Identifier) sobre o protocolo HTTP(The Hypertext
Transfer Protocol) representando seus recursos com múltiplos formatos sendo o mais comum deles o
JSON(JavaScript Object Notation).
Em grandes e pequenas implantações de IOT(Internet of things) são comumente utilizadas os
conceitos de monólitos fazendo com que a arquitetura da solução seja eficaz, porém qualquer
alteração fará com que todo o sistema seja recarregado. Uma alternativa recente aos monólitos é a
arquitetura voltada aos microserviços onde o sistema como um todo é dividido em pequenos
serviços independentes, flexíveis e escaláveis.
A aplicação de microserviços junto as APIs pode tornar as implantações de IOT mais
baratas, escaláveis, resistente a erros além de prover um design eficiente para a heurística da IOT.
2 Descrição do Projeto
Os dispositivos de IOT precisam manter o tráfico de rede pequeno além de necessitar que
este seja rápido dado que possuem uma memória pequena e limitada, um baixo poder de
processamento de grandes informações e consumo limitado de energia devido suas baterias. Esse
cenário caracteriza a exposição de serviços onde este irá processar apenas as requisições de seus
serviços expostos, ficando a responsabilidade de quem fez a requisição processá-la e tomar decisões
sobre está.
2.1 Justificativa
A aplicação do conceito de microservicos e APIs voltadas a IOT prove melhorias de
performance e custos além de permitir integração entre diversos sistemas e remover a
necessidade de reinicialização completa do sistema em casos de erro.
4. PUC-Campinas Projeto Final A
ThingProvider- Página 4 de 12
Em ambientes locais é difícil o compartilhamento de dados entre usuários devido à
inexistência de plataformas simples com este fim. É necessária uma plataforma que demonstre
quais os serviços locais estão disponíveis e quais são os recursos para utiliza-las.
2.2 Objetivo
Aplicar os conceitos arquiteturais de microservicos e exposição de serviços REST em
aplicações de IOT, prover uma plataforma para exposição de serviços e demonstrar que o custo,
performance e compartilhamento de serviços gera melhorias quanto comparadas a arquitetura
monolítica.
2.3 Funcionalidades
O sistema será divido em quatro grandes módulos sendo:
ThingProviderAuthenticator
Autenticação;
Criação de novos usuários;
Segurança;
ThingProviderWeb
Interfaces com o usuário;
Filtros;
ThingProviderNodes
Disponibilização de APIs para repasse do ThingProvider;
ThingProvider
Gerencia das APIs;
Servidor de aplicação;
Exposição de serviços;
5. PUC-Campinas Projeto Final A
ThingProvider- Página 5 de 12
2.4 Arquitetura
2.4.1 ThingProviderNode
Será considerado um nó todo componente que estiver expondo uma API de modo que se o
mesmo componente expuser mais de uma API este será compreendido como mais de um nó no
sistema.
Figura 1-ThingProviderNode
Para o teste de conceito será utilizado um dos modelos do produto Arduinio sendo este uma
plataforma de prototipagem eletrônica junto a sensores que irão captar a informações para exposição
dos serviços. Para criação dos serviços será utilizada a biblioteca open source aREST que possibilita
a criação de web services restfull com facilidade.
Cada sensor gerará uma API baseada nos principais verbos do protocolo HTTP que sejam
condizentes com a finalidade deste.
2.4.2 ThingProvider
O servidor do ThingProvider será responsável pela gerencia das APIs locais ,
disponibilizando serviços CRUD de APIs, busca e controles de usuário. Sua finalidade é prover uma
maneira fácil para que os usuários compartilhem os serviços disponíveis.
Este também irá disponibilizar uma API para comunicação com o front-end e o módulo de
autenticação.
6. PUC-Campinas Projeto Final A
ThingProvider- Página 6 de 12
Figura 2-ThingProviderServer
Para exposição das APIs será necessário que estas sejam cadastradas pelos usuários.
Este módulo será desenvolvido utilizando a linguagem de programação Java junto ao
framework Spring.
2.4.3 ThingProviderWeb
Este componente será a parte de integrações gráficas com o usuário provendo maneiras de
este interagir com o nosso back-end. Para construção te telas será utilizado os dados provindos da
API do ThingProvider e serão construídas utilizando o framework JavaScript React.
Figura 3-ThingProviderWeb
7. PUC-Campinas Projeto Final A
ThingProvider- Página 7 de 12
2.4.4 ThingProviderAuthentication
Este módulo será o responsável pelo login dos usuários em nossa aplicação , gerando
segurança ao nosso sistema.
Irá utilizar algumas APIs disponibilizadas pelo ThingProvider e será desenvolvido utilizando
a linguagem Java e o framework SpringSecurity.
Figura 4-ThingProviderAuthentication
2.5 Produto
O produto completo do ThingProvider será a integração de todos seus componentes
permitindo a completa utilização do sistema.
Figura 5-ThingProvider
8. PUC-Campinas Projeto Final A
ThingProvider- Página 8 de 12
3 Metodologia
Todo desenvolvimento do projeto será mantido na plataforma GitHub no repositório
ThingProvider(https://github.com/kevinmmartins/ThingProvider) utilizando o modelo Kanban para
controle de tarefas junto as issues que devem ser desenvolvidas e a milestone referente a está.
Figura 6-Issues
Figura 7-Detalhes das issues
9. PUC-Campinas Projeto Final A
ThingProvider- Página 9 de 12
Figura 8- Projetos
Figura 9-Kanban
Problemas encontrados durante o projeto devem ser abertos como issues de erros e serão
tratadas ao final do desenvolvimento dos módulos do ThingProvider para que seu impacto no
cronograma seja pequeno.
Para análise dos resultados será verificado a quantidade de requisições em que um nó irá
suportar demonstrando a correta abordagem no compartilhamento de serviços. Também será gerado
casos onde uma API esteja indisponível e que o restante do sistema não seja afetado para demonstrar
uma das vantagens da aplicação dos conceitos nos microserviços em IOT.
10. PUC-Campinas Projeto Final A
ThingProvider- Página 10 de 12
Para verificação do módulo de interface com o usuário junto à aplicação será demonstrado
que este consegue efetuar operações básicas além de descobrir novos serviços para sua utilização.
4 Atividades
Criação do projeto – Fundação de todos os projetos antes dos desenvolvimentos;
Proposta de projeto – Elaboração da proposta de projeto;
Análise de dados – Criação de todas as entidades do negócio antes de desenvolver as
operações básicas;
Desenvolvimento do CRUD- Após criação das entidades devem-se criar as operações básicas
para manuseio destas;
Criação de serviços do Server- Disponibilizar uma API para ser consumida pelo
ThingProviderWeb;
Criação de nós- Criação de no mínimo um nó com a biblioteca aREST;
GUI- Criação da camada de interfaces com o usuário;
Authentication- Criação do módulo de autenticação;
Teste de conceito- Integrar todos os módulos;
Análise do teste de conceito- Verificar os dados obtidos e confronta-los com os objetos do
projeto;
5 Cronograma
Tabela 1 – Cronograma do projeto
FEVEREIRO MARÇO ABRIL MAIO JUNHO
ATIVIDADE 14 21 07 14 21 25 28 04 11 18 25 29 02 09 16 23 30 03 06 13 21 28
Criação do projeto X X X
Proposta de projeto X X
Criação de nós X X X
Análise de dados X X
Desenvolvimento do
CRUD
X X
11. PUC-Campinas Projeto Final A
ThingProvider- Página 11 de 12
GUI X X X
Teste de conceito X X
Análise do teste de
conceito
X
6 Riscos e mitigação
Biblioteca Arest se mostrar de difícil utilização ou de escopo não genérico e outra solução necessitar
ser implementada;
Arquitetura utilizada na aplicação se mostrar ineficaz ou de configuração complexa necessitando
alterações;
Mudança de escopos definidos nas sprints;
Falta de tempo devido a necessidade de aprendizado de novas tecnológicas por parte do
desenvolvedor;
7 Recursos materiais
Micro controlador – R$40;
Sensor de chuva – R$15;
Internet shield – R$30;
Servidor (será utilizado um equipamento já adquirido);
Software – Todos os softwares utilizados são livres;
8 Referências
Medium- IoT is eating the world: APIs and REST. Disponível em <
https://medium.com/@AlexandraBowen/iot-is-eating-the-world-apis-and-rest-9e0321bc6cbf >.
Acesso em 24 Abril 2018.
D Zone- REST Without JSON: The Future of IoT Protocols. Disponível em <
https://dzone.com/articles/json-http-and-the-future-of-iot-protocols>. Acesso em 24 Abril 2018.
InforQ-rest e internet das coisas. Disponível em <
https://www.infoq.com/br/news/2013/12/rest-iot#>. Acesso em 24 Abril 2018.
12. PUC-Campinas Projeto Final A
ThingProvider- Página 12 de 12
Multi-IOT e micro serviços. Disponível em < http://www.grupomult.com.br/iot-
comunicacao-de-dados-e-microservicos-uma-visao-integrada-para-suportar-industria-4-0/>. Acesso
em 24 Abril 2018.
aREST-Rest library . Disponível em < https://arest.io/get-started>. Acesso em 24 Abril 2018.
Spring-Spring Framework. Disponível em < https://spring.io/>. Acesso em 24 Abril 2018.
Java- Java software . Disponível em < https://java.com/en/download/>. Acesso em 24 Abril
2018.
React-JavaScript library. Disponível em < https://reactjs.org/>. Acesso em 24 Abril 2018.
Github-Git repository. Disponível em < https://github.com/>. Acesso em 24 Abril 2018.