Fermer

juillet 16, 2024

Comment Turso rapproche les bases de données distribuées à l’échelle mondiale des utilisateurs

Comment Turso rapproche les bases de données distribuées à l’échelle mondiale des utilisateurs


Lorsque nous envisageons de distribuer globalement une application pour augmenter ses performances, nous envisageons généralement de déployer notre front ou back-end dans une architecture sans serveur, un CDN ou peut-être dans un réseau Edge. Mais, même si ces approches fonctionnent et donnent les résultats escomptés, nous pouvons aller plus loin et tenter d’augmenter encore plus les performances. Et si nous distribuions également notre base de données ?

Introduction à Turso

C’est là que Turso s’avère utile ! Turso est un outil de base de données qui nous aide à créer et à gérer des bases de données SQLite prêtes pour la production. Mais là où Turso brille vraiment, c’est dans sa capacité à créer des instances distribuées à l’échelle mondiale de nos données, afin que notre application puisse accéder aux informations depuis l’emplacement le plus proche de l’utilisateur, réduisant ainsi considérablement la latence et améliorant l’expérience utilisateur.

Edge Computing et Turso

Turso s’appuie sur le concept Edge Computing, qui lui permet d’être rapide et évolutif. Cependant, comme il vit à la limite, il a également certaines implications dont il faut tenir compte. Par exemple, pour constater une amélioration significative par rapport à une solution non périphérique, toutes les connexions utilisateur devraient soit se connecter directement à Turso, soit s’appuyer sur un backend distribué. L’utilisation d’une base de données distribuée avec un backend à emplacement unique ne ferait aucune différence significative. Dans Perficient, nous avons exploré Turso avec son généreux niveau gratuit pour en savoir plus sur cet outil et avoir une expérience directe de ses avantages et de ses inconvénients.

Recherche et mesures

Dans nos recherches pour recueillir des métriques et comprendre les avantages de Turso, nous avons implémenté deux API : une avec Express et l’autre avec Next.js, nous permettant de créer des fonctions de pointe. Pour évaluer les performances des deux API, nous avons utilisé KeyCDN, un outil qui nous permet d’évaluer les réponses des API à partir de différents endroits dans le monde, comme le montre la figure 1.

Visites

Visites

Figure 1 : Outil KeyCDN

Validation de la latence

En utilisant TTFB (Time to First Byte), nous avons validé la façon dont la latence varie lors de l’utilisation de Turso. Dans le premier scénario avec l’application Next.js et les fonctions Edge, nous avons créé une base de données située à Bogota, en Colombie, et mesuré la latence dans différentes parties du monde. Dans le deuxième scénario, nous avons mis en place une base de données distribuée à Sydney, en Australie, pour mesurer les améliorations de la latence.

Résultats avec Next.js et Edge Functions

Dans la figure 2, vous pouvez observer des latences élevées, telles que 7,21 secondes au point de terminaison « planètes » à Francfort, en raison de la localisation de la base de données à Bogotá, en Colombie.

Turso Figure1

Visites

Figure 2 : Résultats utilisant la base de données à Bogota, Colombie avec Edge

Améliorations de la latence avec les bases de données distribuées

Lorsque la base de données est distribuée et rapprochée des utilisateurs en localisant une réplique à Sydney, comme le montre la figure 3, la latence au même point de terminaison à Francfort chute à 563,83 millisecondes, ce qui réduit considérablement la latence.

Figure 2

Figure 3 : Résultats utilisant la base de données à Bogotá, en Colombie et à Sidney, en Australie avec Edge

Résultats avec l’application express

Pour l’application Express, la même démarche a été adoptée. La base de données Turso était située à Bogotá, en Colombie, et les résultats étaient conformes aux attentes : des latences élevées, telles que 7,18 secondes jusqu’à Francfort, comme le montre la figure 4.

Figure 3

Figure 4 : Résultats utilisant la base de données à Bogota, Colombie avec Express

Autres améliorations avec la distribution

Distribuer la base de données et la rapprocher des utilisateurs, comme le montre la figure 5, améliore considérablement les temps de latence. Bien que la latence reste relativement élevée dans des endroits comme Singapour (1,16 seconde), les performances globales sont meilleures que l’utilisation d’une seule base de données à Bogota.

Ceci est différent des fonctions de périphérie, qui visent à rapprocher le plus possible les données de l’utilisateur, réduisant ainsi considérablement la latence. Avec Turso, la base de données peut être distribuée de manière transparente sur plusieurs emplacements, offrant ainsi un accès plus rapide aux données et améliorant les performances.

Figure4

Figure 5 : Résultats utilisant la base de données à Bogotá, en Colombie et à Sidney, en Australie avec Express

Avantages de Turso

De plus, Turso est construit à l’aide de libSQL, un fork de SQLite, ce qui en fait une base de données qui peut être répliquée et mise à l’échelle massivement à faible coût. De plus, Turso est open source et ouvert aux contributions. De plus, Turso propose une fonctionnalité appelée Embedded Replicas, qui permet aux applications mobiles de fournir des fonctionnalités robustes sans dépendre d’une connectivité constante. Cette fonctionnalité peut être particulièrement utile pour les systèmes IoT qui fonctionnent dans des environnements avec une connectivité limitée et peut également profiter aux plateformes mondiales de développement d’applications et aux entreprises de technologie financière.

Perspectives d’avenir avec Turso

Bien qu’il n’y ait pas d’implémentations directes de Turso chez Perficient, cette recherche met en évidence une opportunité pour l’entreprise de fournir à ses clients des solutions de bases de données hautes performances. Explorer les positions de Turso sur Perficient pour proposer des solutions innovantes qui rapprochent les bases de données des utilisateurs et réduisent la latence.

Facilité de mise en œuvre et recommandations

Notre expérience avec Turso nous a amené à la conclusion qu’il s’agit d’une technologie facile à mettre en œuvre dans de nouveaux projets, notamment avec l’aide de Turso CLI. Cependant, si l’intention est de migrer vers Turso à partir d’une autre base de données, il n’existe actuellement aucun outil disponible pour une telle migration. Dans de tels cas, on peut choisir d’écrire un script de migration à l’aide de Drizzle pour faciliter le processus.

Conclusion et meilleures pratiques

Pour tirer le meilleur parti de Turso, il est recommandé d’analyser quels pays et lieux dans le monde utilisent l’application et de la distribuer en conséquence. Rappelons que si l’application et la base de données sont proches de l’utilisateur, la latence sera meilleure, rendant l’interaction satisfaisante et rapide.

Turso est une technologie qui nous permet d’obtenir une meilleure latence dans notre application, bien qu’avec certaines limitations telles que la capacité et les possibilités de migration.

À l’avenir, cela pourrait être une excellente solution pour distribuer notre base de données pour des applications spécifiques, nous permettant d’obtenir une meilleure latence dans nos applications.

Article rédigé en collaboration avec Sebastián Herrera Hernández et Juan José Parra Díaz.






Source link