Há dois anos, começamos um blog sobre Habr, começando com um
texto de revisão sobre o que fazemos, quais tecnologias usamos e para onde estamos nos movendo. Desde 2017, muita coisa mudou e hoje vamos lhe mostrar como tomar nossa decisão - a plataforma de gerenciamento global da Connected Cars, usada por muitos usuários e empresas de vários níveis. O material é dividido por processo, da declaração do problema à implantação.

O principal produto Bright Box -
Remoto - é uma plataforma tecnologicamente sofisticada e rica em recursos para o Connected Car, que inclui equipamentos, software para revendedores e montadoras, além de um aplicativo móvel para o usuário. De acordo com as análises primárias da Bright Box entre os proprietários de carros, antes de tudo, eles precisam de controle remoto de fechaduras, controle de temperatura e procurar um carro com alertas sobre choque ou evacuação. Este último já é um clássico. Agora, o bloco Remoto fornece ao usuário os seguintes serviços: controle remoto das funções do veículo, capacidade de receber dados de hardware e CAN, GPRS, SMS, Bluetooth e controle da potência de saída da unidade de ignição eletrônica. O usuário recebe essas informações em um aplicativo móvel.
E esse usuário pode não ser apenas o proprietário da máquina. As informações disponíveis para coleta podem ser uma ferramenta útil para muitos participantes do mercado de automóveis. Por exemplo, compartilhamento de carro. Hoje, as empresas de compartilhamento de carros são os participantes mais ativos no mercado automotivo. Moscou se tornou a cidade número um no número total de carros envolvidos no compartilhamento de carros. Até 2020, o compartilhamento de carros deverá atingir a marca de 40 mil carros na Rússia. As empresas de compartilhamento de carros tornam-se proprietários dos seguintes dados: quilometragem, coordenadas GPS, velocidade, status da porta e nível de combustível. A chave para tudo isso é um smartphone, que é uma opção mais barata e segura.
Andrey Kuprikov, co-fundador e diretor de desenvolvimento de negócios da YouDrive e um dos clientes da Bright Box:“É difícil imaginar o compartilhamento de carros sem uma solução telemática. Nossa plataforma é obrigada a coletar todas as informações possíveis sobre o carro, o que e como isso acontece. Caso contrário, isso afetará os negócios. É a telemática que fornece informações sobre o custo de reparos e peças de reposição, o custo do tempo de inatividade de um carro que está sendo reparado devido à falha de um amante da velocidade. Com um dispositivo de telemática a bordo, você pode criar um programa exclusivo de fidelidade do usuário. ”
Desde o início deste ano, a Remoto se tornou fornecedora de soluções para duas grandes empresas de compartilhamento de carros, YouDrive e EasyRide, com 1.000 carros em sua frota. Usar a solução no compartilhamento de carros não é apenas conveniente, mas também eficaz do ponto de vista da segurança e do lado financeiro - na forma de reduzir o risco de acidentes e no programa de fidelidade. Com o desenvolvimento do compartilhamento de carros, os dados do usuário estão sendo acumulados e agora o compartilhamento de carros, como bancos, tem um determinado sistema de pontuação de clientes. Escrevemos sobre a lógica da operação de algoritmos de pontuação para usuários de compartilhamento de carros, analisando primeiro
o algoritmo de pontuação com base em acelerações e freios acentuados e, em seguida,
os algoritmos de análise do estilo de condução com base nos valores de velocidade, rotação do motor e indicadores do acelerômetro .

