Comment nous avons fait le programme du club Sportmaster

Si vous visitez nos magasins plus d'une fois par an pour des articles de sport ou des vêtements, vous avez probablement notre carte de club (bleu, argent ou or). Je m'appelle Maxim, je suis le directeur adjoint du département de développement, d'implémentation et de maintenance des logiciels, et dans cet article, nous parlerons avec mes collègues de la mise en place du programme du club Sportmaster, de la collecte des râteaux que nous avons collectés au cours du processus et de la façon dont notre programme de club diffère des cartes de réduction habituelles des autres. réseaux commerciaux.



Alors


L'année 2004 était dans la cour. Ce qui s'est passé, c'est le programme du club Sportmaster et 27 roubles chacun. Ce qui n'était pas - Internet normal sur le terrain et canaux de communication stables dans les magasins.

Au cours de ces années, nous avons nous-mêmes rédigé un système de fidélité qui pouvait normalement suivre les points bonus de chaque utilisateur. Mais comme nous avions déjà beaucoup de magasins à l'époque, contrairement aux installations de traitement des données, toute notre base de données de bonus était située dans un seul fichier, qui était simplement envoyé aux magasins et entretenu localement, et les modifications de la journée étaient retournées. Soit dit en passant, c'était la cause profonde du fait que les bonus ne peuvent être dépensés que le lendemain de l'achat, et non des exigences de l'entreprise et d'assurer le retour des clients - pendant la journée, tout cela n'a tout simplement pas eu le temps d'être mis à jour et recompté correctement.

En d'autres termes, à ce moment-là, les bonus pourraient commencer à fonctionner et en général le cinquième jour - jusqu'à ce que ce tableau avec les bonus nouvellement calculés atteigne tous les magasins.

Les cartes elles-mêmes fonctionnaient tout simplement - chaque carte accumulait simplement un certain nombre de bonus que son propriétaire pouvait dépenser avec joie et émotion. Autrement dit, pour la base, il semblait simple, grosso modo, une carte - un chiffre. Avec les cartes or, c'était un peu plus compliqué - là, en plus du nombre de bonus, il y avait aussi des points de service. C'est à ce moment-là que vous avez acheté un vélo, et après six mois, vous vouliez resserrer la chaîne, vérifier les freins, la cloche a commencé à réchauffer votre âme et à effrayer les passants et ainsi de suite (ou aiguiser les patins pour la nouvelle saison et réparer le snowboard, par exemple).

Dans le même temps, les bonus ont été calculés en utilisant la puissance d'une solution basée sur l'intelligence naturelle - nous avions un employé spécial qui rédigeait et faisait des sélections, puis ajoutait des bonus dans une plaque spéciale, et le système a tiré cette plaque vers le haut. Et oui, si cette personne décidait soudainement d'encourager un peu ou quoi d'autre - certains clients pourraient se retrouver sans bonus en ces jours difficiles.

Bien sûr, cette situation était assez coûteuse pour les entreprises, et en effet elle était dangereuse et imprévisible, et l'entreprise voulait transférer le système sur des rails normaux (automatiques).

Nous avons d'abord décidé d'étudier le marché. Nous avons réalisé qu'il existe plusieurs excellents systèmes dotés de fonctionnalités et d'étiquettes de prix supérieures à ces fonctionnalités. De plus, avec un tel système de licence, selon lequel il était censé collecter des pots-de-vin non seulement pour l'utilisation des capacités ou pour le logiciel lui-même, mais pour chaque utilisateur actif dans un tel système de bonus. De quoi réjouir les auteurs du système. Mais notre entreprise était triste.

Le deuxième problème était également le fait qu'avec la croissance de la clientèle et le nombre de magasins, il y avait une situation où une base de plus en plus lourde devait être envoyée à de plus en plus de magasins. Et un beau jour, cette base a tout simplement cessé d'explorer les canaux de communication existants. Il a également été revu dans tous les magasins en peu de temps avec un gros craquement.

