Il y a 2 ans, nous avons commencé un blog sur Habr, commençant par un
texte de révision sur ce que nous faisons, quelles technologies nous utilisons et où nous nous déplaçons. Depuis 2017, beaucoup de choses ont changé et aujourd'hui, nous allons vous dire comment prendre notre décision - la plate-forme de gestion mondiale des voitures connectées, qui est utilisée par de nombreux utilisateurs et entreprises de différents niveaux. Le matériel est ventilé par processus, de l'énoncé du problème au déploiement.

Le produit phare Bright Box -
Remoto - est une plate-forme technologiquement sophistiquée et riche en fonctionnalités pour la voiture connectée, qui comprend des équipements, des logiciels pour les concessionnaires et les constructeurs automobiles, ainsi qu'une application mobile pour l'utilisateur. Selon les principales analyses de Bright Box chez les propriétaires de voitures, il s'est avéré tout d'abord qu'ils avaient besoin de contrôler à distance les serrures de porte, la climatisation et de rechercher une voiture avec des alertes de choc ou d'évacuation. Ce dernier est déjà un classique. Maintenant, le bloc Remoto fournit à l'utilisateur les services suivants: contrôle à distance des fonctions du véhicule, possibilité de recevoir des données du matériel et du CAN, GPRS, SMS, Bluetooth et contrôle de la puissance de sortie de l'unité d'allumage électronique. L'utilisateur reçoit ces informations dans une application mobile.
Et un tel utilisateur peut être non seulement le propriétaire de la machine. Les informations disponibles pour la collecte peuvent être un outil utile pour de nombreux acteurs du marché automobile. Par exemple, le covoiturage. Aujourd'hui, les sociétés d'autopartage sont les acteurs les plus actifs du marché automobile. Moscou est devenue la première ville du nombre total de voitures impliquées dans le covoiturage. D'ici 2020, le covoiturage devrait atteindre la barre des 40 000 voitures en Russie. Les sociétés d'autopartage deviennent propriétaires des données suivantes: kilométrage, coordonnées GPS, vitesse, état des portes et niveau de carburant. La clé de tout cela est un smartphone, qui est une option moins chère et plus sûre.
Andrey Kuprikov, co-fondateur et directeur du développement commercial chez YouDrive et l'un des clients de Bright Box:«L'autopartage sans solution télématique est difficile à imaginer. Notre plateforme est obligée de collecter toutes les informations possibles sur la voiture, quoi et comment cela se passe. Sinon, cela affectera l'entreprise. C'est la télématique qui renseigne sur le coût des réparations et des pièces détachées, le coût des temps d'arrêt d'une voiture en réparation en raison de la faute d'un amoureux de la vitesse. Avec un dispositif télématique à bord, vous pouvez créer un programme de fidélité utilisateur unique. »
Depuis le début de cette année, Remoto est devenu un fournisseur de solutions pour deux grandes sociétés d'autopartage, YouDrive et EasyRide, avec 1 000 voitures dans sa flotte. L'utilisation de la solution en covoiturage est non seulement pratique, mais aussi efficace du point de vue de la sécurité et du côté financier - sous forme de réduction des risques d'accidents et dans le programme de fidélité. Avec le développement de l'autopartage, les données des utilisateurs s'accumulent, et maintenant l'autopartage, comme les banques, dispose d'un certain système de notation des clients. Nous avons écrit sur la logique du fonctionnement des algorithmes de notation pour les utilisateurs de l'autopartage, en analysant d'abord
l'algorithme de notation basé sur les accélérations et le freinage brusques, puis
les algorithmes d'analyse du style de conduite basés sur les valeurs de la vitesse, du régime moteur et des indicateurs d'accéléromètre .

