Adenlab

Remarketing et RGPD : existe-t-il un conflit entre ces deux notions?


Le RGPD est entré en vigueur en mai 2018. Celui-ci a pour but de protéger les données personnelles des utilisateurs. Avec cette nouvelle loi, les entreprises sont obligées de demander le consentement des prospects pour établir une communication digitale.

Or, le remarketing met en avant des publicités après la visite d’un consommateur sur un site e-commerce. Avant cette loi, aucune demande au préalable n’est faite auprès de ces prospects. Comment trouver le juste milieu entre remarketing et RGPD ? Ces stratégies remarketing sont une grande force pour les entreprises, mais respectent-elles les règles du RGPD?

Voir aussi : Campagnes Google Ads ou Facebook Ads: Comment garantir leur succès avec le ciblage, le remarketing et les audiences


L’entrée en vigueur du RGPD : les règles à respecter


Avec cette nouvelle loi, les règles digitales ont évolué. Tous les sites internet, notamment les e-commerces, doivent prendre des mesures pour suivre ces évolutions légales.

Désormais, pour toutes les stratégies remarketing, il est primordial d’avoir le consentement des consommateurs. Il n’est plus possible de collecter les informations personnelles sans quelconque autorisation.

Pour ce faire, tous les sites internet ainsi que les boutiques en ligne doivent posséder une bannière d’utilisation des cookies. Le message affiché doit être clair, indiquant aux utilisateurs que la boutique en ligne collection des informations.

Même si le prospect ne remplit aucun champ, toutes les informations telles que les pages visitées et la localisation sont conservées. Ces données servent pour les outils d’analyse comme Google Analytics.

Ce marketing d’autorisation impose également d’avoir, au sein du site, une page de mentions légales expliquant le traitement des informations récoltées.

Avec ces obligations légales, comment concilier remarketing et RGPD ?

Les outils permettant de mettre en place une stratégie remarketing ont dû évoluer. Maintenant, Google Ads permet à ses utilisateurs de choisir entre des publicités générales ou des publicités personnalisées (du fait des informations récoltées).

En fonction du consentement des utilisateurs sur Google, les publicités varient.

De plus, pour Google Analytics, il est possible de refuser de faire partie des listes de remarketing. Il a fallu trouver un compromis entre remarketing et RGPD. C’est la raison pour laquelle le choix est laissé aux prospects.

Cependant, s’il donne son accord, les publicités de toutes les marques pourront lui être diffusé et pourront apparetre lors de sa navigation sur le web. Au contraire, si le consommateur refuse ces pratiques de collect de données, les annonces publicitaires ciblées et peronnalisées des e-commerces ne seront jamais diffusées, quel que soit le dispositif utilisé.

Voir aussi : développer l’engagement de son audience, 3 stratégies à adopter

La réaction de Google face à ces évolutions

À la suite du RGPD, le premier moteur de recherche s’est vu obligé de réagir. Les conditions d’utilisation ont été mis à jour afin d’accompagner toutes les obligations légales.

Ces nouveautés ont été contraignantes pour les boutiques en ligne. Cependant, au fil du temps, un vrai équilibre entre remarketing et RGPD a été trouvé. Ces nouvelles lois présentent désormais de réels avantages pour les e-commerces :

Les consommateurs, ayant donné leur consentement, sont ouverts à la discussion et ainsi disposés à entendre le message véhiculé.

L’entreprise apparaît comme sincère et transparente, se préoccupant des prospects.

Les listes de remarketing sont certes moins importantes qu’avant cette loi mais d’autant plus qualifié car il s’agit des consommateurs avertis, réellement intéressés par ce que vous proposez

Les e-commerces gagnent du temps et peuvent convertir plus rapidement.

Développer l’engagement sur vos réseaux sociaux : 3 stratégies à adopter



Avec environ deux tiers des Français (65%) qui utilise Facebook (Hootsuite, 2019) le réseau social est incontournable. Et pour faire la différence il faut investir ce canal intelligement.

