Apresentação feita para o XI Semana Acadêmica de Sistemas de Informação da Universidade Luterana do Brasil (ULBRA) campus Carazinho - RS, com intuito de apresentar um estudo de caso de uma aplicação realtime.
A apresentação expõe as etapas do desenvolvimento de uma aplicação para o rastreamento e monitoramento de veículos de uma frota, mantendo o foco na atualização de dados em tempo real. Além disso, aborda as principais tecnologias e ferramentas utilizadas para o desenvolvimento da ferramenta.
O projeto foi desenvolvido entre 08/2019 e 10/2019 na empresa Atua Sistemas de Informação, com sede em Passo Fundo - RS.
2. Autores
Gustavo Castro
Tecnólogo em Sistemas para Internet
Especializando em Ciência de Dados
Desenvolvedor PHP
Github: github.com/debgustavocastro
Linkedin: linkedin.com/in/gustavocastro78
SlideShare: slideshare.net/GustavoCastro35
E-mail: deb.gustavocastro@gmail.com
2
4. Um estudo de caso de monitoramento e rastreamento
frota
Geolocalização
Realtime
4
5. O problema
● Cliente precisa controlar a frota de veículos
○ Projeção de rotas e estimativa de tempo do percurso
○ Necessidade de saber o posicionamento e situação dos
veículos
○ Dados atualizados em tempo real
5
6. Arquitetura Existente
● Rastreadora
○ Disponibiliza os dados via Webservice
● Processo Atualização
○ Consome os dados do Webservice da rastreadora
○ Persiste os dados no BD
● Cliente
○ Realiza requisições frentes ao servidor
○ Monta uma tabela com os dados obtidos
6
9. Problemas - Arquitetura existente
● Requisições frequentes
○ Várias ou nenhuma atualização
○ Processo lento (consulta no BD)
● Pouca usabilidade
○ Muitos dados na tela
9
10. Objetivos projeto
● Facilitar a visualização dos dados gerais
● Possibilitar visualização dos acontecimentos e realizar
previsões
○ Exibir a situação e a posição dos veículos
○ Criar uma estimativa de tempo de trajeto baseado na rota
● Manter os dados sempre atualizados
○ Ajustar a arquitetura existente para entregar os dados mais próximos
da realidade de tempo
● Realizar os itens acima de maneira mais performática
10
11. Solução - Dados em tempo real
● Arquitetura Cliente/Servidor
○ Sempre inicia no cliente
■ Cliente pergunta
■ Servidor responde
○ Canal unidirecional
11
Fonte: https://medium.com
12. Solução - Dados em tempo real
● Téc. de realtime
○ Polling
○ Streaming SIMD
Extensions
○ Websocket
12
Fonte: https://hpbn.co/websocket/
13. Solução - Dados em tempo real
● Websocket
○ Abre uma única comunicação bidirecional
○ PHP - Ratchet
■ Fácil controle sobre múltiplas conexões simultâneas
■ Escalável
■ Performático
13
14. Solução - Arquitetura - Back-end
● Atualização na aplicação
cliente e persistência de
dados na mesma requisição
● Atualização apenas de
dados necessários
● BD mais performático
● Dados em “tempo real”
14
Fonte: Dos Autores
15. Solução - Arquitetura - Front-end
● Repassa os dados da rastreadora
para API’s do Google
○ Google Maps
■ Tráfego na região
■ Trajeto
■ Plota mapa no cliente
○ Matrix API
■ Distância
■ Estimativa de tempo do trajeto
15
Fonte: Dos Autores
16. Problema - Custos
Vl. request Qt. Itens
request
Qt. exec. p/ dia Qt. request p/
dia
Vl. diário Vl. mensal
(CONVERTIDO)
U$0,005 950* 144 136800 U$ 684 R$ 97.470,00
16
Fonte: Dos Autores
17. Requisitos para alternativa
● Financeiramente viável
● Cálculos de trajetórias
○ Roteirização
○ Distância
○ Tempo
● Apresentação dados para usuário
○ Mapa
17
19. Soluções utilizadas
● Funcionalidades
○ Construção de rotas
○ Distância entre pontos
○ Estimativa de tempo entre
os pontos
● Prós
○ Open Source
○ Self Hosted
● Contras
○ Resolve apenas coordenadas
(latitude, longitude)
19
Fonte: http://project-osrm.org/
21. Soluções utilizadas
● Funcionalidades
○ Resolve endereços em
coordenadas e vice-versa
● Prós
○ Open Source
○ Self Hosted
○ Performático
○ PHP / PostgreSQL / PostGIS
● Contra
○ Base de dados diferente do OSRM
21
Fonte: https://nominatim.org/
24. Soluções utilizadas
● GeoRoutes API
○ Desenvolvido internamente
○ Servidor REST - Node.js
○ Centralizador
■ OSRM/Nominatim
○ Calcula velocidade
24
Fonte: Dos Autores
25. Soluções utilizadas
● OpenStreetMap
○ Mapa, tile
● Leaflet
○ Framework
○ Interatividade com o mapa
● Prós
○ Open Source
25
Fonte: https://leafletjs.com/
26. Resultados
✓ Interface amigável
○ Visualização dos principais dados de forma organizada
✓ Aplicação performática
✓ Baixo custo em relação em relação a outras ferramentas
~ Dados em tempo real
○ Impasse com as rastreadoras que não oferecem webhooks
26