Local-First
Offline-First
Sincronização de Dados
Arquitetura
Experiência do Usuário

Local-First : un logiciel qui fonctionne en premier sur votre appareil

Des applications qui répondent instantanément car elles traitent l'appareil comme la principale source de données et le serveur comme la destination finale.

Local-First : un logiciel qui fonctionne en premier sur votre appareil

Il y a un sentiment que tout le monde a eu en utilisant un logiciel : cliquer sur quelque chose et attendre. Le curseur tourne, l'écran se fige pendant une demi-seconde et ce n'est qu'alors que l'interface répond. Ce délai a presque toujours la même origine : l'application avait besoin de parler à un serveur avant de vous donner une réponse.

L’approche locale d’abord part d’un principe différent. Les données résident d’abord sur votre appareil. L'application lit et écrit localement, répond immédiatement et communique ensuite avec le serveur en arrière-plan. Pour ceux qui l’utilisent, cela semble magique. Pour celui qui construit, c’est une décision architecturale lourde de conséquences.

Le modèle traditionnel et son goulot d'étranglement invisible

La plupart des systèmes que nous utilisons sont nés avec le serveur au centre. Le navigateur ou l’application est une coque mince : il affiche l’interface, mais la vérité réside dans une base de données distante. Chaque action pertinente devient une demande.

Vous modifiez un champ, l'application l'envoie au serveur, attend la confirmation et met à jour l'écran. Ce cycle fonctionne bien lorsque le réseau est rapide et stable. Le problème est qu’une mise en réseau rapide et stable est une hypothèse et non une garantie.

Dans le métro, dans l'ascenseur, dans une zone où le signal est faible, lors d'un événement bondé où mille téléphones portables se disputent la même antenne, le mannequin s'effondre. L’interface est l’otage de la latence. Et la latence, même faible, coûte cher : chaque centaine de millisecondes d’attente érode la perception de la qualité du produit.

Il y a un détail que les responsables techniques sous-estiment souvent. Le goulot d'étranglement n'apparaît pas dans les métriques du serveur, qui restent saines. Il apparaît dans l’expérience utilisateur réelle, à un endroit que le tableau de bord ne peut pas voir.

Qu'est-ce qui change lorsque l'appareil devient le protagoniste

Local-first inverse l’ordre des opérations. La principale source de données devient l’appareil. Le serveur cesse d'être le lieu où se déroule l'action et devient le lieu où l'action est ensuite synchronisée.

Lorsque vous modifiez quelque chose, la modification est écrite localement et l'interface répond immédiatement. Il n'y a pas d'attente de confirmation à distance. En parallèle, un processus de synchronisation transfère cette modification sur le serveur lorsque cela est possible et ramène ce que d'autres utilisateurs ou appareils ont modifié.

Cette inversion produit trois effets qui se renforcent mutuellement. Le premier est la rapidité perçue : la réponse est instantanée car elle ne dépend pas du réseau. Le deuxième est la résilience : l’application continue de fonctionner sans connexion, car la connexion n’a jamais été une condition préalable à l’action. La troisième, plus subtile et plus politique, mérite sa propre section.

Propriété des données, ou pourquoi cela est devenu un indicateur

Lorsque les données résident pour la première fois sur l’appareil de l’utilisateur, la relation de pouvoir change. Dans le modèle traditionnel, si le service se déconnecte ou si l’entreprise ferme ses activités, vos données disparaissent avec. En réalité, vous ne les avez jamais eus, vous avez simplement loué l'accès.

Local-first porte une thèse implicite : l'utilisateur doit disposer d'une copie de travail de ses données, qui reste utile même si le serveur disparaît. Ce n’est pas seulement une question de commodité technique, c’est une question de savoir qui est responsable de quoi.

Pour les produits destinés aux professionnels, cet argument pèse. Un architecte, un avocat, un chercheur ont tous une incitation légitime à ne pas être pris en otage par la disponibilité d'un service tiers. La continuité de leur travail ne peut pas dépendre de l’ambiance d’une infrastructure distante.

