A importância de confirmar comandos de controle usando o Delimobile como exemplo

Ao projetar sistemas de IoT, por exemplo, compartilhamento de carros, é muito importante considerar possíveis falhas. Caso contrário, você encontrará uma carga crítica no suporte técnico e na insatisfação do cliente.


Estacionamento "Skolkovskaya"

Falhas acontecem em todos os lugares. Mas no mundo da "Internet das coisas", esse é um estado permanente. Ao trabalhar com redes e hardware móveis, as falhas ocorrem com muito mais frequência do que no desenvolvimento da Web ou móvel.

A confiabilidade dos sistemas sofre por várias razões, incluindo prazos apertados e orçamentos de desenvolvimento limitados. Mas a IoT pode funcionar se possíveis falhas não forem negadas, mas aceitas e tentar resolver o problema. Se estiver interessado, há um artigo interessante sobre métodos para aumentar a tolerância a falhas, mas agora está mais próximo do assunto.

Você abre o carro pelo telefone, o que poderia dar errado?


As etapas podem depender da arquitetura do sistema, mas o cenário geralmente é este:

Você clica no botão "Reserve agora". Um comando é enviado ao servidor. Ela pode ou não andar.

Você clica no botão "Abrir carro". Um comando é enviado ao servidor. Ela pode ou não andar. O servidor envia um comando para a máquina. Ela pode ou não andar. O dispositivo de bordo está tentando executar o comando. Pode ou não ser cumprido.

Você clica no botão "Iniciar viagem". Um comando é enviado ao servidor. Ela pode ou não andar. O servidor envia um comando para a máquina. Ela pode ou não andar. O dispositivo de bordo está tentando executar o comando. Pode ou não ser cumprido.

Sim, isso é uma quantidade superficial e de fato uma quantidade insana de problemas, mas agora vamos considerar apenas esses.

Suponha que todas as equipes tenham alcançado e todos os atuadores tenham funcionado - sucesso! Isso pode ser demonstrado aos investidores.

Algo deu errado


Mas o que acontece se, por exemplo, o comando "Portas abertas" não chegar ao carro?

Em primeiro lugar, o servidor deve descobrir isso. Para que o estado real da máquina seja sincronizado com o servidor, geralmente é usado o reconhecimento de comando (ACK). E mais uma confirmação da execução da equipe. Afinal, “a equipe não foi entregue” e “a equipe não foi executada” são eventos diferentes e envolvem diferentes tentativas de solução.

Em segundo lugar, (se o problema não puder ser resolvido, por exemplo, reenviando o comando), é necessário relatar o erro ao usuário e não colocá-lo no estado "trip".

No Delimobile, você começará a viagem.

E uma conversa com o operador do suporte técnico.

A história


Eu trabalho em Skolkovo. Devido às dificuldades com a acessibilidade no transporte, como muitos colegas, fui trabalhar e voltar todos os dias no compartilhamento de carros. Mas há 3 dias, na zona de estacionamento, a conexão se deteriorou. Por que há problemas com as comunicações móveis no Centro de Inovação é outra questão, mas essa situação deu origem a um problema interessante: os usuários de Delimobile que reservaram um carro estavam realmente presos.

Na noite fria de 24 de setembro, eu estava voltando para casa. Ele reservou um carro e veio até ela.

Clicou em "Iniciar inspeção", mas as portas não se abriram.

- Bem, provavelmente, novamente, uma falha de comunicação. Eu levo outro. Além disso, existem tantos!

Clicou em "Concluir aluguel" - "Você está fora da zona de estacionamento"

Eu chamo de apoio, descrevo a situação. O operador está tentando abrir a porta. Falha. A musica Portas abertas. Obrigada

- Provavelmente os servidores falharam. Ok, vamos lá. Aperto "Start the trip" - o aplicativo começou a contar o dinheiro.

Não inicia.

Eu chamo de apoio, descrevo a situação. O operador está tentando permitir a partida do mecanismo. Falha. "Não há conexão com a máquina."

- Ok, vamos fechá-lo manualmente. Abaixe o vidro, saia, pressione o botão de travamento central, feche o vidro.

O vidro não cai. Aparentemente, sem um comando do servidor, o carro não liga a ignição. Mas não há conexão.

- Então você precisa esperar pelo mecânico. 1-1,5 horas.

"Mas está frio aqui." Existem 3-4 pessoas a mais nos carros Delimobile com telefones. Talvez as peles já tenham sido enviadas a eles ...

<portas do carro fechadas de repente>

Ah, é isso. Obrigada Vou de microônibus.

Como os outros resolvem esse problema


Primeiro, se não houver comunicação com a máquina, talvez ela não deva ser exibida no mapa.

Em segundo lugar, se o servidor soubesse que o comando para abrir as portas não havia sido executado, não teria me transferido para o modo de aluguel. Então, em vez de 40 minutos no frio e uma carga adicional no suporte técnico, eu veria apenas uma mensagem de erro.

Em terceiro lugar, você pode criar um canal de comunicação de backup - um segundo modem com outra operadora (eu tinha Internet no telefone). Ou Bluetooth, como é feito no Squirrel e no YouDrive. (Talvez essa opção não seja para a Delimobile, pois aumentará os custos de desenvolvimento e suporte, e o DM é o mais barato entre as massas)



Enquanto isso, a Delimobil salva os carros "fechados manualmente" e carrega seu suporte técnico devido à falta de confirmação da entrega das equipes de controle. Ao mesmo tempo, carros sem comunicação são visíveis no mapa e estão disponíveis para reserva.

Esse é um problema mais amplo.


Tenho certeza que os engenheiros da Delimobile são ótimos. Eles resolveram um mar de problemas. Sério. De fato, além do equipamento e do próprio sistema, ainda é necessário construir os processos de comissionamento, manutenção, desativação, etc. Freqüentemente, esses processos também exigem o desenvolvimento de hardware e software.

Mas por que então poderia surgir tal situação? Na minha opinião, existem duas razões prováveis.

O primeiro problema provável são contratados diferentes para o aplicativo, servidores e equipamentos sem o design de nível superior de alta qualidade de todo o sistema. Todo mundo pode ter feito seu trabalho bem, mas a arquitetura geral tem problemas.

A segunda razão provável é inerente a muitos projetos em princípio. O fato é que, para demonstrar (por exemplo, para investidores), não é difícil fazer um protótipo. Talvez isso seja suficiente por várias semanas ou até dias. No entanto, o design e o desenvolvimento de um sistema confiável pode levar um mês ou até anos. Infelizmente, nem todos os gerentes eficazes entendem isso.

Freqüentemente, a liderança eficaz pode exigir novos recursos que eles acreditam aumentar a receita da empresa. Ao mesmo tempo, eles não veem potencial comercial em aumentar a confiabilidade.


O que fazer




Localmente, a Delimobil precisa resolver o problema do estacionamento em Skolkovo. Muitos carros estão ociosos lá. É improvável que eles consigam concordar com uma operadora de celular para melhorar a qualidade da comunicação. Portanto, o resultado mais provável me parece que eles proibirão o estacionamento e transportarão veículos para Moscou por conta própria. Resultado triste :( Você acha que é possível resolver esse problema de uma maneira diferente?

Globalmente, os gerentes técnicos devem defender a necessidade de aumentar a confiabilidade. Pelo menos em Delimobile, eles agora têm uma discussão.

PS Agradecimentos especiais aos caras de suporte técnico atormentados. Eles são educados e tentam resolver o problema.

Source: https://habr.com/ru/post/pt468765/


All Articles