RideView: Serviços de Backend e API

A RideView, plataforma avançada de telemática por vídeo da LightMetrics, é viabilizada pela combinação de um SDK executado em um dispositivo de borda e serviços de API de backend executados na nuvem.

Ilustração sobre como as APIs funcionam

A RideView, plataforma avançada de telemática por vídeo da LightMetrics, é viabilizada pela combinação de um SDK executado em um dispositivo de borda e serviços de API de backend executados na nuvem. Um dispositivo de borda pode ser um smartphone, tablet ou uma câmera veicular instalada no veículo. O dispositivo de borda executa um aplicativo que utiliza o SDK/APIs de cliente da RideView e gera mídia de eventos e metadados para uma viagem. Esses dados são então enviados para o backend e disponibilizados a terceiros por meio de nossos serviços de API.

Nossos serviços de backend e API servem como a espinha dorsal de toda a nossa oferta, unindo todos os diferentes componentes e empacotando-os para consumo pelos usuários finais. Vamos dar uma olhada nos bastidores dos componentes que fazem nosso backend funcionar.

Arquitetura e Uso

A Figura 1 mostra os elementos principais do backend da Lightmetrics. As solicitações são recebidas de vários clientes por um servidor proxy reverso. Este servidor adicional também é usado para permitir o cache de solicitações e qualquer filtragem adicional nas solicitações. Após a autenticação, as solicitações são processadas por nossos microsserviços. Esses microsserviços interagem com bancos de dados hospedados na nuvem e serviços de armazenamento.

Figura 1

A maneira recomendada de criar aplicativos usando a RideView é ilustrada na Figura 2. Um aplicativo de dispositivo é criado usando o SDK de dispositivo da RideView. O SDK se comunica com os serviços de API da Lightmetrics – a criação de uma viagem e a busca de configurações de ativos são exemplos de serviços invocados pelo SDK. Os dados apropriados são criados no banco de dados, que são disponibilizados por meio de endpoints de API web. As APIs web da LM estão disponíveis para consumo, via servidor TSP, no aplicativo web voltado ao usuário. Essas APIs fornecem serviços para buscar viagens, violações, estatísticas agregadas, detalhes de viagens e muito mais.

Figura 2

Os princípios fundamentais sobre os quais o backend é arquitetado são:

  • As informações sobre uma viagem devem estar disponíveis imediatamente e ser atualizadas com frequência.
  • Vídeos e outros metadados relacionados devem estar disponíveis quando os usuários finais quiserem revisá-los.
  • Diagnósticos prontamente disponíveis sobre status de conexão, montagem da câmera e outros pontos de falha.

O backend possui duas classes de APIs: internas, consumidas pelo SDK, e externas, que os usuários podem consumir em suas aplicações (móveis ou web). Os endpoints da API interna suportam principalmente a criação e atualização de dados de viagens e eventos. Existem duas classes de dados produzidos aqui:

  • Metadados de viagem ou evento, como (lat, long), velocidade, tempo, etc. Isso é gravado como um documento NoSQL.
  • Dados de mídia: videoclipes ou imagens de incidentes, que são carregados no armazenamento de objetos S3.

O outro conjunto de APIs fornece acesso aos dados produzidos durante a viagem e está disponível para consumo em aplicações web ou móveis front-end. Elas permitem um rico conjunto de recursos nos níveis de frota, motorista, viagem e ativo, que podem ser combinados para criar painéis de segurança de frota responsivos e detalhados.

Implementação

Os serviços de backend são desenvolvidos usando NodeJS e Python, executados como PaaS ou serviços de computação elástica nas nuvens AWS e IBM. O backend da LightMetrics depende de uma combinação de serviços em nuvem trabalhando em conjunto, com recursos residindo em vários provedores de serviços em nuvem. Um servidor proxy reverso (NGINX) atua como um gateway de API, enquanto a lógica central para os endpoints da API é implementada como microsserviços com NodeJS. Além da infraestrutura de banco de dados e computação, nosso backend usa vários outros serviços em nuvem, como notificação, mensagens e lambda, para habilitar diversos recursos. Existem casos de uso que exigem function-as-a-service para implementar certas tarefas coordenadas, e usamos funções lambda para isso. As funções Lambda são um framework serverless popular disponível na AWS, permitindo executar funções isoladas quando necessário. Embora as funções lambda executem e retornem o controle, há situações que exigem a execução de trabalhos em lote coordenados, o que é possível com um serviço chamado Step Function na AWS. O recurso de step function aguarda a conclusão de um trabalho antes de passar para o próximo.

