
Comprendre les Différents Types de Stockage
Nous profitons de la sortie de Block Storage en bêta publique pour saisir l'occasion de vous expliquer les principales différences entre Block, File et Object Storage.

Aujourd’hui, nous refondons scaleway.com (Gatsby + xstyled) pour surmonter plusieurs limites :
En passant sur Next.js, nous pouvons désormais installer directement des librairies (MDX, Algolia, Segment…) pour lesquelles nous utilisions des plugins Gatsby, qui étaient souvent moins bien maintenus, voire obsolètes.
Notre logique métier était très fortement couplée aux API Gatsby.
Par exemple : un composant qui affiche une liste embarquait son propre fragment GraphQL.
Nous avons refondu nos composants pour qu’ils soient génériques et ne gèrent que l’UI. Ils sont ainsi devenus beaucoup plus facilement réutilisables et faciles à tester, ce qui a contribué à réduire la duplication de notre code.
Nous avons également adopté une nouvelle organisation par domaine (DDD, Domain Driven Design) qui a aussi accentué cette séparation entre la logique métier et les composants UI “communs”.
Cette séparation des responsabilités a accéléré la prise en main du projet par les nouveaux membres de l’équipe.
Nous avons fait le choix d’utiliser Strapi parce qu’il offre :
Grâce aux dynamic zones dans Strapi, nous mettons à disposition tout un panel de composants Strapi que les équipes de contribution utilisent pour construire des pages comme elles l’entendent.

Nous utilisons maintenant Storybook pour documenter nos composants de manière isolée. Sur chacune de nos branches de développement un Storybook est automatiquement généré et déployé sur un bucket, ce qui facilite le processus de revue de code pour toute l’équipe.
Il peut être utilisé par les équipes de contribution pour prévisualiser les composants qu’elles veulent ajouter dans une page.
C’est aussi un outil très pratique pour l’équipe Visual Design qui peut consulter et manipuler les nouveaux composants que nous développons.
Chaque fichier Storybook vit à côté de son composant :
Button.tsxButton.stories.tsx
L'adoption de TypeScript dans notre base de code a été une véritable révolution pour notre équipe de développement et d'intégration.
Strapi a la particularité de générer des schémas et des types pour les entités qui y sont créées. Nous utilisons ces types pour qu’il y ait une cohérence totale entre les composants Strapi et leurs composants React correspondants.
Cette stricte vérification des types nous a permis de réduire les bugs en production.
Résultat : un gain de sérénité pour l’équipe de développement et une meilleure stabilité pour les personnes qui utilisent ce que nous délivrons.
Nous avons fait le choix de migrer du paradigme Styled Components — avec xstyled — à une approche plus native en CSS avec SCSS.
Il n’était pas rare de voir des composants de l’ancienne codebase dépasser les 300 lignes. Cela rendait l’expérience de développement assez pénible, sans parler de la syntaxe non reconnue par l’IDE et de l’absence d’aides intégrées adéquates (pas d’auto-suggestion, noms de classes obfusqués…).
Les CSS Modules sont supportés nativement par Next.js, ils nous permettent de bien séparer les principes de nos composants UI.
Exemple du contenu d’un composant :
Button.tsx pour le code fonctionnel ;Button.module.scss pour le style du composant.Avec SCSS nous bénéficions aussi de fonctionnalités avancées réutilisables, comme des mixins, rendant l'écriture des styles plus efficace.
Nous avons également utilisé les variables CSS (Custom properties) pour récupérer les valeurs d’Ultraviolet, le Design System de Scaleway.

L’équipe a saisi cette opportunité pour optimiser l'automatisation des différentes étapes du développement et de la gestion du code en passant par le déploiement et la livraison continue des fonctionnalités ou des correctifs.
Nous utilisons maintenant des Serverless Containers pour la plupart de nos applications, notamment pour nos environnements de développement.
Chaque demande de fusion de branche de code (pull/merge requests) dispose maintenant d’un conteneur serverless automatiquement créé par notre CI (pipeline d’intégration continue) sur lequel notre application Next.js est déployée.
Ces environnements de preview facilitent grandement le travail de revue de code car ils permettent à chaque membre de l’équipe de développement de visualiser le résultat du code modifié sans avoir à le re-générer sur sa propre machine.
C’est aussi un moyen pour les parties prenantes — stakeholders — de consulter facilement et valider les nouvelles fonctionnalités avant qu’elles ne soient fusionnées sur la dernière version de la branche de code destinée à la mise en production.
Cela nous permet également de maîtriser les coûts : ces conteneurs serverless sont automatiquement supprimés une fois les branches de code fusionnées.

Scaleway.com est généré statiquement. Voici les résultats de la migration vers Next.js sur le temps de génération — ou build — de l’application :
| Build de scaleway.com | Date | Durée moyenne* |
|---|---|---|
| Gatsby | Décembre 2023 | ~27 min |
| Next.js | Décembre 2024 | ~7 min |
La durée moyenne des générations est passée de 27 minutes à 7 minutes, représentant un gain de 20 minutes par build, soit une réduction de 74 %.
* Nous avons calculé une moyenne sur plusieurs dizaines de générations.
Les sprints de migration de Gatsby vers Next.js ont été des étapes stimulantes pour toute l’équipe durant ces quelques semaines. Cette transition a permis une amélioration significative de notre expérience de développement. Elle a renforcé notre vélocité et notre flexibilité au quotidien grâce à une nouvelle codebase simplifiée et mieux organisée.
Les avantages de cette refonte sont nombreux :
Il était important pour nous que chaque membre de l’équipe puisse participer à cette refonte et ajouter sa pierre à l’édifice. Nous sommes tous fiers d’avoir participé à cet effort collectif, et nous sommes convaincus que ces nouveaux outils et cette dynamique renforcée nous aideront à faire progresser Scaleway encore davantage.

Nous profitons de la sortie de Block Storage en bêta publique pour saisir l'occasion de vous expliquer les principales différences entre Block, File et Object Storage.

Les conséquences de nos actions ou de notre inaction d’aujourd’hui ne feront que se multiplier au fil du temps. Alors demandons-nous: mon fournisseur cloud est-il vraiment durable ?

Familink a récemment migré l’intégralité de son infrastructure d’AWS à Scaleway. Apprenez de leur retour d'expérience comment stocker vos données en Europe.

La plateforme Jamespot a été développée sur une architecture monolithique reposant sur des VM. Apprenez comment ils ont migré sur une stratégie multi-cloud.