Les bases n'ont pas eu le temps de magasiner, parfois à cause de cela, les magasins ont oublié de les mettre à jour, et ils ont reçu de la bouillie franche - dans le magasin Une personne a acheté quelque chose d'utile et a reçu un bonus, et le magasin B après quelques jours n'est toujours pas au courant qu'une personne pourrait et déduisez les bonus d'un nouvel achat.

Et puis Alexander Afanasyev (maintenant le directeur informatique d'une autre entreprise) a compris comment faire tout cela vous-même sans acheter de logiciels tiers. J'ai collecté auprès de l'entreprise un certain nombre d'exigences pour ce système de leur part et enregistré de nouvelles opportunités. Au début, c'est simplement sous la forme de fonctionnalités agréables - par exemple, les bonus ne sont plus un seul numéro, mais un système complexe. Vous pouvez donner des bonus à une personne pour un anniversaire, vous pouvez donner séparément un bonus uniquement pour les skis et les articles de produits connexes, vous pouvez offrir des bonus uniquement pour les produits de marque Columbia et à certaines périodes de temps - et tout cela, combiner, combiner, combiner.

Heureusement, le développement du réseau a atteint le point où Internet est déjà apparu presque partout et il a été possible de mettre la solution en ligne. Autrement dit, le schéma de travail est devenu comme ça - il y a un magasin avec un canal réseau stable, il contacte la base de données pour le reste (et maintenant la base de données est la plus fraîche et la plus savoureuse), prend le reste des bonus de la base de données et fonctionne déjà avec elle. Et tout cela, tandis que l'acheteur communique avec bonheur avec un vendeur amical.

Le troisième problème était la performance des opérations de gravure de bonus. Nous avons la même chose - vous pouvez gagner des points toute l'année avec ferveur, mais le 1er mars, ils s'éteignent toujours perfidement si vous n'arrivez pas à les dépenser.

La première version du système (appelée CARDS) pouvait normalement les prendre en compte, mais lorsqu'elle est passée en mode usine incinérateur bonus, des problèmes ont commencé. Après tout, la gravure de bonus est un passage complet à travers toute la base avec des changements. Compte tenu de la taille de la base, cela pourrait prendre 3 à 4 jours. Et dans le processus, elle a terriblement ralenti et stupide, à cause de quoi parfois les bonus ont été interrompus, et il s'est avéré que dans certains magasins, le camarade Petrov, qui était venu pour de nouvelles balles de ping-pong, avait toujours des bonus, et Sidorov, qui était parti pour malheureusement, pas de nouveau grand.

Nouvelle version du système


Nous avons fait un prototype quelque part en 3-4 jours, puis quelques jours nous l'avons testé sur des contrôles en direct. Il s'est avéré que le système est assez fonctionnel pour lui-même, et vous pouvez l'utiliser pour générer différentes conditions de bonus et générer des textes de communication.

Soit dit en passant, sur les communications - dès le début, nous avons fait en sorte que le système de fidélité lui-même forme au bon moment les textes des communications avec les clients, en extrayant des points bonus de la base de données et en les envoyant aux clients nous-mêmes. Nous avions beaucoup de clients, nous avons donc utilisé des fournisseurs tiers à l'époque pour envoyer des SMS.

L'interaction avec eux a ressemblé à ceci:

  • le fournisseur a compris qu'il Ă©tait un client important et a commencĂ© Ă  se rĂ©jouir
  • un client majeur sous la forme de nous a prĂ©cisĂ© si le fournisseur traiterait rĂ©ellement ces envois
  • le fournisseur a dit qu'il maĂ®trisera, bien sĂ»r
  • le fournisseur a reçu la tâche d'envoyer une Ă©norme quantitĂ© de SMS dans un court laps de temps et a dĂ©cidĂ© de se coucher pour se reposer

Donc, sur le prototype. En principe, l'ensemble du système a été décidé d'être considérablement remanié, car au départ, il n'était affûté que pour les bonus, et non pour le travail en ligne, de sorte qu'il devrait cesser de faire face au retour. De plus, il est tombé, bien sûr, lors des moments de forte charge. Autrement dit, au moment le plus délicieux pour le magasin - Nouvel An, 8 mars, 23 février et autres dates agréables.

Le système tombe -> l'humeur de l'entreprise tombe -> l'humeur de tout le monde tombe.

Avec un collègue, nous avons réécrit le système selon le principe suivant.

Composant 1. Un prétraitement qui donne la réponse aux magasins le plus rapidement possible.
Composante 2. Traitement, la même boîte magique, des bonus difficiles et intelligemment crédités sur les chèques de marchandise.
Composante 3. Marketing, collecte de tout cela et formation de textes de communication.

De plus, nous avons résolu le problème de la gravure des bonus. Le nouveau système ne les a tout simplement pas brûlés. Après tout, si vous ne forcez pas le système à graver des bonus - vous n'avez aucun problème avec la gravure de bonus.

Dans la nouvelle version, le système stocke simplement les bonus de chaque client dans la base de données, mais à un moment donné, il cesse de les considérer comme actifs. Autrement dit, maintenant, il y a toujours des bonus, mais chacun avec sa propre période d'activité. Ce qui, incidemment, a permis l'introduction de promotions et de campagnes plus précises et plus urgentes.

L'ancien système ne conservait en fait que des enregistrements des cartes et des bonus sur ces cartes. Le nouveau système ne donne pas la priorité à une carte, mais au compte d'une personne. Nous pouvons l'identifier par numéro de téléphone (cette chose fonctionne pour nous depuis le début, nous avons été parmi les premiers à mettre en œuvre l'autorisation par numéro de téléphone).

