Technologie

Construire un Système de Publication Automatisé et Sécurisé avec Firebase App Hosting et Cloud Scheduler

Armel Yara
Construire un Système de Publication Automatisé et Sécurisé avec Firebase App Hosting et Cloud Scheduler

Salut !


Automatiser la publication des articles de manière sécurisée nécessite une architecture solide qui minimise les coûts et dont l’implémentation est aisée. 

Dans cet article, vous allez découvrir comment nous avons automatisé la publication d’articles et l’envoi de newsletter sur The Day Info en utilisant une architecture serveless sécurisée sur Google Cloud Platform.  

Notre système fonctionne tout seul avec l’infrastructure Firebase App hosting (Next.js) et ne nécessite pas de serveur dédié qui tourne 24h/24. 

L'Architecture Secure Cron Job

Le système permet la programmation d'articles à l'avance et, au moment précis de leur publication, envoyer automatiquement une newsletter à tous nos abonnés via Resend.

Voici comment nous avons conçu l'architecture Secure Cron Job en utilisant la puissance de Google Cloud Platform(GCP).

Notre solution repose sur quatre piliers principaux :

  • Le Déclencheur : Google Cloud Scheduler

  • Le Coffre-fort : Google Secret Manager

  • L'Exécution : Firebase App Hosting (Cloud Run)

  • La Logique : Next.js API Routes + Firestore


    Architecture Serveur Cloud

Implémentation de l’architecture

La première étape consiste à sécuriser les clés API c’est-à-dire ne pas les coder en dur. 

Étape 1 : Sécuriser les Clés

Au lieu de laisser traîner des clés API dans le code, nous utilisons la CLI Firebase pour stocker nos secrets dans Google Secret Manager.

Veuillez créer un compte sur Resend et générer une clé API. 

# Création du secret pour l'API Resend

firebase apphosting:secrets:set RESEND_API_KEY


# Création d'un token secret pour sécuriser notre Cron

firebase apphosting:secrets:set CRON_SECRET_TOKEN

Ensuite, il faudra lier ces secrets via le fichier apphosting.yaml à la racine du projet :

# apphosting.yaml

env:

  - variable: RESEND_API_KEY

    secret: RESEND_API_KEY

  - variable: CRON_SECRET_TOKEN

    secret: CRON_SECRET_TOKEN


Étape 2 : Créer la Route API (Next.js)

Il faudra ensuite créer l’ API Route (chemin-d’accès/route.ts) qui servira de point d'entrée. Sa première mission est de vérifier l'identité de l'appelant.

export async function POST(request: NextRequest) {

  // 1. Vérification de sécurité "Zero Trust"

  const cronSecret = request.headers.get('x-cron-secret');

  const expectedSecret = process.env.CRON_SECRET_TOKEN;

  

  if (cronSecret !== expectedSecret) {

    return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });

  }


  // 2. Logique métier : récupérer et publier les articles

  // ...

}


Étape 3 : Configurer le Scheduler

Dans la console Google Cloud, nous créons un job Cloud Scheduler :

  • Fréquence : */5 * * * * (Toutes les 5 minutes)

  • Cible : HTTP

  • URL : https://mon-site.com/api/cron/publish-articles

  • Méthode : POST

  • En-tête (Header) : Nous ajoutons manuellement x-cron-secret avec la valeur définie à l'étape 1.

Automatisation "Tout-en-un"

Une fois la sécurité passée, le script exécute un pipeline précis :

  • Requête Firestore : Il cherche tous les articles dont le statut est programme et dont la date programmePour est passée.

  • Publication Transactionnelle : Il passe le statut à publie et met à jour la date de publication.

  • Notification : C'est ici que la magie opère. Dès qu'un article est confirmé "publié", le script récupère la liste des abonnés actifs et déclenche l'envoi de la newsletter via Resend.

Les avantages de cette architecture

  • Coût : C'est du "Serverless". Si aucun article n'est programmé, le script s'exécute en 10ms et ne coûte quasiment rien.

  • Sécurité : Les clés API (Resend, Cron Secret) ne sont jamais exposées dans le dépôt Git.

  • Scalabilité : Que nous ayons 10 ou 10 000 abonnés, Cloud Run peut absorber la charge de traitement.


Voilà pour aujourd’hui, j’espère que cet article vous a plu et que vous y avez trouvé de l'information utile là-dedans. 


Je vous souhaite une excellente semaine et sur ce, je vous remercie.


Résumé par IA

Trop long ? Obtenez un résumé rapide de cet article généré par l'IA.

Vous Pourriez Aussi Aimer
Recherche de suggestions...
Cet article vous a-t-il été utile ?
Faites-nous savoir ce que vous en pensez.

📧 Restez informé

Recevez une notification par email à chaque nouvel article ou modification

Commentaires (1)

Visiteur Anonyme #4474

nn

Laisser un commentaire

Vous commentez en tant que :