Mas estamos trabalhando ativamente não apenas no mercado russo, mas este é um desafio adicional. Com a expansão da geografia do trabalho, ficou claro que a reestruturação correta e eficaz da vertical de engenharia é um momento-chave do desenvolvimento.
Diga Vitaly Baum, diretor de produtos
e Vyacheslav Sokolov, diretor de engenharia:Nosso sistema consiste em um conjunto de componentes. Na engenharia, equipes dedicadas são responsáveis por eles. De fato, a Engenharia inclui 3 processos de negócios e um conjunto de serviços de suporte.
Os seguintes processos de negócios podem ser distinguidos nas unidades de Engenharia:
- Desenvolvimento de um dispositivo telemático com software embarcado para integração com carros. Lida com o departamento de engenharia da HW.
- O processo de fabricação de dispositivos para um cliente específico, por ordem de uma unidade de negócios. Responsável pela Manufatura
- Desenvolvimento de Remoto Cloud Services, responsável pela interação do cliente, usuário e dispositivo telemático. É uma infinidade de serviços de back-end com um conjunto de portais para vários usuários, aplicativos móveis clientes, Data lake. A produção é gerenciada pelo departamento de gerenciamento de produtos. O desenvolvimento de toda a parte do software é o departamento de Desenvolvimento de Produto, com releases e suporte, a equipe operacional do RCS.
Vale ressaltar que a tarefa de determinar os requisitos funcionais para um recurso específico recai sobre o departamento de Gerenciamento de Produtos, que, além de especialistas em produtos, também inclui analistas e designers. Além disso, os requisitos vão para o departamento de desenvolvimento de produtos, que enfrenta a difícil tarefa de decompor recursos em componentes do sistema, incluindo o firmware do dispositivo. Essa tarefa é realizada pelo Arquiteto de Desenvolvimento de Produto, juntamente com uma equipe de analistas de sistemas.
Como é o planejamento de produtos? Recentemente, o gerenciamento de produtos tornou-se parte de uma equipe de engenharia. E essa estrutura organizacional se refletiu em como começamos a trabalhar. A equipe de PM determina qual produto deve ser em geral, quais funções ele deve ter, independentemente dos componentes do sistema. Acontece uma breve - uma descrição superficial do que precisa ser feito na tarefa. Depois disso, são preparadas especificações funcionais, que chamamos de FSD, ou um conjunto de histórias de trabalho - por exemplo, a capacidade de enviar um aplicativo "registro para manutenção" no produto. Cada recurso é descrito por um conjunto de histórias de trabalho semelhantes.