Une caractéristique supplémentaire du nouveau système est le soi-disant bonus de produit, il fonctionne comme ceci:

  • chaque produit a des attributs (nom, catĂ©gorie de produit, taille, couleur, sport, autre, autre, autre).
  • le système combine ces attributs, formant une condition logique pour accumuler des bonus.
  • lorsqu'un chèque arrive, cette condition est toujours vĂ©rifiĂ©e.

Nous avons montré ce prototype en entreprise. Les affaires ont donné le feu vert.

Nous avons commencé à écrire le système le 1er mars, à le mettre en service le 27 octobre 2013 (nous avons écrit ensemble, oui). En fait, la date de livraison prévue était le 1er septembre, mais la principale contrepartie du système n'avait pas de magasin de vente au détail. Les magasins n'ont pas eu le temps pour un certain nombre de raisons, et tout le monde n'a pas mis à jour le logiciel de caisse enregistreuse (et la mise à jour du logiciel de caisse enregistreuse sur un réseau assez important est toujours pénible). Par conséquent, ils l'ont reporté, les ont attendus et ont commencé le 27 octobre.

Idéologie du système


Ils ont posé l'idée principale - ni le magasin, ni le logiciel de caisse ne fonctionnent plus avec la logique des bonus. Le magasin envoie maintenant le panier du client au Centre, le Centre traite le tout, donne au magasin un calcul des bonus.

Maintenant, les bonus sont répartis comme ceci:

  • Tout d'abord, les bonus sont rĂ©partis uniformĂ©ment sur tout le chèque, pour tous les articles de base. Ceci est utile pour l'analyse et aide en cas de retour de marchandises.
  • Nous avons introduit le concept de bonus prioritaires. Les bonus sont des marchandises, il y a des bonus pour les anniversaires, qui ont une courte pĂ©riode de validitĂ©, il y en a rĂ©gulièrement (les plus tenaces). Par consĂ©quent, nous annulons d'abord les bonus spĂ©cifiques. C'est-Ă -dire qu'une personne est venue skier - nous annulerons principalement les bonus qu'elle a sur les skis. Et il s'avère qu'il est venu skier, nous avons annulĂ© les primes rĂ©gulières. Une semaine plus tard, il viendra pour une veste, et nous lui donnerons un homme, vous n'avez que des bonus pour le ski. Voulez-vous skier? La mĂŞme chose avec les achats pendant les pĂ©riodes d'anniversaire, d'abord les radier, puis les rĂ©guliers.
  • Nous rĂ©alisons les opĂ©rations back office et le front. DĂ©sormais, les magasins qui accompagnent des demandes n'affectent pas le travail et les performances du service qui calcule les bonus, et vice versa