Certes, animer sa page Facebook est intéressant mais l’engagement de votre audience vous donnera plus de crédibilité. Pour développer l’engagement et gagner la confiance des prospects, il faut arriver à impliquer le consommateur et l’inviter dans la discussion.

== Voir aussi : Campagne de remarketing : comment paramètrer vos audiences pour garantir vos succès ==


Comment créer de l’engagement et gagner la confiance des consommateurs ?


Ne tombez pas dans le piège des chiffres. 10.000 abonnés ne sont pas bénéfiques à votre e-commerce si personne n’échange avec vous. L’essentiel est qu’il y ait une discussion sincère entre le compte de votre boutique en ligne et les prospects.

1. Être sur la même longueur d’onde

Afin de créer des publications qui fonctionnent et qui génèrent une interaction, analysez les goûts et les centres d’intérêts de votre audience. En cohérence avec votre image de marque et votre domaine d’activité, présenter du contenu qui peut plaire.

Il faut trouver le juste-milieu.

Par exemple, si votre audience aime le football et que vous créez une publication autour du rugby, il sera difficile pour eux d’échanger et de commenter.

Une publication autour de leur centre d’intérêt permet de créer une discussion. Poser une question à la fin d’une publication encourage à laisser un commentaire.

De plus, pour assurer le succès d’une boutique en ligne et développer l’engagement, il ne faut pas hésiter à demander aux prospects ce qu’ils veulent voir.

Analysez les publications ayant le plus d’impact pour rester dans cette vague d’engagement. Notre conseil est de miser sur les vidéos. C’est un type de contenu qui suscite la curiosité des utilisateurs.

Voir aussi : Captiver son audience et comment trouver les bons thèmes ?

2. Choisir la bonne plateforme

Pour développer l’engagement d’une communauté, il faut être présent au bon endroit, au bon moment. En fonction de votre audience mais également de votre cible, choisissez le réseau social qui convient :

Si vous ciblez les entreprises et le domaine professionnel, il vaut mieux être actif sur Linkedin.

Pour une cible 18-25 ans, Instagram est votre meilleur allié.
L’audience moeynne sur Facebook a entre 25-45 ans : mais il reste le réseau avec le plus de membre actif.

Ces plateforme sociale doivent être choisis en fonction du type de discours et de communication que vous voulez travailler.

Par exemple, pour une interaction très rapide, Twitter est parfait. Grâce à la facilité du tweet, cette plateforme permet d’avoir un fort engagement.

3. Être présent

Si vous souhaitez développer l’engagement autour d’un e-commerce, la régularité est la meilleure arme. Progressivement, vous allez gagner en crédibilité et en légitimité.

Ayez une bonne organisation pour organiser votre diffusion de contenu. Un plan édiotrial est necessaire. Il vous permettra de prévoir et plannifier à l’avance les thematiques, types de contenus et publication à diffuser.

A lire aussi : Développer son audience: les techniques infaillibles sur Facebook

Conclusion

Notre conseil est d’impliquer au maximum les consommateurs afin de développer l’engagement. Créer des textes engageants donne envie d’écrire un commentaire. Les utilisateurs vont s’identifier à vos propos.

Comment développer son audience sur Facebook : Les techniques infaillibles



Au fil des années, Facebook a fait ses preuves en terme de développement d’audience. Au vu du nombre d’utilisateurs par an, ce réseau social est devenu un incontournable. Cependant, il est important de bien l’utiliser pour augmenter votre visibilité et propulser les ventes de votre e-commerce.

Aujourd’hui il est difficile de se contenter de poster une publication et d’attendre que les utilisateurs vous trouvent.

En effet, avec le nombre grandissant d’activités e les changement d’algorithme de Facebook, vos publications peuvent rapidement devenir invisibles et ne pas atteindre votre audience ou même vos fans.


Comment faire pour être visible sur Facebook ? Quelles sont les techniques pour toucher son audience sur ce réseau social ?

