Comment nous avons créé un service de campagne publicitaire conforme au RGPD

Le RGPD, entré en vigueur en mai de cette année, a sérieusement affecté le marché du marketing Internet. Ses participants veulent former le public le plus précis pour l'affichage des publicités, mais maintenant, pour cela, il est nécessaire d'obtenir le consentement explicite de l'utilisateur, sinon même une petite ressource de niche peut s'exposer à des amendes de plusieurs millions de dollars. Certaines ressources ont été fermées, mais beaucoup sont en cours de conversion pour répondre à de nouvelles exigences. Et notre projet de service de gestion de campagne publicitaire pour un client des États-Unis en est un excellent exemple.

image

À propos du service


Notre client, une entreprise américaine de Los Angeles, se concentre sur le marketing dans l'industrie musicale. Son service prend en charge des campagnes publicitaires complexes pour des équipes de différentes tailles - des gangs du coin aux stars de la scène mondiale.

En substance, le service client est une startup qui développe une plateforme marketing spécialisée qui a réussi à collecter les investissements des maisons de disques, car elle prend en compte les spécificités du comportement du public dans une industrie particulière. La plate-forme vous permet de cibler des annonces en analysant le comportement des utilisateurs qui ont manifesté leur intérêt pour une équipe particulière. Les principaux utilisateurs de la ressource sont les musiciens et les travailleurs de l'industrie (gestionnaires, employés de maisons de disques, organisateurs de concerts et bien d'autres).

Au début de notre projet, le service fonctionnait déjà et a réussi à gagner une certaine position sur le marché. Cependant, il s'agissait plutôt d'un prototype qui testait l'hypothèse de base d'une entreprise, d'autant plus qu'une partie de la fonctionnalité était mise en œuvre via des services partenaires. Nous nous sommes connectés au développement afin de créer une architecture à part entière, et le RGPD a été l'impulsion même qui a lancé toutes les transformations. Notre tâche n'était pas seulement de mettre à jour le service existant, mais de le reconstruire avec la nouvelle législation, de l'actualiser et de l'amener à une interface utilisateur plus uniforme.

Implémentation


L'ensemble du projet a été divisé en plusieurs étapes.

image

Dans un premier temps, nous avons réécrit de zéro la partie qui avait précédemment fonctionné en PHP - raccourcisseur de lien et service d'autorisation.

Le raccourcisseur de liens fait partie de la fonctionnalité disponible gratuitement pour tous les utilisateurs enregistrés et est utilisé pour attirer les clients vers les services payants de l'entreprise. Le service vous permet d'apporter un lien long vers un formulaire court afin de le publier sur les réseaux sociaux. Dans le même temps, vous pouvez personnaliser le lien en définissant, par exemple, le géo-ciblage: selon le pays d'origine de l'utilisateur, il peut afficher différentes pages de destination.
En mettant à jour le backend, nous avons utilisé OpenJDK 1.8, Kotlin et Spring boot / data / web - le cadre standard pour un projet qui ne s'attend pas à des charges élevées. Soit dit en passant, c'est dans ce projet que nous avons essayé Kotlin «au combat» pour la première fois, et en raison de sa syntaxe, cela nous a permis d'accélérer considérablement le développement. Certainement, nous l'utiliserons dans d'autres projets.

La base de données du service d'autorisation et du raccourcisseur mis en œuvre à la première étape est construite sur la base de PostgreSQL - le modèle de stockage des données relationnelles était bien adapté pour résoudre ces problèmes.

Dans un deuxième temps, nous avons repris la gestion des campagnes publicitaires. Cette fonctionnalité sur la plate-forme client existait également auparavant, mais via le service du partenaire, pour lequel vous deviez payer. Maintenant, la plate-forme du client s'est développée au point où il était nécessaire de prendre soin de son infrastructure. Contrairement à un tiers, le service propre est beaucoup plus facile à développer dans la bonne direction, apportant rapidement les changements nécessaires.

Dans cette partie du projet, nous avons implémenté uniquement l'API externe pour le gestionnaire de campagne. Mais à la troisième étape, nous avons développé ce module - nous avons finalisé l'API et créé une interface utilisateur à part entière pour le gestionnaire de campagne.

En parallèle, nous avons développé une petite DMP (plateforme de gestion des données) propriétaire qui gère la collecte des données des visiteurs. Les données DMP sont stockées dans MongoDB, car nous avons décidé de quitter le terrain pour la future mise à l'échelle horizontale de cette base de données. Désormais, DMP traite jusqu'à 2 000 requêtes par seconde (en pointe), tandis que nous nous sommes concentrés sur le stockage d'un téraoctet de données. Un tel volume aurait pu être enregistré dans PostgreSQL, mais à long terme, il aurait fallu déployer de gros efforts pour évoluer.
Le même MongoDB est utilisé dans la base de données du gestionnaire de campagne (Campaign DB) - ici le modèle d'une base de données orientée document nous a bien approché. Les campagnes se déroulent comme des entités uniques et peuvent se développer.