En général, il était possible de colmater tous les anciens problèmes, et au lieu de nouveaux problèmes, ajouter de nouvelles fonctionnalités.

Au lieu de l'arriéré, nous avions ce cahier d'Alexandre.





Lancement d'une nouvelle version du système


Étant donné que le nouveau système était différent de l'ancien non seulement sur le plan technique, mais aussi sur le plan idéologique, nous ne pouvions pas le faire rouler partiellement, dans la moitié des magasins ou d'une manière ou d'une autre. Nous avons juste dû éteindre l'ancien et allumer le nouveau à la place.

Cela semble bon, mais en fait, cela se résume à quelques limitations.

Tout d'abord, en raison du grand nombre de magasins (1200+), nous avons dû tout faire en 3 heures. Alors qu'un magasin ferme à minuit dans un fuseau horaire, un autre a une heure complètement différente, et il y a aussi un dépanneur. En général, pour convertir toutes les données de l'ancien système, alimentez le nouveau, démarrez sur trois serveurs à la fois - 3 heures.

Les pièges étaient comme ça:

  • Le système a Ă©tĂ© immĂ©diatement coupĂ© sur l'ensemble du rĂ©seau. Si tout va bien partout - tout fonctionne sur tout le rĂ©seau. Si quelque chose tombe, oui, il tombe sur tout le rĂ©seau.
  • Lorsque vous allumez le nouveau système, il doit contenir toutes les donnĂ©es qui Ă©taient dans l'ancien système au moment de la fermeture des magasins et de l'Ă©mission du dernier bonus. Nous avons lancĂ© dans 4 pays Ă  la fois. La base de donnĂ©es dĂ©passait le tĂ©raoctet et contenait des centaines de milliards d'enregistrements.
  • Ă€ 23h00, nous avons dĂ» Ă©teindre le système. Convertissez tout. Versez dans le nouveau système. Incluez tout. Dans ce cas, tout devrait fonctionner.

Nous nous sommes entraînés depuis longtemps, à accrocher des scripts aux plus gourmands. Après de longs tests et des tentatives pour tout faire le plus rapidement possible, nous avons obtenu le meilleur résultat à 9 heures.

Ce qui était légèrement différent du chiffre prévu de 3 heures.

Ensuite, nous avons décidé de faire d'abord le prétraitement, qui a conservé les restes en nous-mêmes. Élevé le serveur principal, il a contacté les magasins. En même temps, il ne savait pas que tout le système n'était pas encore monté, et à ce moment-là, nous roulions vaillamment tout le reste.

Mais encore, un tel volume de données sur des machines standard ne pouvait pas être fait en temps opportun.

Et ici, il convient de noter Oracle Exadata. Les gars d'Oracle ont fabriqué un matériel spécial qui fonctionne très bien avec sa propre base de données, et même sur des lecteurs flash. En général, une décision ferme a été prise d'utiliser Exadata. Avec son aide sur les tests, nous avons maîtrisé tout ce dont vous avez besoin en 2 heures au lieu de 9 et nous avons réalisé - nous devons le faire.

Puisque nous sommes des gars méticuleux, en train de mettre en place et de travailler, nous avons ramassé un tas de bugs et échoué le support d'Oracle avec une marge. Par exemple, il y avait un bug intéressant - en raison d'une erreur dans le traitement interne de la demande, Oracle a commencé à consommer intensivement TEMP. Nous l'avons remarqué à temps et lui avons jeté des fichiers TEMP'ovyh, c'était très intéressant quand il s'est saoulé. Mais comme le morceau de fer s'est avéré très sensible et bien informé, elle a utilisé 3 Tb TEMP avec sensation pendant 10 minutes, s'est rendu compte qu'elle n'était plus et est allée se coucher. J'ai dû trouver des solutions de contournement.