Mais nous travaillons activement non seulement sur le marché russe, mais c'est un défi supplémentaire. Avec l'expansion de la géographie du travail, il est devenu clair que la restructuration correcte et efficace de la verticale de l'ingénierie est un moment clé du développement.
Say Vitaly Baum, chef de produit
et Vyacheslav Sokolov, directeur de l'ingénierie:Notre système se compose d'un ensemble de composants. En ingénierie, des équipes dédiées en sont responsables. En fait, l'ingénierie comprend 3 processus métier et un ensemble de services de support.
Les processus commerciaux suivants peuvent être distingués au sein des unités d'ingénierie:
- Développement d'un appareil télématique avec logiciel embarqué pour l'intégration avec les voitures. Traite avec le département d'ingénierie HW.
- Processus de fabrication de dispositifs pour un client spécifique sur commande d'une unité commerciale. Responsable de la fabrication
- Développement de Remoto Cloud Services, responsable de l'interaction entre le client, l'utilisateur et l'appareil télématique. Il s'agit d'une multitude de services backend avec un ensemble de portails pour différents utilisateurs, applications mobiles clientes, Data lake. La production est gérée par le département Product management. Le développement de l'ensemble de la partie logicielle est le département Développement Produit, avec les versions et le support, l'équipe opérationnelle RCS.
Il convient de noter que la tâche de déterminer les exigences fonctionnelles pour une fonction particulière incombe au service de gestion des produits, qui, en plus des experts en produits, comprend également des analystes et des concepteurs. En outre, les exigences vont au département de développement de produits, qui est confronté à la tâche difficile de décomposer les fonctionnalités en composants du système, y compris le micrologiciel de l'appareil. Cette tâche est gérée par l'architecte de développement produit, ainsi que par une équipe d'analystes systèmes.
À quoi ressemble la planification des produits? Récemment, la gestion des produits fait partie d'une équipe d'ingénieurs. Et une telle structure organisationnelle s'est reflétée dans la façon dont nous avons commencé à travailler. L'équipe PM détermine quel produit doit être en général, quelles fonctions il doit avoir, quels que soient les composants du système. Il se révèle un bref - une description superficielle de ce qui doit être fait dans la tâche. Après cela, des spécifications fonctionnelles sont préparées, que nous appelons FSD, ou un ensemble d'histoires de travail - par exemple, la possibilité d'envoyer une application «s'inscrire pour la maintenance» dans le produit. Chaque fonctionnalité est décrite par un ensemble d'histoires d'emploi similaires.