==Voir aussi : Réussir ses campagne de remarketing et optimiser ses audiences ==


Comment atteindre votre cible sur Facebook


 
 

Pour réussir à être visible sur Facebook, il est important de comprendre comment fonctionne ce réseau social. Il existe 3 types d’approches pour que vos posts soient visibles:

1. L’approche payante : celle-ci consiste à mettre en place des campagnes publicitaires ciblés et sponsoriser vos posts pour apparaître sur les comptes de vos fans et audiences cibles.

2. L’approche organique : permettra de toucher gratuitement les personnes de votre réseau, à savoir, vos fans mais aussi les personnes qui suivent certains hashtags.

3. L’approche virale : un prospect découvre votre publication et votre boutique en ligne grâce à l’action d’un autre utilisateur. Cela arrive surtout avec les publications qui font le buzz. Néanmoins, les partages, les mentions ou les commentaires peuvent créer un post viral.

Toutefois il est bon de savoir ou de rappeler que l’approche organique ne permet pas d’obtenir une grande visibilité.

Selon le format que vous utiliserez pour votre post (photo, vidéo, lien, statut) vous n’atteindrez en moyenne que 6% de vos fans (Retrouvez [une étude détaillé de Buffer](https://buffer.com/resources/facebook-marketing-strategy sur les stratégies organique de page Facebook).

De fait Votre publication risque de se fondre dans la masse. Alors soit vous faites le buzz avec un contenu très qualitatif, soit il vous investissez dans la publicité ciblée.

Voir aussi : développer l’engagement de son audience, 3 stratégies à adopter


Comment développer son audience sur Facebook ?


 
 

  1. Être cohérent : il est essentiel d’avoir un contenu en lien avec votre produit ou votre service. Autour des idées de publications, établissez une stratégie de communication.

De cette manière, petit à petit, votre profil e-commerce va devenir incontournable. On vous conseille de parier sur les vidéos. Très à la mode ces derniers mois, elles captivent et attisent la curiosité des internautes.

  1. Miser sur la qualité et non la quantité : il vaut mieux avoir 500 personnes qui vous suivent et qui interagissent plutôt que 10.000 personnes fantômes.

De plus, ne publiez pas tous les jours si vous ne pouvez pas garantir la qualité de votre publication. Plus vous ferez de publications non pertinentes, plus Facebook va vous sanctionner.

  1. Le filtrage : en programmant une publication, vous avez la possibilité de choisir la mise en avant de votre post en fonction des centres d’intérêt et des goûts de chacun.

  2. Créez un planning pour savoir quand publier et combien de publications vous aurez toutes les semaines. Faites en fonction de la présence de votre cible sur les réseaux sociaux.

Si vous publiez à midi alors que les prospects sont présents à 18h, ce n’est pas bénéfique pour votre boutique en ligne.

  1. Soyez présent. Il faut répondre aux commentaires qu’ils soient positifs ou négatifs. Ne jouez pas à l’autruche. Il faut apporter une réponse pour montrer votre transparence.

  2. Misez sur les influenceurs de votre secteur d’activité. Ils peuvent vous apporter plus de visibilité.

  3. Si vous le pouvez, investissez. Payez des publicités Facebook pour toucher votre audience. En fonction de votre budget, faites en sorte d’être visible sur les profils ciblés. N’oubliez pas d’analyser les retombées pour faire les ajustements nécessaires.

Conclusion

Avec l’application de ces méthodes, votre boutique en ligne pourra gagner en visibilité sur Facebook. Toutefois et si vous voulez assurez une visibilité immédiate de vos actualités sur vos réseaux, il sera nécessaire de prévoir un budget média et paramétrer vos audiences de manière plus efficace.
Notre agence SEA et Nos expert SEA restons à votre disposition pour mettre en place vos stratégies d’acquisition ainsi que vos campagnes publicitaires ciblées pour soutenir vos efforts sur vos réseaux sociaux.

Captiver son audience : comment trouver les bons thèmes pour vos contenus sociaux ?



Comment captiver vos clients et prospects ? Comment attirer leur attention sur les réseaux sociaux ? Comment leur donner envie de cliquer sur vos contenus et interagir avec votre boutique en ligne.

Voir aussi : Campagnes Google Ads ou Facebook Ads: Comment garantir leur succès avec le ciblage, le remarketing et les audiences


Quels sont les astuces pour attirer l’attention de votre audience


 
 

Pour attirer l’attention de votre cible, il est important de connaître leurs goûts et leurs centres d’intérêt.

Pour que votre audience se penche sur votre e-commerce, vous devez avoir une valeur ajoutée. Il faut leur apprendre de nouvelles choses et les informer.

Tout en montrant votre expertise, devenez une source incontournable d’informations.

Créer un lien pour se rapprocher de son audience

Vous souhaitez communiquer avec votre cible, mais vous ne savez pas quoi leur dire ? Quel est le contenu qui peut les intéresser ?

La première étape est de se mettre à leur place. Quelles sont les interrogations que vos clients peuvent avoir concernant vos produits ou vos services ?
S’ils sont intéressés par ce que vous vendez, c’est qu’ils aiment ce domaine ou qu’ils en ont besoin. C’est la raison pour laquelle il est important de mettre à leur disposition toutes les informations nécessaires.

Ne pensez pas qu’à vos ventes et ne soyez pas égocentrique. Il est essentiel de se tourner vers le client et de se mettre à sa place. Si vous étiez un client de votre entreprise, qu’est ce que vous aimeriez voir? Quelles sont les questions correspondantes à vos produits ?

Pour captiver son audience, la deuxième étape est d’échanger avec eux. Beaucoup d’entreprises n’y pensent pas mais vous pouvez le faire sur les réseaux sociaux comme Facebook ou Instagram.

Envoyez également des questionnaires et des sondages dans votre newsletter. Attention, il ne faut pas que ce soit trop long. La simplicité fonctionne : « quel contenu aimeriez-vous voir ? ».

Ces quelques astuces vont vous permettre de faire une première liste de thèmes à aborder pour attiser la curiosité de votre cible.

Voir aussi : Développer son audience: techniques infaillibles sur Facebook

Analyser vos données analytics en votre possession

Vous souhaitez :

  • Faire évoluer votre e-commerce ?
  • Captiver l’attention des prospects ?
  • Aborder des thèmes qui plaisent ?

Souvent vous ne partez pas de zéro, vous faite plutôt évoluer votre offre et votre stratégie en ligne existante. C’est la raison pour laquelle toutes les informations que vous avez sont bénéfiques et sont à utiliser.

Vos données analytics sont une réelle mine d’or. Avec une une bonne analyse, vous arriverez connaitre les pages populaires de votre site et le temps passé sur vos contenus.

Grâce à cette indication, vous avez la possibilité d’identifier les grands thèmes et les articles les plus lus et qu’il faudra certainement optimiser ou approfondir.

Lisez les commentaires sur les réseaux sociaux. Ils peuvent être une source d’inspiration.

Inscrivez-vous sur des groupes sur Facebook et sur Linkedin. Les consommateurs y partagent généralement des expériences de vie et des interrogations. Vous identifiez les problèmes et vous présentez les solutions aux prospects.

Chercher de l’inspiration grâce à votre veille concurrentielle

Pour affronter la concurrence, rien de mieux que d’aller découvrir les sujets qu’ils abordent.

Quelles sont les publications ayant du succès ? Quelles sont les solutions présentées ? Quelles situations leur permettent d’avoir de la visibilité ?

Vos concurrents ont la même audience que vous. Ils peuvent donc vous inspirer.

Conclusion

Pour captiver son audience, vous pouvez aborder tous les sujets dès lors qu’ils entrent dans votre thématique.

L’objectif principal est de toucher une partie de vos prospects avec les contenus qui les informes et qui peuvent être utile et ainsi les fidéliser comme client.

Restez dans votre niche pour ne pas perdre d’opportunités. N’ayez pas peur de montrer votre personnalité et d’être différent.

Notre agence SEA et nos experts Ecommerce sont à votre disposition pour échanger avec vous et trouver les meilleurs stratégies pour votre audience cible.

Audience : l’importance de Google Analytics



Mesurer son audience est une étape obligatoire pour développer son entreprise sur le web.

Celle-ci vous permet de faire le point sur vos stratégies d’acquisition ainsi que sur la qualité de vote trafic. Google Analytics est un outil puissant  permettant d’avoir accès à des informations de qualité.

Voir aussi :  Faire décoller ses campagnes SEA grâce aux Audiences et Remarketing

Google Analytics : inévitable outil pour le succès de votre entreprise

Afin de garantir le succès de votre e-commerce ou de votre site de génération de leads, vous devez faire de l’analyse de vos données une priorité.

Il faut comprendre les besoins des consommateurs, savoir où ils se trouvent, quel est leur sexe et leur âge et tout autre chose qui pourrait vous aider à améliorer leur expérience sur votre site.

Plus vous aurez d’informations les concernant, plus vous arriverez à personnaliser votre approche, identifier les problèmes et améliorer votre communication.

Le nombre de personnes touchées

Vous pouvez connaître le nombre de personnes touchées chaque jour.

Cette mesure vous permet de comprendre si vos actions publicitaires ont un impact, et si vous continué à augmenter votre audience et votre trafic.

Quels sont les canaux d’acquisition

Les internautes peuvent arriver sur votre site par différents canaux : réseaux sociaux, moteur recherches, site partenaires …

Le rapport d’acquisition permet d’identifier comment vos prospects sont arrivés sur votre site. Ce peut être par grâce à vos annonces publicitaires, ou votre pages Facebook…

Une fois que vous savez par ou les internautes arrivent, il est primordial d’identifier les canaux qui vous apporte le plus de conversions et ainsi répartir intelligemment vos investissements sur les bons canaux.

Voir aussi : Exclusion d’audience, ou comment ne pas usé vos prospects ?

Où perdez-vous l’attention de vos prospects ?

Mesurer son audience à travers Google Analytics vous permet de perfectionner vos supports de communication.

En effet, à travers les données analytics, vous allez savoir où votre audience quitte votre site et identifier les pages de sorties des internautes.

Pour garder les prospects plus longtemps sur vos pages, on vous recommande la technique de l’A/B testing. Cette pratique vous donne la possibilité d’imaginer deux stratégies et d’évaluer leurs retombées.

Vous avez ainsi le choix entre deux approches pour ne garder que celle réellement concluante.

Mesurer son audience pour la connaître à la perfection

Cet outil gratuit vous donne accès à diverses indications :

Les pages les plus visitées
Le réseau social où vous avez plus d’impact
Les habitudes d’utilisation : smartphones, ordinateur, tablette

Le taux de conversion

L’objectif principal de votre e-commerce est d’avoir des ventes et trouver des clients.

Google Analytics vous donne un coup de pouce en vous indiquant quels canaux vous ont permis de vendre et convertir. Vous devez donc vous poser les bonnes questions :

Vos réseaux sociaux sont-ils puissants ? Vos campagnes publicitaires convertissent-elles ? Avez-vous eu un retour sur investissement ?

Google Analytics, mis à votre disposition gratuitement par Google, doit devenir votre meilleur allié pour développer votre e-commerce.

Pour allez plus loin dans vos analyses, nous vous recommandons vivement de consulter notre article sur la mise en place de l’entonnoir de conversion de Google Anlaytics

Vous serez guidé, étape par étape, et vous permettra de configurer différents entonnoirs dans votre compte Google Analytics.

Diminuez vos coûts d’infrastructure avec l’auto-scaling



Le cloud est partout, on en entend parler à tous les coins de rue. Il est fort probable que vous ou votre entreprise utilisiez de près ou de loin un service cloud (AWS, Google Cloud, pour ne nommer que ces deux-là).

Si vous l’utilisez intensément (plusieurs machines qui tournent en continu), vous vous êtes peut-être intéressé à l’auto-scaling.

L’auto-scaling permet d’ajouter ou d’enlever des machines en fonction du besoin, en quasi temps-réel. Par exemple lorsque le traffic de vos utilisateurs augmente drastiquement et que vos serveurs sont sous l’eau, l’auto-scaling permet de rajouter des machines afin de libérer la charge des serveurs existant, diminuer le temps de réponse pour vos utilisateurs et garder la qualité du service que vous proposez.

Sans auto-scaling le problème inverse existe également : en période creuse, vos machines n’ont rien à faire, mais vous les payez quand même.

Cela est bien sûr bénéfique pour la plateforme Cloud que vous utilisez, mais moins pour vous.

Chez Adenlab nous utilisons Google Cloud, et nous utilisons bien sûr l’auto-scaling. Le besoin est le suivant : la nuit, nous importons les data de vos comptes Google Ads, Analytics, Amazon, Bing, etc.

Nous apprenons sur ces data (machine learning), calculons les nouveaux bids de vos produits, et nous les mettons à jour sur les plateformes concernées. Et nous faisons encore beaucoup d’autres choses ! Tout cela chaque nuit.

Chacune de ces opérations a des besoin spécifiques en volume et puissance des machines. Nous avons par exemple quelques machines puissantes pour le machine learning, et beaucoup de machines peu puissantes pour mettre à jour les enchères.

Avoir autant de machines à temps plein serait une perte nette de budget, puisque la plupart n’ont rien à faire pendant la journée. Nous regroupons donc ces machines en fonction de leur type (puissance, etc.) dans des groupes, appelés Auto-Scaling Groups.

Auto-Scaling Groups

Les groupes d’auto-scaling (Auto-scaling groups, ASG) permettent de regrouper des machines de même type sous une même politique d’auto-scaling.

Par défaut dans Google Compute Engine (GCE), vous pouvez choisir de scaler en fonction de l’utilisation CPU ou mémoire. En utilisant l’outil de monitoring Stackdriver, vous pouvez créer des métriques personnalisées afin d’augmenter ou de diminuer le nombre de machines.

Malheureusement il est impossible de scaler automatiquement un ASG à zéro, c’est-à-dire de couper toutes les machines du groupe. Cela est assez logique puisqu’en l’absence de machine nous ne recevrions plus aucune métrique (CPU ou autre) amenant à re-scale de nouveau.

Dans notre cas, beaucoup de nos machines travaillent à des moments précis dans la journée, généralement pendant 8 à 10 heures d’affilée, et n’auront plus rien à faire pour le reste de la journée. Voici un exemple d’exécution de notre politique d’auto-scaling :

autoscaled
Nous avons une machine qui ne fait rien pendant près de 2/3 de la journée

Auto-scaler à zéro machine

On aimerait bien sûr éviter d’avoir à payer pour une machine inutile. Nous allons voir qu’il y a un moyen d’avoir zéro machine tout en ayant un système de scaling automatique.

Il y a cependant un pré-requis : il nous faut un moyen de savoir quand est-ce qu’il est nécessaire de scale up de nouveau.

Chez Adenlab nous utilisons une taskqueue (MRQ) pour nos tâches récurrentes. MRQ nous permet d’aiguiller nos jobs vers des worker groups spécifiques, en fonction de la queue et/ou de la tâche elle-même. Chaque worker group est lié à un ASG, nous avons donc ici une métrique claire : pour un ASG donné, avons-nous des jobs en attente ?

Avec tout ça nous pouvons utiliser la structure d’ASG suivante :

Une petite (lire: pas chère) machine qui sera toujours up (pas auto-scalée)

Un ou plusieurs ASG, sans politique d’auto-scaling

En créant un ASG sans politique d’auto-scaling, GCE nous laissera bien scale à zéro machine si nous le voulons. Sur notre petite machine nous aurons un script qui tournera toutes les 5 minutes et qui vérifiera pour chaque worker group MRQ s’il y a des jobs à traiter.

Si c’est le cas, le script créera une politique d’auto-scaling pour le worker group concerné et le fera un premier scale-up à 1 machine. L’auto-scaler pourra ajouter des machines supplémentaires si besoin, en fonction de la métrique de base configurée (dans notre cas, l’utilisation CPU).

Ecrivons une tâche MRQ pour ce script. Déjà les imports nécessaires :

from mrq.task import Task
from google.oauth2 import service_account
from googleapiclient import discovery
import time
import re

Premièrement, nous devons configurer quelques paramètres concernant GCP :

class ScaleUp(Task):
    project_name = "name of your GCP project"
    zone = "europe-west1-c" # adapt your zone here
    service_account_path = "service_account_credentials.json"
    # groups that are not concerned by this task
    groups_to_skip = ("group1",)

Ajoutez à groups_to_skip les worker groups qui ne devraient pas être auto-scalés : ajoutez au moins le groupe de la machine qui dépilera cette tâche.

Maintenant écrivons la méthode principale de notre tâche :

def run(self, params):
    credentials = service_account.Credentials               
        .from_service_account_file(
            self.service_account_path
        )
     
    self.service = discovery.build(
        "compute", 
        "v1", 
        credentials=credentials, 
        cache_discovery=False
    )
    # We need to have a way to know what we want our different
    # autoscaling policies to be.
    # We could store them in a DB and fetch them here,
    # so that it is shared with our Ansible playbooks for instance.
    # For simplicity here we'll just hardcode them here:
    self.autoscaler_configs = {
        "group2": {
            "min_replicas": 1,
            "max_replicas": 10,
            "cooldown": 180,
            "cpu_target": 0.80
        },
        "group3": {
            "min_replicas": 1,
            "max_replicas": 8,
            "cooldown": 180,
            "cpu_target": 0.90
        }
    }
    # First we need to fetch existing ASGs
    self.fetch_groups()
    # Next we want to know which groups currently have an autoscaler
    self.fetch_autoscalers()
    # Check each groups and see if we should scale them up
    self.check_groups()

Voici comment récupérer les infos sur les ASG :

def fetch_groups(self):
    self.groups = {}
    request = self.service.instanceGroupManagers() 
                          .list(
                            project=self.project,
                            zone=self.zone
                          )
    while request is not None:
       response = request.execute()
       for asg in response['items']:
           group_name = asg["baseInstanceName"]
           self.groups[group_name] = {
                "base_name": group_name,
                "name": asg["name"],
                "size": asg["targetSize"],
                "link": asg["selfLink"]
            }
       request = self.service.instanceGroupManagers() 
                             .list_next(
                               previous_request=request,
                               previous_response=response
                             )

On hydrate self.groups avec les infos des ASGs. Pour plus d’infos sur la structure des ASGs, allez voir ici.

Maintenant jetons un oeil au code que nous utiliserons pour créer un autoscaler pour un worker group donné :

def create_autoscaler(self, group):
    autoscaler_config = self.autoscaler_configs[group]
    config = {
        "target": self.groups[group]["link"],
        "name": "%s-as" % group,
        "autoscalingPolicy": {
            "minNumReplicas": autoscaler_config["min_replicas"],
            "maxNumReplicas": autoscaler_config["max_replicas"],
            "coolDownPeriodSec": autoscaler_config["cooldown"],
            "cpuUtilization": {
               "utilizationTarget": autoscaler_config["cpu_target"]
            }
        }
    }
    operation = self.service.autoscalers().insert(
        project=self.project,
        zone=self.zone,
        body=config
    )
    wait_for_operation(operation)

Vous pouvez trouver le code de wait_for_operation dans cet exemple.

La dernière chose dont nous ayons besoin est une méthode pour scale up un ASG :

def scale_up(self, group, size=1):
    if self.groups[group]["size"] > 0:
        # Already scaled up
        return
    # Make sure we have an autoscaler
    if not self.autoscalers.get(group):
       self.create_autoscaler(group)
    operation = self.service.instanceGroupManagers().resize(
        project=self.project,
        zone=self.zone,
        instanceGroupManager=self.groups[group]["name"],
        size=size
    )
    wait_for_operation(operation)

La logique finale de notre tâche est assez simple :

def check_groups(self):
    # Now we have everything we need for the actual task logic:
    for group in self.groups:
    if group in self.groups_to_skip:
        continue
    if self.should_scale_up(group):
        self.scale_up(group)

should_scale_down est la méthode qui doit contenir votre logique de scaling. Nous ne la fournissons pas ici, mais rappelez-vous que dans notre cas il s’agit de vérifier si nous avons des jobs en attente ou non.

Cette tâche est planifiée pour être exécutée toutes les 5 minutes. Cela est pratique pour notre cas d’usage car même si aucun job n’est en attente, un membre de l’équipe peut à tout moment exécuter une action qui entrainera la création d’un nouveau job.

On ne veut pas avoir à attendre trop longtemps avant que celui-ci soit démarré. Bien entendu pour toute action utilisateur qui crée des jobs et qui sont supposées obtenir une réponse rapidement, il nous faut une machine dédiée qui soit toujours up.

Dans la plupart des cas cependant il vaut mieux éviter d’avoir des tâches asynchrone pour les interactions utilisateurs qui ont besoin d’un feedback.

Nous pouvons donc maintenant scale up une machine quand on en a besoin et GCE prendra le relai s’il y en a besoin de plus. Mais nous avons aussi besoin d’un moyen de scale à zéro quand il n’y en a de nouveau plus besoin !

Pour cela nous avons une seconde tâche, exécutée toutes les 30 minutes, qui exécutera le même code que la première, à la différence qu’elle supprimera l’autoscaler et scalera à 0 machine s’il n’y a plus aucun job en attente.

Nous pouvons faire hériter notre nouvelle tâche de la précédente afin d’avoir à disposition les méthodes utiles pour communiquer avec GCP :

class ScaleDown(ScaleUp):

Nous avons aussi besoin de quelques nouvelles méthodes pour pouvoir scale down :

def delete_autoscaler(self, group):
    autoscaler = self.autoscalers[group]
    operation = self.service.autoscalers().delete(
        project=self.project,
        zone=self.zone,
        autoscaler=autoscaler["name"]
    )
    wait_for_operation(operation)
    
def scale_down(self, group):
    if self.groups[group]["size"] == 0:
        # Already scaled down
        return
    # Delete the autoscaler so that we can scale to zero machine
    if self.autoscalers.get(group):
      self.delete_autoscaler(group)
    operation = self.service.instanceGroupManagers().resize(
        project=self.project,
        zone=self.zone,
        instanceGroupManager=self.groups[group]["name"],
        size=0
    )
    wait_for_operation(operation)
    
def check_groups(self):
 
    for group in self.groups:
        if group in self.groups_to_skip:
            continue
        if self.should_scale_down(group):
            self.scale_down(group)

Quand on sait qu’il n’y a plus aucun job en attente, on supprime l’autoscaler et on scale down complètement. De nouveau, should_scale_down contient la logique de scale down à implémenter.

Le côté positif de cette approche est que nous pouvons avoir plusieurs critères de scaling. Par exemple, afin d’éviter de scale up et down plusieurs fois de suite de manière trop rapprochée, on peut également vérifier qu’un certain temps s’est écoulé sans avoir de job créé avant de scale down.

Conclusion

Nous avons vu qu’en supprimant la politique d’autoscaling nous pouvons supprimer toutes les machines d’un groupe d’instance.

Nous avons écrit une tâche d’autoscaling qui utilise une logique custom pour savoir si un groupe devrait être up (1 machine) ou down (0 machine).

L’inconvénient est que nous devons avoir une machine séparée, toujours up et prête à dépiler notre tâche d’autoscaling.

SOLUTIONS