Aller au contenu

Compute — où s'exécutent les traitements, et pourquoi le batch est isolé

Vous êtes ici : Comprendre — les fondations : où s’exécutent les traitements de la suite. Où s’exécute le traitement — et pourquoi on ne le mélange pas. Lecture 8 min. Audience : devs, data engineers, auditeurs. Date : 2026-07-06 | Version : 1.0

Question Réponse Détail
Où tournent les apps web ? Sur App Service, un plan partagé allumé 24/7 hub · admin · ug · inv · gest · mcp · api-portail
Où tourne l’ETL ? Sur un worker Container Apps Job dédié, isolé et éphémère gs-etl-worker (déclenché par file + par horaire)
Pourquoi les séparer ? Deux profils de charge opposés — le pic du batch ne doit pas toucher le web Isolation des charges
C’est une autre souscription ? Non — même souscription, même resource group, même VNet, même base Container Apps = un type de ressource de plus, pas un ailleurs
Ça coûte quoi ? App Service = loyer fixe ; le worker = à l’usage (0 $ au repos) ~12 min par sync facturées, pas 24/7
Et une future charge ? « Doit-elle être allumée en permanence ? » Oui → App Service. Non → Job Voir la règle de décision plus bas

L’image juste n’est pas « tout au même endroit », mais deux machines séparées. Les apps web vivent sur un plan partagé et toujours allumé. Le traitement lourd vit dans une machine jetable qui naît quand on la déclenche, brasse ses données, puis disparaît. L’app admin ne fait plus l’ETL elle-même : elle dépose un message dans une file, et le worker prend le relais dans son coin.

Modèle de compute — apps web sur App Service, ETL sur un worker isoléÀ gauche, un plan App Service partagé et allumé en permanence héberge les sept applications web (hub, admin, ug, inv, gest, mcp, api-portail) ; il est réactif et facturé à loyer fixe. L’application admin dépose un message dans une file d’attente. À droite, séparé, un Container Apps Job éphémère héberge le worker ETL : il naît au déclenchement, lit SOFI en lecture seule, écrit dans la couche servie (gold, dim, fact), puis meurt. Les deux machines sont séparées : le pic de ressources du batch ne touche jamais le web.APP SERVICE — plan partagé7 apps web · allumé 24/7 · loyer fixeadmindépose un jobhub · ug · inv · gest · mcp · api-portailréactif — doit répondre en continufilemessageCONTAINER APPS JOB — isolééphémère · à l’usage · 0 $ au reposworker ETLgs-etl-workerSOFIlecture seulegold · dim · factécrituremachines séparées — le pic du batch ne touche jamais le web
Le web et le batch tournent sur deux machines distinctes. L’app admin déclenche l’ETL par un simple message ; le worker fait le travail lourd, isolé.

Historiquement, l’ETL tournait dans l’application admin (un backend web). Deux conséquences, longtemps invisibles :

  1. Le démarrage de l’app s’alourdit. Les bibliothèques nécessaires au traitement gonflent le temps de démarrage du serveur web.
  2. Les voisines partagent le sort. Sur un plan App Service partagé, quand une app sature la machine, elle peut entraîner les autres avec elle.

Sortir le traitement vers un Container Apps Job règle les deux points d’un coup : le worker vit dans sa propre machine jetable — s’il échoue, il échoue seul —, et le démarrage du web redevient léger, puisque admin ne fait plus que déposer un message avant de retourner à son travail de site web.

C’est la source de confusion classique : deux modèles opposés cohabitent. La forme de la charge dicte la forme de la facture :

Deux profils de charge — allumé en continu contre pic brefÀ gauche, le profil d une application web sur App Service : une charge continue, présente 24 heures sur 24, facturée à loyer fixe qu elle soit occupée ou au repos. À droite, le profil du worker ETL sur Container Apps Job : une charge nulle presque tout le temps, avec un pic bref chaque nuit d environ douze minutes, facturée uniquement au temps d exécution réel. En juillet 2026, l ETL est facturé environ douze minutes par nuit.APP SERVICE — app weballumé 24/7 · loyer fixecharge continuepayé pareil, occupé ou au reposCONTAINER APPS JOB — batchéphémère · à l usage · 0 $ au repospic ~12 min/nuitfacturé au temps réel seulementmême souscription, même base — seule la machine d exécution diffère (ordre de grandeur, juillet 2026)
Deux profils de charge opposés : une bande continue contre un pic nocturne. L app web paie son loyer 24/7 ; le batch ne paie que ses ~12 minutes.

App Service — loyer fixe

Une machine qui tourne 24/7. Tu paies le même prix qu’elle soit occupée ou endormie. En échange : toujours prête à répondre. C’est le bon modèle pour une app web.

Container Apps Job — à l'usage

Une machine jetable, facturée au temps d’exécution réel. 0 $ quand elle dort. L’ETL facturé ~12 min par nuit, au lieu d’alourdir une machine payée de toute façon. C’est le bon modèle pour un batch.

Avant de créer une nouvelle charge de travail, une seule question :

Doit-elle être allumée et prête à répondre en permanence ?

  • Oui → App Service. C’est une app web ou une API interactive.
  • Non — elle réagit à un déclencheur (file, horaire, événement) et fait un travail borné dans le temps → Container Apps Job. Éphémère, à l’usage, avec sa propre identité (jamais celle d’une app web).
Situation Cible
API REST interne consommée par le front App Service
Sync / import / export de données volumineuses Container Apps Job
Petite tâche déclenchée, < quelques secondes Job (ou Azure Function si vraiment minime)
Webhook qui répond vite puis travaille en arrière-plan App Service (accusé) + Job (travail lourd)

En cas de doute : si la charge peut faire un pic de ressources ou tourner plusieurs minutes, elle ne va pas dans une app web.

Le modèle actuel — App Service pour le web, Container Apps Job pour le batch — est un choix propre, défendable devant n’importe quel architecte. Ce n’est pas le seul possible : une version « un seul modèle partout » mettrait aussi les apps web en conteneurs, pour n’opérer qu’un seul runtime. C’est une trajectoire, pas un prérequis — on l’envisagera le jour où un bénéfice concret le justifie (opération unifiée, coût, scaling). Le worker ETL est le premier pas dans cette direction : on apprend Container Apps sur une charge à faible risque avant d’envisager plus large.