Tous les caches fonctionnent sur Redis.

Frontend: Angular 5, TypeScript, HTML5, Sass, Node.js, npm, Angular CLI.

Au cours de la dernière étape du projet, nous avons achevé l'intégration des systèmes clients et des services d'un partenaire clé, ouvrant l'accès à une énorme base de musiciens pour l'entreprise, ce qui assurera une augmentation du nombre d'utilisateurs.

Il y a eu quelques difficultés dans le projet. Le client souhaitait sauvegarder les données utilisateurs et les enregistrements accumulés pendant le fonctionnement du service, tout en modifiant légèrement le modèle. Parallèlement à la modification de l'architecture, nous avons transféré les enregistrements et changé ses principes - du nom d'utilisateur au courrier électronique en tant que connexion, ce qui nous a apporté de nombreuses nuits blanches en raison des restrictions sur le nombre d'utilisateurs avec la même adresse électronique. Le modèle des droits dans le système a changé. Auparavant, le service fonctionnait selon un modèle à deux niveaux, mais nous avons mis en œuvre un modèle de droits sans restrictions (y compris la possibilité d'émettre des droits limités).

Dans le même temps, la fonctionnalité s'est étendue. Par exemple, à un moment donné, un magasin multiple est apparu, à l'aide duquel, pour les visiteurs finaux qui cliquent sur des liens courts vers une composition spécifique, vous pouvez créer des pages avec une liste de services où ces compositions sont disponibles pour achat légal ou écoute.

Il vaut la peine de dire séparément sur le RGPD


Le principal marché de notre client est les États-Unis, mais environ 10% du trafic que l'entreprise ne voulait pas perdre provenait d'Europe. Depuis l'entrée en vigueur du nouveau règlement (25 mai 2018), son ciblage est tout simplement désactivé. Après avoir consulté des avocats, nous avons construit le service de manière à ne pas contredire le RGPD et à partir du 16 août, nous avons recommencé à viser.
Honnêtement, nous avons étudié les subtilités de la réglementation tout au long du groupe de deux semaines. La difficulté à ce stade était que, avec le flou général du libellé, il n’existe pour l’instant aucune pratique d’application de la loi - des cas réels qui pourraient montrer comment le faire correctement et ce qui ne va pas. Cependant, maintenant (après nos propres recherches et consultations avec des avocats), nous sommes confiants dans l'architecture mise en œuvre de la solution.

La logique du service impliquait l'ajout d'un utilisateur qui suit un lien court vers un public spécifique, afin que plus tard, il puisse voir des publicités. En termes de GDPR, cela ne peut pas être fait sans le consentement explicite de l'utilisateur. Et nous avons mis en place une demande de consentement - lorsque vous cliquez sur le lien en bas de la page, une plaque apparaît avec une question et deux boutons. La demande est ouverte aux utilisateurs dont l'IP appartient à l'Europe, et leur réponse est stockée sous forme de cookies, afin que les visiteurs n'aient pas à appuyer sur les boutons à chaque fois.
S'il n'y a pas de consentement de l'utilisateur (c'est-à-dire les cookies), nous ne lui montrons tout simplement pas de pixel, c'est-à-dire dans les statistiques générales du service, le fait de la visite sera comptabilisé, mais les données des utilisateurs ne seront pas collectées et prises en compte.

Le RGPD impose des restrictions architecturales - les données personnelles doivent non seulement être correctement collectées, mais également stockées en toute sécurité. Dans notre cas, ces restrictions s'appliquent au DMP mis en œuvre (en dépit du fait qu'il stocke des données anonymes avec des identifiants anonymes qui ne leur permettent que de se désanonymiser) et à la base de données du service d'autorisation. Dans notre architecture, ces bases sont clairement allouées dans des blocs séparés. Conformément à la réglementation, l'accès des tiers à ces modules «sensibles» est naturellement limité.

Seul le service correspondant a accès à la base de données d'autorisation. Tous les autres services ne savent rien des données personnelles de l'utilisateur de la plateforme - ils n'ont besoin que de la validation du service d'autorisation.

La base de données DMP comprend également uniquement le service éponyme. Dans le même temps, seuls les agrégats de données d'audience sont renvoyés de la base de données, mais pas les données elles-mêmes. Ces agrégats constituent la base des analyses que les utilisateurs du service de l'industrie musicale reçoivent dans leur compte personnel.
Nous avons également une procédure obligatoire pour le téléchargement et la suppression des données utilisateur. Il y avait une question sur la façon de vérifier que l'utilisateur demande vraiment légitimement ses données. Et nous utilisons le cookie stocké par l'utilisateur comme facteur de vérification.

Le projet a été achevé récemment, il est donc trop tôt pour parler de résultats numériques.

Auteur de l'article: Nikolay Eremin

PS Nous publions nos articles sur plusieurs sites du Runet. Abonnez-vous à nos pages sur les chaînes VK , FB ou Telegram pour découvrir toutes nos publications et autres actualités Maxilect.

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


All Articles