L’edge computing est un modèle qui rapproche le calcul des utilisateurs ou des données ; les fonctions edge, du code serverless exécuté dans les PoP d’un CDN. Le terme général — défini de façon canonique par Shi et al. comme un calcul placé près des sources de données — couvre aussi bien l’IoT des ateliers que l’infrastructure télécom MEC. Pour les développeurs backend, il désigne quelque chose de précis : de petites fonctions déployées sur les mêmes points de présence mondiaux qu’un CDN, exécutées dans le PoP le plus proche de chaque requête — l’évolution du CDN, de la mise en cache de contenu vers l’exécution de code.
Points clés
| Question | Réponse |
|---|---|
| Pourquoi l’edge est rapide | La physique — le RTT, c’est la distance ; un PoP proche, ~5 ms, un océan, ~150 ms |
| L’astuce du runtime | Isolates V8 : sandboxes façon onglet de navigateur, démarrage en ~ms, pas de conteneur à démarrer |
| Ce qui y a sa place | La logique de gateway sans état — contrôles d’auth, redirections, personnalisation |
| Ce qui n’y a pas sa place | Le travail sur les données — la base de données reste au même endroit |
| La mise en garde honnête | L’edge déplace l’aller-retour ; seule la stratégie de données le supprime |
Une fonction edge, et la couche où elle vit
// JavaScript — an edge function (web-standard APIs, runs at every POP)
// Gateway logic at the edge; the backend stays the source of truth
export default async function handler(request) {
const url = new URL(request.url);
const country = request.headers.get('x-user-country') ?? 'US';
if (url.pathname === '/' && country !== 'US') {
return Response.redirect(`${url.origin}/${country.toLowerCase()}/`, 302);
}
// Reject requests without credentials at the edge; full verification and data work go to the origin
const auth = request.headers.get('Authorization');
if (!auth) return new Response('Unauthorized', { status: 401 });
return fetch(request); // pass through to the origin backend
} // Flutter / Dart — Back4app Flutter SDK
// The three-layer picture from the client's seat:
// CDN serves static assets · edge handles gateway logic · origin owns data
final query = QueryBuilder<ParseObject>(ParseObject('Post'))
..whereEqualTo('status', 'published')
..setLimit(20);
final response = await query.query();
// This query talks to the ORIGIN backend — where the database lives.
// Moving it "to the edge" would move the round trip, not remove it. // iOS / Swift — Back4app Swift SDK
// The three-layer picture from the client's seat:
// CDN serves static assets · edge handles gateway logic · origin owns data
let query = Post.query("status" == "published")
.limit(20)
let posts = try await query.find()
// This query talks to the ORIGIN backend — where the database lives.
// Moving it "to the edge" would move the round trip, not remove it. // Android / Kotlin — Back4app Android SDK
// The three-layer picture from the client's seat:
// CDN serves static assets · edge handles gateway logic · origin owns data
val query = ParseQuery.getQuery<ParseObject>("Post")
query.whereEqualTo("status", "published")
query.limit = 20
val posts = query.find()
// This query talks to the ORIGIN backend — where the database lives.
// Moving it "to the edge" would move the round trip, not remove it. L’onglet JavaScript est la fonction edge elle-même — Request/Response standards du web, aucun framework, interception du trafic avant l’origine. Les onglets client montrent l’autre côté de l’architecture : les données applicatives continuent d’aller au backend d’origine, parce que c’est là que vit la base de données — la phrase à laquelle tout cet article revient sans cesse.
Isolates vs. conteneurs : pourquoi l’edge démarre en millisecondes
| Isolates V8 (edge) | Conteneurs / micro-VM (FaaS régional) | |
|---|---|---|
| Démarrage | moins de 5 ms — créer un contexte JS | 100 à 1 000 ms — démarrer le runtime, cold start |
| Mémoire par tenant | ~2 Mo | 30 à 50 Mo et plus |
| Frontière d’isolation | Sandbox dans le processus (technologie des onglets de navigateur) | OS/hyperviseur — plus robuste |
| Surface d’API | Sous-ensemble standard du web | Runtime complet du langage |
| Plafonds d’exécution | Quelques dizaines de ms de CPU, petits bundles | Des minutes, des gigaoctets |
| Adapté à | Logique de gateway par requête | Vraies charges applicatives |
Des milliers d’isolates partagent un seul processus de longue durée par machine — le même mécanisme qui sépare les onglets d’un navigateur — si bien que “démarrer” une fonction revient à créer un contexte, pas à démarrer un runtime. C’est cette architecture, et non des pools préchauffés, qui permet aux plateformes edge d’annoncer honnêtement des cold starts quasi nuls. L’addition se lit aux troisième et quatrième lignes : une frontière d’isolation plus faible (compensée par des mitigations soigneuses) et un runtime où une grande partie de npm ne fonctionne pas — pas de système de fichiers, pas de modules natifs, pas d’évaluation dynamique, la surface portable étant désormais standardisée sous le nom de Minimum Common API (ECMA-429).
Edge vs. origine : la répartition des charges
| Charge de travail | S’exécute | Pourquoi |
|---|---|---|
| Vérification de token/session, blocage des bots | En edge | Rejeter le mauvais trafic avant qu’il ne traverse un océan |
| Redirections, routage géographique, répartition A/B | En edge | Par requête, sans état, latence visible |
| Réécriture d’en-têtes/cookies, logique de cache | En edge | L’habitat naturel du CDN |
| Lectures et écritures en base de données | À l’origine | Les données y sont ; sinon, un RTT par requête |
| Logique métier, transactions | À l’origine | Stateful, en plusieurs étapes, a besoin du runtime complet |
| Traitement de médias, tâches longues | À l’origine | Les plafonds CPU l’interdisent en edge |
La partie honnête : votre base de données reste au même endroit
La section que les présentations des fournisseurs omettent. Déplacer le calcul en edge ne déplace pas les données — cela transfère l’aller-retour de utilisateur → serveur à fonction → base de données, et pour les charges bavardes, c’est une régression : une fonction edge à 5 ms de l’utilisateur qui envoie cinq requêtes séquentielles à une base de données située à 150 ms passe 750 ms là où une fonction régionale colocalisée avec la base de données en passerait ~5. Ce calcul explique la discrète correction de trajectoire du secteur — certaines grandes plateformes edge recommandent désormais leurs runtimes régionaux pour la plupart des charges et ont ajouté des options pour épingler les fonctions près de la base de données, l’aveu le plus clair possible que la localité des données l’emporte sur la localité du calcul. Les remèdes partiels, par ordre de praticité : exécuter le code gourmand en données à l’origine (le tableau de répartition ci-dessus) ; regrouper en un seul aller-retour quand le code edge doit toucher aux données ; et répliquer les lectures vers l’extérieur via des caches clé-valeur en edge — trade-offs de cohérence à terme inclus. Les fonctions edge gagnent quand elles terminent leur travail en edge ; dès qu’elles doivent rappeler l’origine à chaque requête, la géographie cesse d’être de votre côté.
Quand l’edge relève de la sur-ingénierie
La plupart des applications sont un backend CRUD avec une base d’utilisateurs régionale — pour elles, un backend mono-région plus un CDN pour les ressources statiques est plus simple et souvent plus rapide de bout en bout qu’un niveau edge qui fait l’aller-retour jusqu’à la même base de données. Les fonctions edge méritent leur place quand la logique se termine en edge, pour une audience répartie dans le monde entier, sur un chemin où la latence est visible — trois conditions, toutes requises. Le modèle de coûts raconte la même histoire sous l’autre angle : les plateformes edge facturent à la requête plus les millisecondes CPU (bon marché pour une fine logique de gateway), tandis que les fonctions régionales facturent la durée réelle — y compris le temps que votre code passe à attendre la base de données à côté de laquelle il aurait dû se trouver.
Cas d’usage courants
- Barrières d’authentification — vérifiez un token de session au PoP ; les requêtes non authentifiées ne traversent jamais l’océan.
- Géo-personnalisation — langue, devise et routage de conformité décidés à quelques millisecondes de l’utilisateur.
- Répartition A/B et feature flags — attribution du cookie en edge, cohérente avant même le chargement de la page.
- Rate limiting et défense anti-bots — absorber les abus en périmètre, avec des compteurs par PoP dans un KV edge.
- L’edge computing au sens large — le sens IoT/télécom : capteurs d’usine et infrastructure 5G qui traitent localement, un sujet qui mérite son propre article, reconnu ici en une ligne.
Devriez-vous utiliser des fonctions edge ? Matrice de décision
| Situation | Penchez vers |
|---|---|
| Utilisateurs mondiaux, logique de gateway à latence visible | L’edge — il joue à domicile |
| Logique qui se termine en edge (sans base de données) | L’edge |
| Accès bavards à la base de données à chaque requête | L’origine — systématiquement |
| Base d’utilisateurs régionale, app CRUD standard | Origine + CDN ; l’edge n’apporte rien |
| Dépendances lourdes, modules natifs, CPU prolongé | L’origine — le runtime interdit l’edge |
| Ressources statiques | Le cache du CDN — aucune fonction nécessaire |
Limites et trade-offs
- Le runtime est un sous-ensemble. Uniquement des API standards du web ; les ORM avec bindings natifs, les bibliothèques d’images et le code dépendant du système de fichiers ne fonctionnent pas — vérifiez l’arbre de dépendances avant de vous engager.
- Les plafonds CPU sont stricts. Quelques dizaines de millisecondes de calcul, c’est le budget ; les fonctions edge orientent le trafic, elles ne le traitent pas.
- L’état est ailleurs, par conception. Tout besoin stateful part vers l’origine ou vers un KV edge à cohérence à terme — aucun des deux n’est gratuit.
- Le débogage est distribué. Reproduire un bug qui ne survient que dans un PoP, sous une seule géographie, est une discipline en soi ; journaliser de manière centralisée depuis partout est la parade.
- Le balancier oscille. Les choix par défaut “edge d’abord” ont déjà été révisés une fois ; traitez l’edge comme un outil précis pour la logique de gateway, pas comme une identité d’architecture.
L’edge sur Back4app
Back4app est une plateforme open-source de Backend as a Service (BaaS) qui combine une base de données gérée, des API REST et GraphQL générées automatiquement, l’authentification, le stockage de fichiers et des fonctions serverless avec Cloud Code. Dans le schéma à trois couches que dessine cet article, Back4app est l’origine bien faite : la base de données et la logique métier Cloud Code vivent ensemble — la colocalisation qui rend le travail sur les données rapide — derrière un CDN qui sert fichiers et ressources statiques depuis les mêmes PoP qu’utiliserait un niveau edge. Les fonctions edge viennent ensuite s’insérer devant, comme fine logique de gateway, là où les trois conditions sont réunies : une redirection ici, une vérification de token là, avant de passer la main à une origine qui possède les données et applique les ACL à chaque requête. La leçon d’architecture qu’enseigne la section honnête — le calcul près de l’utilisateur, le travail sur les données près des données — correspond exactement à cette répartition, chaque couche faisant la part que la géographie favorise.
Questions fréquentes
Qu'est-ce que l'edge computing, en termes simples ?
Exécuter le calcul près de l'endroit où les données sont produites ou de celui où se trouvent les utilisateurs, plutôt que dans un data center lointain. Moins de distance, c'est moins de millisecondes et moins de bande passante — toute l'idée est géographique. Le terme couvre les capteurs IoT, l'infrastructure télécom et, pour les développeurs web, du code qui s'exécute dans les points de présence d'un CDN.
Qu'est-ce qu'une fonction edge ?
Une petite fonction serverless déployée sur les points de présence mondiaux d'un CDN et exécutée à l'emplacement le plus proche de chaque requête — en général pour intercepter le trafic HTTP afin de rediriger, personnaliser ou authentifier avant qu'il n'atteigne le backend d'origine.
Quelle est la différence entre fonctions edge et fonctions serverless ?
Les deux relèvent du functions-as-a-service ; elles diffèrent par le lieu (des centaines d'emplacements vs. une région), le runtime (isolates légers avec API standards du web vs. runtimes complets conteneurisés), les cold starts (quasi nuls vs. des centaines de millisecondes) et les limites (plafonds stricts de CPU et de taille vs. des minutes et des gigaoctets).
Que sont les isolates V8 ?
Des contextes JavaScript légers et sandboxés — le même mécanisme qui sépare les onglets d'un navigateur — exécutés par milliers dans un seul processus de longue durée. Chacun dispose de son propre tas et de ses propres globales, démarre en moins de cinq millisecondes pour quelques mégaoctets de surcoût, et ne nécessite aucun démarrage de conteneur ou de VM : c'est pourquoi les plateformes edge annoncent des cold starts pratiquement nuls.
Quelles sont les limites des runtimes edge ?
Un sous-ensemble d'API standards du web — fetch, Request/Response, streams, WebCrypto — sans système de fichiers, sans modules natifs et sans évaluation dynamique de code ; des plafonds de temps CPU stricts (quelques dizaines de millisecondes, couramment) et des limites de taille de bundle réduites. De nombreux packages populaires, des ORM avec bindings natifs aux bibliothèques d'images, n'y fonctionnent tout simplement pas.
Qu'est-ce qui a sa place en edge, et qu'est-ce qui reste à l'origine ?
En edge : la logique de gateway sans état, près de l'utilisateur — vérification de tokens, redirections, routage géographique, répartition A/B, réécriture d'en-têtes, rate limiting. À l'origine : tout ce qui est stateful et transactionnel — lectures et écritures en base de données, logique métier, traitements lourds. La règle empirique : le calcul près de l'utilisateur, le travail sur les données près des données.
Ma base de données ruine-t-elle la latence de l'edge ?
Souvent, oui — déplacer le calcul en edge ne déplace pas les données. Une fonction edge à Tokyo qui interroge une base de données en Virginie paie un aller-retour transpacifique complet par requête ; cinq requêtes séquentielles transforment une fonction de cinq millisecondes en une fonction de 750 millisecondes. Les remèdes : s'exécuter près des données, regrouper en un seul aller-retour, ou mettre les lectures en cache en edge.
Un CDN, est-ce la même chose que l'edge computing ?
Un CDN met en cache et sert du contenu statique depuis ses points de présence ; l'edge computing exécute votre code à ces mêmes emplacements. Les fonctions edge sont l'évolution programmable du CDN — même géographie, mais une logique active au lieu d'une mise en cache passive.