Os PMs também estão envolvidos no projeto técnico. Eles executam uma análise técnica da especificação funcional e criam um design técnico - TDD (Technical Design Document), discutem esse design técnico com os desenvolvedores e o aterram sob seu entendimento. Depois que os requisitos funcionais e o design técnico são escritos, começamos a trabalhar na interface - essa é a interface da experiência do usuário.
Assim, os engenheiros de produto formam um determinado conjunto de "unidades" de utilidade para o cliente ("inscrever-se para manutenção" pode ser uma unidade de utilidade) e as repassam a um especialista que descreve a lógica deste conjunto. A utilidade em um pedido de manutenção significa que o cliente pode preencher um formulário com as informações necessárias, o que coincide com o que os revendedores esperam ao enviar um pedido de manutenção. O especialista do produto também analisa o mercado, estuda o que deve estar no produto e qual o valor que ele oferece aos clientes.
Hoje, nossos especialistas em produtos se comunicam mais com os negócios dentro da empresa ou diretamente com os clientes. O roteiro é formado pelo comitê de roteiro, que inclui os principais gerentes da empresa para levar em consideração todas as áreas de desenvolvimento da empresa. O comitê se reúne uma vez por trimestre.
Isso é feito para coordenar entendimentos comuns e garantir a integridade do produto, para que os recursos se encaixem perfeitamente na visão atual do produto.
Existe um serviço separado - cibersegurança, que interage com pessoas que trabalham com dispositivos e especialistas do departamento de back-end para identificar vulnerabilidades, fechá-las e avaliar riscos, aos quais esses riscos podem levar. Hoje, a diretora de engenharia, que também lidera a equipe de produtos, define a tarefa dessa divisão e, por sua vez, comunica-se com o cliente e entende o que é agora necessário para cumprir todos os padrões de segurança cibernética. Tudo isso está incluído no plano de lançamento, as vulnerabilidades são fechadas, os certificados são obtidos e, em geral, a brecha de segurança é eliminada.
Após a funcionalidade ter sido elaborada pela engenharia e avaliada pelo departamento de segurança, sua especificação vai para a equipe de desenvolvimento do produto, onde o grupo de trabalho decompõe as funções de acordo com os componentes do sistema - o que diz respeito ao back-end, o que ao dispositivo, o que o aplicativo móvel deve ser capaz de fazer. A equipe de desenvolvimento de produtos e a equipe de engenharia da HW concordam com a cooperação, tudo se resume a um plano conjunto e discorda das equipes.
Como implantamos
No final do desenvolvimento, o resultado coletado passa por testes de integração e lançamento para a liberação na plataforma em nuvem. Na plataforma em nuvem em que hospedamos (Azure), ambientes hospedados para clientes. O ambiente é responsável pela equipe operacional na qual os engenheiros, o DevOps e o suporte trabalham.
Comentado por Vladimir Glazkov, engenheiro sênior de DevOps:Toda a nossa infraestrutura é descrita como código. Nós fazemos todas as alterações somente através do código. Essa abordagem reduz o risco do fator humano durante as atualizações. Também permite implantar rapidamente uma instância adicional do ambiente para algumas necessidades urgentes temporárias. No caso de uma falha de energia da computação (VM / VMSS), você pode implantar rapidamente uma nova instância.
Sobre o CI / CD - no momento, usamos um monte de TeamCity / Octopus Deploy. O TeamCity está no processo de montagem de projetos .net, testes de unidade são iniciados, após o qual uma versão é criada no Octopus e implantada nos destinos apropriados (VM / VMSS / K8S). Após uma implantação bem-sucedida, os testes de aceitação são iniciados. Se algum dos testes falhar, a equipe de desenvolvimento será notificada.
Inicialmente, para cada projeto de negócios, conjuntos separados de recursos foram criados, incluindo ferramentas de CI / CD. Rapidamente, percebeu-se que, com um aumento no número de projetos, essa abordagem está fadada ao fracasso - é simplesmente impossível administrar esse zoológico de maneira eficaz. Há dois anos, foi lançado um projeto de unificação, que terminou quatro meses depois. Em seu processo, os componentes principais do sistema foram alocados, para eles o processo de montagem e implantação é o mesmo para todos os ambientes. A capacidade de adicionar uma montagem / implantação de componentes adicionais específicos para um projeto de negócios específico também foi descrita e implementada. Ao criar novos ambientes, instâncias individuais do TeamCity e Octopus não são mais necessárias. Foram escritos scripts que, por meio da API, criam e configuram tudo o que é necessário para montagem e implantação.
Chegamos ao seguinte uso de ambientes: para desenvolvimento, cada equipe usa dois ambientes:
- a primeira, de fato, para o desenvolvimento de novas funcionalidades, verificação de funcionalidades pelo autor, etc;
- o segundo é para estabilização.
Pode haver muitos desses conjuntos de ambientes; a manutenção deles é bastante simples, tendo em vista a unificação realizada.
Também existe um ambiente para aceitação da liberação pela equipe responsável pelo ambiente de combate. Passa no teste final antes do lançamento na produção.
Temos um acordo com os desenvolvedores sobre o dispositivo para transformar arquivos de configuração. Em cada projeto, há um arquivo que contém um conjunto de parâmetros com diferentes significados em diferentes ambientes. Os desenvolvedores preenchem o arquivo com os parâmetros necessários (cadeias de conexão de banco de dados, chaves de conexão etc.), os valores desses parâmetros são variáveis. Para cada ambiente, os valores dessas variáveis são individuais. Com essa abordagem, os desenvolvedores não interferem na coleta local e na verificação por si próprios. Variáveis são armazenadas no Octopus Deploy.
Para monitoramento, usamos o Azure Monitor, Application Insights e Log Analytics. O Zabbix está vivendo seu tempo, provavelmente no futuro será atribuído o papel honroso de verificações externas.
Quando entrei na empresa, a criação de um novo ambiente levou três semanas. Quase não havia instruções, as alterações foram feitas manualmente e não foram registradas em nenhum lugar. Nossa jornada para o IaaC começou com a automação simples, que reduziu o processo para 1 semana. Agora, a criação de um novo ambiente leva 4 horas. Automatizou cerca de 95% das ações.
Nosso back-end é escrito em .net (4.6 / 4.7 e núcleo), a frente é JS. Para hospedagem, usamos
Conjuntos de Escalas de Máquinas Virtuais e K8S. Conseqüentemente, é muito fácil dimensionar sob alterações de carga.
Como o sistema funciona por dentro
Diz Ivan Stolet, chefe da Bright Box de Desenvolvimento de Plataforma:
Você sempre pode encontrar um diagrama da arquitetura atual
no site .
Todos os dados no sistema são armazenados distribuídos. Existem bancos de dados separados para o armazenamento de dados pessoais com referência à região e organizados de acordo com a legislação local. Existem bancos de dados nos quais a parte do conteúdo dos serviços de retenção de clientes, armazenamento de notícias, aplicativos, dados de vários sistemas de integração de revendedores e fabricantes de automóveis é acumulada. Separadamente, são coletadas informações de telemetria processadas, bem como configurações e outros dados necessários para garantir a operacionalidade dos serviços Remoto e nossos dispositivos. Coletamos dados frios de telemetria separadamente usando bancos de dados projetados para armazenar grandes quantidades de informações. Além disso, foram criados armazéns de dados separados que oferecem a capacidade de operar os sistemas Remoto AI. Com a ajuda dos chamados rastreadores, todas as informações estatísticas necessárias são coletadas e, com base nisso, a inteligência artificial seleciona grupos de usuários e cria “previsões”.
A coleta de dados dos dispositivos é realizada usando a solução IoT da Microsoft. Os dispositivos estão conectados à plataforma, a plataforma coleta toda a telemetria e a coloca em um hub intermediário de eventos de armazenamento temporário de dados. Nossos funcionários já estão conectados a hubs de eventos, telemetria de processos, registram dados frios e dados processados, como rotas e eventos de tráfego, e executam comandos. Um serviço separado pode solicitar dados de diagnóstico do dispositivo, analisar as condições do carro e criar relatórios personalizados.
Para aplicativos móveis personalizados, é implementada uma API, com a qual o usuário obtém acesso à telemetria processada, além da capacidade de executar comandos para o dispositivo instalado no carro. A mesma API é usada para obter acesso aos dados do serviço de retenção de clientes, o usuário recebe notícias, ofertas especiais de revendedores e fabricantes de carros em seu aplicativo móvel, tem a oportunidade de usar serviços, por exemplo, preencher um aplicativo para um test drive ou um empréstimo. Por meio do aplicativo móvel, o usuário pode definir as configurações do dispositivo, ativar serviços telemáticos, como empurrar cerca de choque, acelerar ou sair da zona, além de configurar a partida automática do motor de acordo com a programação ou a temperatura.
Os revendedores, por sua vez, usando os portais fornecidos, têm a oportunidade de executar diagnósticos no dispositivo do usuário, bloquear a partida remota do mecanismo, por exemplo, para trabalho técnico ou serviço pós-venda, formar uma oferta pessoal especial e também processar solicitações do usuário. A comunicação com o usuário nesses casos geralmente é realizada usando notificações push.
O revendedor também tem a oportunidade de personalizar o aplicativo móvel, o revendedor ou a montadora pode pintar o aplicativo nas cores de sua marca, alterar ícones-chave, determinar o conjunto de funções disponíveis no aplicativo e algumas outras funções cosméticas, um portal separado foi criado para isso.
Para fornecer suporte ao cliente, existe um portal técnico no qual você pode validar as configurações atuais dos usuários e seus dispositivos, diagnosticar a operabilidade do dispositivo, se necessário, os dados podem ser ajustados a pedido do cliente, por exemplo, se o usuário escolher outro modelo de carro durante a configuração, o especialista em suporte poderá corrigi-lo. O portal também oferece a possibilidade de FOTA (firmware over the air) atualizar o firmware de um dispositivo ou grupo de dispositivos no caso de uma nova versão do firmware com novas funções ou correções.
E algumas palavras sobre segurança
Comentário de Artyom Nerob, CISO:Hoje, a equipe de segurança da empresa está em diálogo ativo com os negócios.
Nós nos esforçamos para cumprir os requisitos legais: lei de dados pessoais e GDPR. Mais importante do que nunca, configurar um processo de ciclo de desenvolvimento seguro, ou seja, adicionando alguns pontos de controle aos procedimentos de desenvolvimento atuais na forma de verificação de código antes do lançamento do aplicativo, análise adicional de código de terceiros, aumentando a conscientização dos desenvolvedores em termos de como escrever código seguro inicialmente. As práticas e padrões mundiais recomendam altamente a preocupação com a segurança durante o desenvolvimento, e não depois. Porque após o lançamento, o custo de correção da vulnerabilidade é 30% maior. Verificamos periodicamente a segurança do produto pelos clientes, ou seja, testes de penetração. Dado o aumento da segurança das informações, agora estamos passando por esses testes com êxito e não há vulnerabilidades com riscos críticos ou altos no produto, de lançamento em lançamento.
Hoje, temos uma equipe para realizar testes de penetração e a consideramos uma equipe que nos ajudará no processo de desenvolvimento a fazer uma revisão da segurança do código a ser levada em consideração em versões futuras. Esses não serão testes de penetração completos, mas simplesmente uma revisão que será incorporada ao nosso processo de negócios de desenvolvimento, o que é extremamente correto do ponto de vista de um ciclo de desenvolvimento de código seguro.
Além disso,
confirmamos o certificado da ISO 27001 , o padrão para gerenciamento de segurança da informação, de acordo com uma auditoria da BSI.
Como vivemos e o que vem a seguir?
Aqui na Bright Box, estamos constantemente procurando maneiras de desenvolver a plataforma Connected Car da Remoto.
, , , , , . , , Honda, Motor Car, MINI. 2017 Zurich.

, Bright Box « ». , . , , :
: , .«»:
- ( ), , ( );
- ( );
- /, ;
- ;
- (///);
- .
, , , .
?, , .
, . work-life 1- , . .
, , , - .. , .
– .
? , .
, , . , 3 . .
, . :
– , . , «» . , .
– , . , – , , . , – 1-2% .
– , . 1- , .
, – .
– .
, , , .
Bright Box . , , ,
.

, Connected Cars
.
Driving to the future Medium .