O serviço de banco de dados subjacente usado para armazenar dados de viagem desempenha um papel central na viabilização de nossas APIs. Os principais dados consultados e agregados são os metadados da viagem, armazenados como um documento NoSQL no IBM Cloudant (baseado no Apache CouchDB). Este serviço de banco de dados possui funcionalidade MapReduce integrada que permite consultas e agregações complexas nos dados sem que o usuário precise se preocupar com escalabilidade e disponibilidade. Algumas das APIs permitem a classificação e agregação de dados em diferentes chaves e utilizam internamente o recurso MapReduce integrado. Os dados de mídia são armazenados no armazenamento de objetos S3 e acessíveis por meio de URLs atribuídas às APIs com períodos de expiração predefinidos. Os vídeos de eventos consistem principalmente em clipes gerados automaticamente com base no processamento de ADAS, DMS e sensor G na borda. Além disso, eles também consistem em solicitações sob demanda do backend (DVR). Estas podem ser solicitadas assim que uma viagem é concluída e uma notificação push é enviada ao SDK para atender à solicitação. O upload de vídeo, no entanto, está sujeito à disponibilidade da rede, e o SDK possui lógica de nova tentativa integrada para os dados de viagem e vídeo, enquanto webhooks associados (descritos abaixo) notificam os usuários sobre o atendimento da solicitação.

Nosso servidor de API processa atualmente mais de 1 milhão de solicitações por dia, em vários clientes em diferentes geografias. Uma extensa infraestrutura de monitoramento forma os olhos e ouvidos para garantir que o backend esteja saudável e disponível em escala. Usamos a popular pilha ELK (Elasticsearch + Logstash + Kibana) para monitorar solicitações. Os padrões de solicitação são monitorados regularmente e alarmes são disparados caso padrões incomuns sejam detectados. Isso se soma às ferramentas de monitoramento padrão fornecidas pelos próprios provedores de serviços em nuvem.

Principais Recursos

Webhooks

Webhooks são uma excelente forma de acionar fluxos de trabalho personalizados de maneira assíncrona para determinados eventos. Isso permite que o usuário registre um endpoint personalizado que é invocado em eventos específicos. A Figura 3 ilustra a arquitetura de alto nível do recurso de webhook. No contexto atual, um evento pode ser a conclusão de uma viagem ou a disponibilidade de um vídeo de evento enviado. Como exemplo, um fluxo de trabalho específico precisa ser acionado quando uma viagem é concluída. Esse fluxo de trabalho é implementado no servidor do TSP. O TSP registra o webhook (que é um endpoint de API REST POST). Ao concluir a viagem (quando a ignição é desligada), o SDK invoca os webhooks registrados, que por sua vez executam o código personalizado para acionar o fluxo de trabalho. Atualmente, oferecemos suporte a webhooks para eventos relacionados a viagens, DVR e diagnósticos.

Figura 3

Provisionamento e Configurações

O primeiro passo para configurar nosso serviço é o provisionamento de frotas e ativos. Fornecemos APIs para criar frotas, enviar ativos vinculados e marcá-los com o nível de serviço, tipo de serviço do veículo e status de pagamento (piloto/pago) apropriados. Os eventos gerados pelo nosso SDK oferecem ampla configurabilidade, alcançada por meio de APIs que configuram limites de eventos, controle de notificação do motorista e parâmetros de vídeo do evento – duração, resolução, qualidade e formato.

DVR, DVR com lapso de tempo, eDVR

A funcionalidade básica que todo sistema de telemática de vídeo precisa oferecer é a solicitação remota de clipes de vídeo de dispositivos – também conhecida como DVR. Isso permite que um administrador de frota solicite um clipe de vídeo em torno de um local ou intervalo de tempo específico dentro de uma viagem, para revisar algum conteúdo de interesse – um acidente, uma reclamação de motorista, etc. A plataforma RideView oferece suporte a DVR e duas de suas variantes – DVR com lapso de tempo (Time-Lapse) e eDVR. O eDVR permite a solicitação remota de versões de maior qualidade de vídeos de eventos já capturados. O DVR com lapso de tempo permite a revisão rápida de todo o vídeo de uma viagem, criando e enviando um vídeo em lapso de tempo de toda a viagem. Assim como nos vídeos de eventos, todas as solicitações de DVR vêm com ampla configurabilidade em relação à resolução, qualidade e formato do vídeo.

Inteligência colaborativa

A plataforma RideView, implantada em milhares de veículos, processa 24 milhões de quilômetros de dados de vídeo, GPS e sensores a cada mês (e crescendo rapidamente). Pontos de interesse (POI), como limites de velocidade e placas de parada, são extraídos de documentos de viagem, agregados, mantidos em um banco de dados SQL separado e processados para gerar nosso próprio armazenamento de dados de POI colaborativos. Esses dados são consumidos atualmente por meio de APIs internas em nosso SDK, ajudando a aumentar o desempenho de nossos mecanismos ADAS em situações onde a detecção visual é desafiadora. No futuro, estamos trabalhando para disponibilizar nossos dados colaborativos como um serviço de API independente que possa ser consumido por terceiros, mesmo fora da plataforma RideView.

Nossa infraestrutura de backend está em constante evolução para atender às necessidades de uma base global de clientes em crescimento, que depende dela para fornecer soluções estáveis e escaláveis, além de novas funcionalidades adicionadas para entregar mais valor aos usuários finais. Incorporar os desenvolvimentos mais recentes, ferramentas populares e as melhores práticas, sem sacrificar a flexibilidade, a estabilidade e a escalabilidade, é um desafio, mas estamos bem posicionados para enfrentá-lo.

Para saber mais sobre nossas APIs, escreva para info@lightmetrics.co.