Les PM participent également à la conception technique. Ils effectuent une analyse technique de la spécification fonctionnelle et créent une conception technique - TDD (Document de conception technique), discutent de cette conception technique avec les développeurs et l'utilisent sous leur compréhension. Une fois les exigences fonctionnelles et la conception technique rédigées, nous commençons à travailler sur l'interface - il s'agit de l'interface de l'expérience utilisateur.
Ainsi, les ingénieurs produits forment un certain ensemble «d'unités» d'utilité pour le client («s'inscrire pour la maintenance» peut être une telle unité d'utilité) et le transmettent à un spécialiste qui décrit la logique de cet ensemble. L'utilité d'une demande de maintenance signifie que le client peut remplir un formulaire avec les informations nécessaires, ce qui coïncide avec ce que les concessionnaires attendent lors de la soumission d'une demande de maintenance. Le spécialiste des produits analyse également le marché, étudie ce qui devrait être dans le produit et quelle valeur il donne aux clients.
Aujourd'hui, nos experts en produits communiquent davantage avec les entreprises de l'entreprise ou directement avec les clients. La feuille de route est constituée par le comité de la feuille de route, qui regroupe les dirigeants de l'entreprise pour prendre en compte tous les axes de développement de l'entreprise. Le comité se réunit une fois par trimestre.
Ceci est fait afin de coordonner les compréhensions communes et d'assurer l'intégrité du produit afin que les fonctionnalités s'intègrent en douceur dans la vision actuelle du produit.
Il existe un service distinct - la cybersécurité, qui interagit avec les personnes travaillant avec des appareils et les spécialistes du service backend afin d'identifier les vulnérabilités, de les fermer et d'évaluer les risques, auxquels ces risques peuvent conduire. Aujourd'hui, le chef de l'ingénierie, qui dirige également l'équipe produit, définit la tâche de cette division et elle, à son tour, communique avec le client et comprend ce qui est maintenant nécessaire pour se conformer à toutes les normes de cybersécurité. Tout cela est inclus dans le plan de publication, les vulnérabilités sont fermées, les certificats sont obtenus et, en général, l'écart de sécurité est éliminé.
Une fois que la fonctionnalité a été élaborée par l'ingénierie et évaluée par le service de sécurité, sa spécification est transmise à l'équipe de développement de produits, où le groupe de travail décompose les fonctions en fonction des composants du système - ce qui se rapporte au backend, à l'appareil, à ce que l'application mobile devrait pouvoir faire. L'équipe de développement de produits et l'équipe d'ingénierie matérielle s'accordent sur la coopération, tout se résume à un plan commun et n'est pas d'accord sur les équipes.
Comment déployons-nous
À la fin du développement, le résultat collecté subit des tests d'intégration et un déploiement vers la version sur la plateforme cloud. Sur la plateforme cloud où nous hébergeons (Azure), des environnements hébergés pour les clients. L'environnement est responsable de l'équipe d'exploitation dans laquelle travaillent les ingénieurs, DevOps et support.
Commentaire de Vladimir Glazkov, ingénieur principal DevOps:Toute notre infrastructure est décrite comme du code. Nous effectuons toutes les modifications uniquement via le code. Cette approche réduit le risque du facteur humain lors des mises à jour. Il vous permet également de déployer rapidement une instance supplémentaire de l'environnement pour certains besoins urgents temporaires. En cas de panne de courant informatique (VM / VMSS), vous pouvez rapidement déployer une nouvelle instance.
À propos de CI / CD - pour le moment, nous utilisons un groupe de TeamCity / Octopus Deploy. TeamCity est en train d'assembler des projets .net, des tests unitaires sont lancés, après quoi une version est créée dans Octopus et déployée sur les cibles appropriées (VM / VMSS / K8S). Après un déploiement réussi, les tests d'acceptation sont lancés. Si l'un des tests se bloque, l'équipe de développement en sera avertie.
Initialement, pour chaque projet d'entreprise, des ensembles de ressources distincts ont été créés, y compris des outils CI / CD. Assez rapidement, la réalisation est venue qu'avec une augmentation du nombre de projets, cette approche est vouée à l'échec - il est tout simplement impossible d'administrer un tel zoo de manière efficace. Il y a deux ans, un projet d'unification a été lancé, qui s'est terminé 4 mois plus tard. Dans son processus, les composants principaux du système ont été alloués, pour eux, le processus d'assemblage et de déploiement est le même pour tous les environnements. La possibilité d'ajouter un assemblage / déploiement de composants supplémentaires spécifiques à un projet d'entreprise particulier a également été décrite et mise en œuvre. Lors de la création de nouveaux environnements, les instances individuelles de TeamCity et Octopus ne sont plus nécessaires. Des scripts ont été écrits qui, via l'API, créent et configurent tout ce qui est nécessaire pour l'assemblage et le déploiement.
Nous sommes arrivés à l'utilisation suivante des environnements: pour le développement, chaque équipe utilise deux environnements:
- le premier pour, en fait, le développement de nouvelles fonctionnalités, la vérification des fonctionnalités par l'auteur, etc .;
- le second est pour la stabilisation.
Il peut exister de nombreux ensembles d'environnements, leur maintenance est assez simple compte tenu de l'unification effectuée.
Il existe également un environnement pour l'acceptation de la libération par l'équipe responsable de l'environnement de combat. Il passe le test final avant la sortie en production.
Nous avons un accord avec les développeurs sur le dispositif de transformation des fichiers de configuration. Dans chaque projet, il y a un fichier qui contient un ensemble de paramètres qui ont des significations différentes sur différents environnements. Les développeurs remplissent le fichier avec les paramètres nécessaires (chaînes de connexion à la base de données, clés de connexion, etc.), les valeurs de ces paramètres sont des variables. Pour chaque environnement, les valeurs de ces variables sont individuelles. Avec cette approche, les développeurs n'interfèrent pas avec la collecte locale et la vérification par eux-mêmes. Les variables sont stockées dans Octopus Deploy.
Pour la surveillance, nous utilisons Azure Monitor, Application Insights et Log Analytics. Zabbix vit son temps, probablement à l'avenir, il lui sera attribué le rôle honorable de contrôles externes.
Lorsque j'ai rejoint l'entreprise, la création d'un nouvel environnement a pris trois semaines. Il n'y avait presque pas d'instructions, les modifications ont été apportées manuellement et n'ont été enregistrées nulle part. Notre voyage vers l'IaaC a commencé par une automatisation simple, qui a réduit le processus à 1 semaine. La création d'un nouvel environnement prend maintenant 4 heures. Automatisation d'environ 95% des actions.
Notre backend est écrit en .net (4.6 / 4.7 et core), le front est JS. Pour l'hébergement, nous utilisons des ensembles de
machines virtuelles et K8S. En conséquence, il est très facile d'évoluer sous des changements de charge.
Fonctionnement du système à l'intérieur
Ivan Stolet, responsable du développement de la plateforme Bright Box:
Vous pouvez toujours trouver un schéma de l'architecture actuelle
sur le site .
Toutes les données du système sont stockées et distribuées. Il existe des bases de données distinctes pour le stockage des données personnelles par référence à la région et organisées conformément à la législation locale. Il existe des bases de données dans lesquelles la partie contenu des services de fidélisation de la clientèle, le stockage des nouvelles, des applications, des données de divers systèmes d'intégration des concessionnaires et des constructeurs automobiles est accumulée. Séparément, les informations de télémétrie traitées sont collectées, ainsi que les paramètres et autres données nécessaires pour garantir l'opérabilité des services Remoto et de nos appareils. Nous collectons les données de télémétrie à froid séparément à l'aide de bases de données conçues pour stocker d'énormes quantités d'informations. De plus, des entrepôts de données distincts ont été construits qui permettent de faire fonctionner les systèmes Remoto AI. Avec l'aide des soi-disant crawlers, toutes les informations statistiques nécessaires sont collectées, sur sa base, l'intelligence artificielle sélectionne les groupes d'utilisateurs et construit des «prédictions».
La collecte de données à partir des appareils est effectuée à l'aide de la solution IoT de Microsoft. Les appareils sont connectés à la plate-forme, la plate-forme collecte toutes les données de télémétrie et les place dans un concentrateur d'événements de stockage de données temporaire intermédiaire. Nos employés sont déjà connectés aux hubs d'événements, traitent la télémétrie, enregistrent les données froides et les données traitées, telles que les itinéraires et les événements de trafic, et exécutent les commandes. Un service distinct peut demander des données de diagnostic à l'appareil, analyser l'état de la voiture et créer des rapports personnalisés.
Pour les applications mobiles personnalisées, une API est implémentée, avec laquelle l'utilisateur a accès à la télémétrie traitée, ainsi que la possibilité d'exécuter des commandes pour l'appareil installé dans la voiture. La même API est utilisée pour accéder aux données du service de fidélisation de la clientèle, l'utilisateur reçoit des nouvelles, des offres spéciales des concessionnaires et des constructeurs automobiles dans son application mobile, a la possibilité d'utiliser des services, par exemple, pour remplir une demande d'essai routier ou de prêt. Grâce à l'application mobile, l'utilisateur peut définir les paramètres de l'appareil, activer des services télématiques, tels que pousser sur les chocs, accélérer ou quitter la zone, ainsi que configurer le démarrage automatique du moteur en fonction de l'horaire ou de la température.
Les concessionnaires, à leur tour, utilisant les portails fournis ont la possibilité d'exécuter des diagnostics sur l'appareil de l'utilisateur, de bloquer le démarrage du moteur à distance, par exemple, pour des travaux techniques ou un service après-vente, de former une offre personnelle spéciale et de traiter également les demandes des utilisateurs. Dans de tels cas, la communication avec l'utilisateur se fait le plus souvent à l'aide de notifications push.
Le concessionnaire a également la possibilité de personnaliser l'application mobile, le concessionnaire ou le constructeur automobile peut peindre l'application dans les couleurs de sa marque, changer les icônes clés, déterminer l'ensemble des fonctions disponibles dans l'application et certaines autres fonctions cosmétiques, un portail séparé a été créé à cet effet.
Pour fournir un support client, il existe un portail technique dans lequel vous pouvez valider les paramètres actuels des utilisateurs et de leurs appareils, diagnostiquer l'opérabilité de l'appareil, si nécessaire, les données peuvent être ajustées à la demande du client, par exemple, si l'utilisateur a choisi un autre modèle de voiture pendant la configuration, le spécialiste de l'assistance peut le corriger. Le portail offre également la possibilité de mettre à jour FOTA (firmware over the air) le firmware d'un appareil ou d'un groupe d'appareils en cas de nouvelle version du firmware avec de nouvelles fonctions ou corrections de bugs.
Et quelques mots sur la sécurité
Commentaire d'Artyom Nerob, CISO:Aujourd'hui, l'équipe de sécurité de l'entreprise est en dialogue actif avec l'entreprise.
Nous nous efforçons de respecter les exigences légales: loi sur les données personnelles et RGPD. Il est plus important que jamais d'établir un processus de cycle de développement sûr, c'est-à-dire l'ajout de quelques points de contrôle aux procédures de développement actuelles sous la forme d'une vérification de code avant la publication de l'application, une analyse de code tierce supplémentaire, sensibilisant les développeurs à la façon d'écrire du code sûr au départ. Les pratiques et normes mondiales recommandent fortement de se préoccuper de la sécurité pendant le développement et non après. Parce qu'après la publication, le coût de la correction de la vulnérabilité est 30% plus élevé. Nous vérifions périodiquement la sécurité des produits par les clients, c'est-à-dire tests de pénétration. Compte tenu de la sécurité accrue des informations, nous réussissons maintenant ces tests avec succès, et il n'y a pas de vulnérabilités avec des risques critiques ou élevés dans le produit d'une version à l'autre.
Aujourd'hui, nous avons une équipe pour effectuer des tests de pénétration, et nous la considérons comme une équipe qui nous aidera dans le processus de développement à faire un examen de la sécurité du code à prendre en compte dans les futures versions. Il ne s'agira pas de tests de pénétration complets, mais simplement d'un examen qui sera intégré à notre processus métier de développement, ce qui est extrêmement correct du point de vue d'un cycle de développement de code sûr.
De plus,
nous avons confirmé le certificat ISO 27001 , la norme de gestion de la sécurité de l'information selon un audit de BSI.
Comment vivons-nous et quelle est la prochaine étape?
Chez Bright Box, nous recherchons constamment des moyens de développer la plate-forme de voitures connectées de Remoto.
Et nos technologies ont déjà aidé les fabricants, les bureaux régionaux, les importateurs et les grands réseaux de concessionnaires non seulement à augmenter leurs revenus, mais aussi à améliorer considérablement la fidélisation de la clientèle et, surtout, à réduire les coûts d'exploitation. Au cours des deux dernières années, des sociétés telles que Honda, Motor Car, MINI sont devenues nos clients. Fin 2017, la société elle-même a intégré le groupe d'assurance de Zurich.
Les employés de l'entreprise plaisantent en disant que Bright Box fonctionne dans une "atmosphère d'intimidation et d'envie". Bien sûr, ce n'est pas le cas. Mais il y a certainement des raisons d'envie pour ceux qui ne travaillent pas avec nous dans l'équipe:Forfait social flexible: chaque employé a le droit de choisir quoi dépenser le budget alloué pour cela dans le montant de son salaire, mais sans dépasser le salaire moyen dans l'entreprise.«»:
- ( ), , ( );
- ( );
- /, ;
- ;
- (///);
- .
, , , .
?, , .
, . work-life 1- , . .
, , , - .. , .
– .
? , .
, , . , 3 . .
Bonus, . :
– , . , «» . , .
– , . , – , , . , – 1-2% .
– , . 1- , .
, – .
– .
, , , .
Bright Box . , , ,
.

, Connected Cars
.
Driving to the future Medium .