J'ai ici une opinion ferme : traiter la propriété des données comme un différenciateur de produit, et non comme un détail de mise en œuvre, est l'une des décisions les plus intelligentes qu'une équipe puisse prendre aujourd'hui. La confiance est difficile à construire et facile à perdre.

Pourquoi cette idée est revenue en force

Le local d’abord n’est pas un concept nouveau. Les systèmes de gestion de versions comme Git fonctionnent ainsi depuis des années : vous disposez de l'intégralité du référentiel sur la machine, travaillez hors ligne et synchronisez quand vous le souhaitez. Ce qui a changé, c'est l'outillage qui l'entourait.

Les navigateurs ont acquis un stockage local important et la possibilité d'exécuter une logique complexe sur l'appareil. La théorie de la synchronisation a mûri, avec des structures de données capables de fusionner des modifications simultanées sans serveur arbitre au milieu. Et le matériel informatique dans les poches des gens est devenu suffisamment puissant pour réellement traiter, et pas seulement afficher.

Ajoutez à cela une frustration accumulée. Des années d'applications lentes qui plantent sans signal et sont traitées hors ligne comme une erreur ont créé un appétit pour quelque chose de mieux. La barre des attentes s'est élevée, portée par peu de produits offrant réellement de la fluidité.

Quiconque souhaite approfondir le mécanisme qui rend la synchronisation fiable aimera comprendre comment les CRDT résolvent les conflits de données, car c'est là que réside une grande partie de l'ingénierie difficile.

Là où le local d'abord brille et où cela ne rapporte pas

Cela vaut la peine d'être honnête : tous les systèmes ne devraient pas être axés d'abord sur le local. L’approche a des conséquences néfastes. Vous commencez à maintenir la logique des données à deux endroits, vous devez penser aux conflits d'édition et le test devient plus complexe. Ce n'est pas gratuit.

Les applications où l’utilisateur interagit beaucoup avec ses propres données gagnent beaucoup. Éditeurs, outils de productivité, applications d'annotation, systèmes de travail sur le terrain, tout cela correspond naturellement à l'idée.

Les systèmes où la vérité doit être centrale et unique, comme les transactions financières, les réservations de sièges ou l'inventaire partagé en temps réel, nécessitent plus de soin. Non pas que la priorité locale soit impossible dans ce pays, mais la règle commerciale exige que certaines décisions soient prises en un seul point de coordination, et forcer la barre crée plus de risque que de valeur.

Les critères que j'utilise sont simples. Si la plupart des actions des utilisateurs peuvent être confirmées localement sans consulter personne, le local d’abord est un candidat sérieux. Si presque chaque action nécessite une autorité centrale pour être validée, réfléchissez-y à deux fois.

Il convient également de séparer le coût d’entrée du coût de maintenance. Assembler la première version locale demande du travail, mais c'est l'évolution au fil du temps qui nécessite de la discipline. Chaque nouveau type de données nécessite de décider de la manière dont elles se synchronisent et résolvent les conflits, et cette facture s'additionne. Les équipes qui ignorent cela au début paient des intérêts plus tard, sous la forme de bugs difficiles à reproduire et de données qui divergent sans explication apparente.

Le point de départ pour décider

Le local d’abord n’est pas une mode en matière de framework, c’est un changement par rapport au point de départ de la vérité sur les données. Cette décision affecte le produit, l'expérience, l'infrastructure et même la relation de confiance avec ceux qui utilisent le logiciel.

Avant d’adopter, posez-vous la bonne question : mon utilisateur doit-il agir vite et continuer à travailler même sans un réseau parfait ? Si la réponse est oui, cela vaut la peine d’investir des efforts. Le retour apparaît là où il compte le plus, dans la perception que le produit fonctionne simplement.

Si vous dirigez une équipe et évaluez ce revirement, cela vaut la peine de commencer par comprendre la conception pratique d'une application qui traite le mode hors ligne comme un état normal, car c'est là que la théorie devient du vrai code.

A lire aussi