D'une part, c'était cool que tout en termes de conversion nous fassions en 2 heures. D'autre part, dans tout le processus de conversion propre, 2 heures, et nous avons également prévu:

  • rechargez toutes les donnĂ©es des serveurs de l'ancien système vers exadata, car il compte tout très vite.
  • Convertissez les donnĂ©es d'anciennes structures en nouvelles.
  • Versez tout ce bien converti dans trois serveurs diffĂ©rents.

En même temps, dans chaque base de données, il y avait un tas d'informations utiles sur le service telles que les mêmes index qui pourraient aider pendant la reconstruction, mais nous avons marqué sur elle et décidé de tout reconstruire déjà sur les serveurs de combat.

La préparation


Nous nous sommes préparés avec puissance et force. Nous dormions au travail. Nous nous sommes accrochés non seulement avec des scripts, mais aussi avec de nombreuses métriques.

À 23h00 chaque jour, nous avons commencé le processus et surveillé les métriques. Nous avons fait les changements nécessaires, en conséquence, nous avons tout mis en place pour que rien ne puisse mal tourner.

Bien sûr, le jour du lancement, quelque chose s'est mal passé.

À notre honneur, le cant n'était pas de notre côté. Quelque part, le réseau cligna stupidement. C'est-à-dire que vous vous asseyez comme ça, vous ajustez tout pour que le moustique non seulement ne sape pas son nez, mais n'a même pas le temps d'y penser - et quelque part, quelqu'un tire simplement le mauvais câble.

Quoi qu'il en soit, nous avons réussi à démarrer le premier serveur à temps. Le délai général était de 5 heures du matin, à ce moment-là, tous les serveurs devraient être de bonne humeur, car les premiers magasins d'Extrême-Orient ouvrent à 10 heures.

Le dernier serveur a donc démarré à 11 heures du matin. Mais puisque nous avons construit le système de telle manière que tout était isolé, tout fonctionnait bien.

Maintenant


Actuellement, 14 développeurs et 8 analystes travaillent sur le système des clubs. Compte tenu de tous les goodies avec lesquels nous avons traîné, ce n'est plus seulement une carte qui vous donne un certain nombre de bonus disponibles pour les dépenses dans les magasins.

Nous avons commencé à combiner pleinement les bonus. Le critère principal pour une combinaison réussie pour le système est l'avantage maximum pour l'acheteur. Il peut y avoir de nombreux utilitaires et promotions, par exemple:

  • l'utilisateur a accumulĂ© un bon nombre de bonus rĂ©guliers;
  • plus maintenant la pĂ©riode oĂą il y a une action sur une marque particulière;
  • ainsi que des remises Ă©galement sur un groupe de produits et un sous-groupe spĂ©cifiques;
  • et il peut Ă©galement y avoir une remise dans une ville particulière ou dans un magasin particulier.

Nous avons écrit un algorithme qui reçoit un chèque d'un magasin, parcourt les articles du produit dans le chèque, lui applique toutes les promotions et remises possibles à une date et dans une ville données, et donne le résultat le plus avantageux pour l'utilisateur. Ensuite, il retourne tout au magasin. Et il y a encore des directions de développement:

  1. Développement d'un mécanisme pour lancer des campagnes de marketing multi-voies complexes, y compris le publipostage, l'offre de bonus, des remises et des offres personnalisées pour un client
  2. Connexion de nouveaux canaux de communication, tels que les messageries instantanées, les réseaux sociaux, etc.

Un client reconnaissant peut à ce moment se rappeler qu'il voulait aussi acheter des chaussettes, et demande de les ajouter au chèque. Bien sûr, l'ajout de chaussettes (ou autre) nécessite un recomptage complet.

Mais nous traiterons également de cela. Et dans l'un des prochains articles, nous vous raconterons l'histoire de la création du site du Sportmaster.

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


All Articles