Plus les moyens de production sont abordables, plus le problème des contrefaçons est aigu. Et si le produit est massif et facilement faux, la vague de contrefaçon est presque garantie. Pour lutter contre ce fléau, nous, le Centre pour le développement des technologies avancées, développons un système de marquage et de suivi des produits. Elle a reçu le nom
Honest SIGN . Le fabricant applique un code DataMatrix unique à chaque unité de ses produits, et les clients peuvent voir par ce code si le produit est en face de lui, qui l'a produit et comment il est arrivé sur le comptoir.
Avec cet article d'introduction sur notre blog, nous voulons vous présenter le système et les principes de son fonctionnement, et dans les articles suivants, nous décrirons plus en détail la structure technique et les caractéristiques du développement.
Qui nous sommes et ce que nous faisons
Nous sommes la société
CRPT , Center for the Development of Advanced Technologies. L'une des directions de notre activité est le développement, la mise en œuvre et le développement d'un système numérique pour le marquage et le traçage de toutes marchandises. Il est nécessaire pour que chaque acheteur puisse être sûr dans le magasin s'il y a un faux devant lui.
Aujourd'hui, les fabricants russes de cigarettes, de chaussures et de médicaments sont connectés à notre base de données. Jusqu'à présent, les utilisateurs les plus actifs sont des représentants de l'industrie du tabac - l'étiquetage obligatoire de tous les produits manufacturés et importés dans le pays a déjà commencé dans ce groupe. Déjà à travers le système passe jusqu'à 50 millions de packs par jour. L'industrie légère, les fabricants de lait, de pneus, de caméras et d'autres industries qui travaillent également sur la technologie en mode pilote se joignent activement.
Fonctionnement du système de marquage
Le gouvernement russe décide de la nécessité d'un projet pilote d'étiquetage dans un certain groupe de produits. Habituellement, cette décision apparaît à l'initiative des représentants des entreprises. Nous lançons un projet pilote, dans lequel les fabricants choisissent un format d'étiquetage qui leur convient et des informations supplémentaires pour chaque unité de marchandises qui seront placées dans la base de données et chiffrées dans des codes d'étiquetage uniques - DataMatrix. Ces informations supplémentaires peuvent être très différentes - par exemple, le prix de vente recommandé ou la date d'expiration. Ensuite, les fabricants introduisent un logiciel qui leur permet de mettre DataMatrix sur des packages, et nous, en tant qu'opérateur de système, leur donnons gratuitement de l'équipement - des bureaux d'enregistrement des émissions, qui sont nécessaires pour transmettre des codes numériques via des canaux de communication sécurisés.
Pendant que le projet pilote est en cours, nous aidons les participants à déboguer les processus de marquage et d'échange d'informations. Et lorsque tout est prêt, la participation d'autres fabricants de cette industrie à notre système devient obligatoire.
Au fur et à mesure que les marchandises passent du fabricant aux étagères, tous les participants de la chaîne envoient diverses informations à Honest SIGN:

En conséquence, nous collectons toutes les informations sur l'origine et le mouvement de chaque produit fabriqué par les participants au système et les fournissons aux fabricants, aux détaillants et aux clients. Lorsque vous arrivez au magasin, devant le comptoir, vous pouvez accéder à l'application mobile Honest SIGN (
AppStore ,
Google Play ), scanner le code sur l'emballage et trouver immédiatement le pays, la ville et l'adresse de production. Autrement dit, vous saurez immédiatement si le faux est devant vous ou non.
Vous demandez sûrement: "Et qu'est-ce qui empêche de truquer vos codes?" Le fait est que chaque code de marquage est signé par une petite partie protégée, un cryptocode. Et le faux code ne passera tout simplement pas le chèque dans le système, ni lors de l'application, ni lors de la numérisation par l'acheteur, ni lors du paiement.
D'où viennent les codes? Il y a deux façons de les obtenir:
- Ou nous générons nous-mêmes entièrement des codes uniques non reproductibles et les fournissons aux fabricants.
- Ou bien, le fabricant délivre lui-même la partie série du code, afin qu'il soit plus pratique d'utiliser le marquage avec ses systèmes comptables, et ajoute la partie cryptographique que nous avons générée.
Comment fonctionne notre système
Le schéma de travail de base ressemble à ceci:

Il comprend cinq blocs.
La «porte d'entrée» du système est le
routage - une sorte de passerelle. Toutes les informations de chaque acteur de la chaîne commerciale sont disponibles ici: fabricants, grossistes et détaillants. Le routage enrichit les données entrantes avec des attributs supplémentaires et décide quel pipeline doit traiter telle ou telle information.
Le traitement consiste à traiter toutes les informations entrantes, filtrées et enrichies par le routage. Chaque industrie se distingue par ses ensembles de processus commerciaux, que nous automatisons constamment. Par exemple, pour le tabac, ce sont les droits d'accise, pour le lait, c'est une date d'expiration.
Le système de stockage est construit sur une base de valeurs-clés distribuée. Là, nous avons mis toutes les informations sur chaque champ d'étiquetage, sur chaque document qui a influencé le changement de statut de ce code. Chaque grand groupe de produits a sa propre base, car la quantité d'informations à sauvegarder et à mettre à l'échelle est très importante.
Nous utilisons l'entrepôt de données de différentes manières: nous effectuons des sélections, formons un affichage graphique des informations dans votre compte personnel et les transmettons aux participants du système à l'aide d'une API externe.
Les composants du système effectuent un certain nombre de tâches: authentification, autorisation, interaction interservices. En d'autres termes, tout ce qui concerne la vérification des droits d'accès et l'interaction des composants du système entre eux.
Enfin, le
compte personnel est une interface graphique pour les participants au système: fabricants, grossistes et organisations de vente au détail. Autrement dit, pour les entreprises engagées dans la vente, la retraite et la vente au consommateur final. Dans votre compte personnel, des rapports et des graphiques sont générés sous une forme pratique sur le nombre de codes envoyés par l'entreprise, pour quelle période, pour quelles catégories de produits, combien de marchandises ont déjà été vendues au détail, etc.
Comment l'information circule-t-elle dans le système?
Le fabricant génère un lot de codes et nous envoie ou crée une commande pour recevoir des codes. En réponse, nous envoyons soit les résultats de la vérification des codes par des modèles, soit une liste de codes prêts à l'emploi. Après cela, le fabricant met ces codes et signale qu'ils ont été utilisés ou perdus dans le processus de production, c'est-à-dire que les marchandises avec le code sont rejetées. Ces informations sont transférées du routage au traitement, qui interagit directement avec l'entrepôt de données. En outre, des comptes personnels fonctionnent avec lui, dans lesquels la logique métier des participants au système est protégée.
En d'autres termes, nous recevons des données des participants:
- quels codes sont appliqués aux marchandises,
- Quelles informations supplémentaires sur le produit doivent être montrées aux utilisateurs finaux.
De plus, nous regroupons ces données, garantissant l'unicité et la sécurité des codes contre la falsification, et sous une forme pratique, nous fournissons tous les utilisateurs via des applications mobiles. Et les représentants des entreprises peuvent à tout moment recevoir des rapports sur toutes les informations sur leurs produits disponibles dans notre système.
La technologie
Puisque nous créons un système national d'étiquetage, il «digérera» quotidiennement les informations sur tous les produits fabriqués dans le pays et les transmettra à des dizaines de millions d'utilisateurs. Par conséquent, nous avons choisi des technologies qui non seulement offrent des performances élevées, mais nous permettent également de faire évoluer rapidement le système.
Aujourd'hui, nous traitons jusqu'à 300 unités de marchandises vendues par seconde, et à peu près à la même fréquence - des enregistrements de marchandises qui passent par les étapes «libéré», «code», «transféré d'un participant à un autre». Pour les seuls produits du tabac, environ un milliard d'enregistrements sont saisis dans le système chaque mois, et la quantité totale d'informations atteint des dizaines de Tb.
Tous les services du système - et il y en a environ 250 - sont déployés sur un cluster Kubernetes, nous augmentons donc discrètement la capacité et le volume de stockage si nécessaire.
Pour la plupart, le système est écrit en Java 11 et le traitement est en Scala. Pour la communication interserveur, nous avons choisi Kafka. Les codes d'étiquetage eux-mêmes sont stockés dans Hbase et les informations associées sont stockées dans PostgreSQL. Nous emballons le code système dans des conteneurs Docker, livrons Helm aux clusters Kubernetes, surveillons avec Prometheus et surveillons la santé à Grafana.
Nous avons connecté aux entrepôts de données les serveurs analytiques que nous avons développés, qui établissent des rapports pour les participants du système. Jusqu'à présent, les serveurs sont construits sur la base d'Hbase, mais nous expérimentons très activement avec ClickHouse.
Développement du système
De nombreux participants attendent des commentaires de notre part - recevons-nous toutes les informations envoyées, y a-t-il des problèmes de traitement du document, le participant au système a-t-il les codes qui sont transmis? Un tel mécanisme de rétroaction doit être de bout en bout, sans utiliser de stockage, afin de ne pas dupliquer les informations et ne pas charger en outre le système. Par conséquent, nous nous éloignerons des référentiels intermédiaires et travaillons déjà sur la mise en œuvre de transactions de bout en bout par le routage, le traitement et vice versa.
Dans les publications suivantes, nous décrirons en détail comment chacun des cinq blocs architecturaux est mis en œuvre, à propos de notre système, des technologies et des personnes qui le créent.
Le matériel a été préparé avec le soutien de Dmitry Poluyanov, chef de l'équipe de développement (Java) du MDCT.