Mingle: o gateway para produto legado da TOTVS

TOTVS Developers
TOTVS Developers
Published in
4 min readJan 22, 2019

O Mingle é uma plataforma disponibilizada como serviço para a sustentação de aplicativos (atualmente móveis) resolvendo três principais necessidades dos clientes: Autenticação, API Gateway e Métricas, fazendo tudo isso sem que os produtos tenham que expor suas APIs diretamente para quem irá consumí-las, deixando o controle dessa exposição para o próprio Mingle.

  • Todas as comunicações entre app e Mingle são realizadas exclusivamente via REST no endereço https://mingle.totvs.com.br utilizando o protocolo HTTPS.
  • Aplicativos móveis construídos utilizando o Ionic poderão fazer uso do pacote mobile-mingle publicado no npm e utilizar o serviço para realizar a autenticação com o seu respectivo driver, realizar chamadas através do gateway e logar métricas anônimas ou autenticadas.
  • Todas as requisições, bem como suas respectivas respostas geram métricas.

Drivers são serviços dentro do Mingle onde cada um contém uma estratégia de autenticação diferente, dependendo dos requisitos necessários que um determinado tipo de autenticação possa exigir. Exemplo: HTTP Basic

Autenticação

Um dos pontos importantes é que o Mingle não realiza diretamente nenhuma autenticação, ele apenas redireciona ao host cadastrado no portal para realizar a autenticação. A figura abaixo ilustra os passos nesse processo.

  1. O app envia ao Mingle as credenciais para autenticação, usuário, senha e alias.
  2. O Mingle, através das informações recuperadas do cadastro do aplicativo, sabe qual o driver utilizar para realizar a autenticação e em qual host deve executá-la.
  3. O host após receber as credenciais do Mingle, autentica (ou não) o usuário e dependendo do seu tipo de autenticação pode devolver ao Mingle mecanismos para renovar essa autenticação, o Mingle irá tratar de forma transparente para o aplicativo essa renovação.
  4. O Mingle irá retornar ao app a resposta enviada pelo host sobre o resultado da autenticação, em caso de sucesso, também será enviado um tokenJWT para garantir a integridade das mensagens trocadas.
  5. Com o usuário autenticado o app poderá realizar as requisições (também através do Mingle) no host do respectivo usuário.

O alias é registrado por cliente no Mingle e identifica o host que será usado para as chamadas de API. Essa estratégia evita com que o endereço do hosttenha que ser informado na autenticação app. Lembrando que os aplicativos são distribuídos em lojas únicas nas respectivas plataformas (Apple Store, Play Store), e os hosts poderão variar de cliente para cliente, logo esse endereço não pode ser informado no ato da distribuição do aplicativo. O alias é gerado a partir do cadastro dos aplicativos no Mingle.

Métricas de Uso

Uma função core do Mingle é permitir que o app registre métricas de uso de suas funcionalidades, como por exemplo, quando o app é inicializado automaticamente é registrada uma métrica com uma série de informações sobre este evento. Todas as requisições, bem como suas respectivas respostas geram métricas.

As métricas podem ser de dois tipos:

  • Métricas identificadas: são aquelas que registram o usuário que está autenticado no app no momento do registro, e por definição só serão possíveis com a existência desse usuário autenticado.
  • Métricas anônimas: podem ser registradas sem a necessidade de um usuário autenticado.

Toda métrica contém as seguintes informações:

  • Tipo: tipo da métrica gerada.
  • Aplicativo: identificador do aplicativo.
  • Dispositivo: identificador do dispositivo.
  • Data: data no formato da RFC2822.
  • Local (opcional): coordenadas (latitude x longitude).
  • Set (opcional): identificador do set cadastrado.
  • Cliente (opcional): identificador do cliente cadastrado.
  • Usuário (opcional): identificador do usuário.
  • Identificador da execução: identificador da execução, muda a cada nova execução do aplicativo, o que permite filtrar cada jornada do usuário dentro dele.

Os campos usuário, cliente e set são opcionais justamente nas métricas anônimas, já o local pode ou não existir caso o app não envie essa informação (exemplo: GPS desabilitado)

Além desse campos, cada métrica pode, arbitrariamente, armazenar informações customizadas de acordo com a necessidade do aplicativo.

API Gateway

Como citado acima, o Mingle é capaz de tratar a existência de mais de um cliente, ou seja, mais de um host, para um mesmo app, fazendo o redirecionamento correto das chamadas realizadas. A figura abaixo ilustra uma requisição realizada pelo app através do Mingle.

  1. Com o token gerado, o app irá realizar as chamadas diretamente para o Mingle.
  2. O Mingle irá direcionar as chamadas para o host associado ao usuário do app que realizou a chamada, utilizando os mecanismos de confiabilidade, como por exemplo um token que foi gerado pelo host e armazenado no Mingle.
  3. O host irá processar a requisição e devolver ao Mingle a resposta.
  4. O Mingle irá delegar a resposta devolvida pelo host para o app.

Todas as requisições, bem como suas respectivas respostas geram métricas (sem conteúdo sensível) que podem ser consultadas dentro do portal do Mingle na seção Monitor > ERP Gateway.

--

--