2 points par GN⁺ 2024-03-11 | 1 commentaires | Partager sur WhatsApp

S3 contient des fichiers, mais n’est pas un système de fichiers

  • Amazon S3 est la technologie cloud d’origine lancée en 2006 ; on l’appelle un « stockage objet », mais en pratique il est destiné aux fichiers.
  • L’idée que S3 serait un « Amazon Cloud Filesystem » est une croyance utile pour encourager son adoption, mais en réalité S3 n’est pas un système de fichiers.

Qu’est-ce qu’un système de fichiers, et la « profondeur » d’un module

  • L’API de fichiers Unix se compose de cinq fonctions de base, qui fournissent tout le nécessaire pour lire et écrire des fichiers.
  • Ces fonctions gèrent de nombreux problèmes comme la mise en tampon, le cache de pages, la fragmentation, les permissions, l’ordonnancement des E/S, etc., sans les exposer à l’utilisateur.
  • Les modules profonds ont l’avantage de permettre aux utilisateurs d’exploiter des fonctionnalités sans avoir à penser à cette complexité.

Les caractéristiques de S3 (cela aussi, c’est profond)

  • S3 ne réimplémente pas l’API de système de fichiers Unix, et son mode d’appel fondamental est différent.
  • L’API S3 est plus simple que l’API de fichiers Unix, mais elle a la limitation de ne pas permettre l’écrasement partiel d’un objet.

Les logiciels de système de fichiers, en particulier les bases de données, ne peuvent pas être déplacés vers Amazon S3

  • Les bases de données ont besoin d’un endroit où stocker les données, généralement dans divers fichiers d’un système de fichiers.
  • Elles dépendent fortement de la capacité à effectuer des écrasements partiels, ce qui est impossible avec S3.

Ce que S3 fait bien et ce qu’il fait mal

  • Le point fort de S3 est une bande passante très élevée en lecture comme en écriture.
  • En revanche, S3 ne prend pas en charge l’écrasement partiel, ni les opérations de renommage ou de déplacement, et l’énumération des fichiers est également lente.
  • Malgré cela, S3 demande peu de maintenance et simplifie des tâches comme la configuration des sauvegardes, la réplication ou le provisioning.

L’importance de la profondeur des modules entre organisations

  • Il n’est pas surprenant que S3 soit devenu la première API cloud populaire, car les API profondes aident à gérer la complexité entre organisations.
  • Intégrer un logiciel d’entreprise complexe comme SAP est une tâche pénible, précisément parce que SAP n’est pas un module profond.

Autres informations

  • Cet article ne cherche pas à suggérer que S3 est surestimé ; il explique plutôt la notion de modules profonds par opposition à des modules relativement superficiels.
  • Certaines bases de données ont été conçues pour utiliser l’API S3 comme stockage ; c’est possible, mais ce n’est pas transparent.
  • Avec S3, de nombreux formats de fichiers offrent des performances inférieures à celles d’un disque.

Avis de GN⁺

  • Il est important de comprendre que S3 n’est pas un substitut à un système de fichiers, mais une solution de stockage optimisée pour des cas d’usage précis. Par exemple, il convient bien au stockage et au transfert de gros fichiers immuables, mais il n’est pas adapté aux applications qui nécessitent des mises à jour partielles fréquentes, comme les bases de données.
  • Les performances et l’évolutivité de S3 sont très élevées, mais si l’on tient compte du coût et de la complexité de gestion, ce n’est pas forcément un bon choix pour tous les projets. Par exemple, le projet open source MinIO peut constituer une bonne alternative pour les organisations qui souhaitent mettre en place un stockage compatible S3 sur leur propre infrastructure.
  • Lorsqu’on utilise S3, il faut aussi prendre en compte des éléments supplémentaires comme la cohérence des données, les coûts réseau ou le contrôle d’accès, et ces facteurs peuvent influencer la conception globale du système.
  • Même si les cas d’usage de S3 peuvent être limités, c’est un outil très puissant pour certaines applications spécifiques comme les data lakes ou les solutions de sauvegarde. Sa capacité à stocker les données en toute sécurité et à les récupérer rapidement au besoin apporte une valeur importante à de nombreuses entreprises.
  • En apportant une compréhension approfondie des détails techniques de S3 et de ses cas d’usage concrets, cet article peut aider à prendre de meilleures décisions techniques.

1 commentaires

 
GN⁺ 2024-03-11
Avis Hacker News
  • Je n’ai jamais entendu parler de problèmes de durabilité de S3, mais je n’ai jamais vu non plus ces affirmations testées. Je suis curieux à leur sujet.

    • La durabilité de S3 est à la pointe du secteur et incomparable avec celle des systèmes de fichiers traditionnels.
    • La séparation des zones de disponibilité d’AWS est supérieure à celle des autres fournisseurs cloud.
    • S3 se préoccupe énormément de l’intégrité des données et des catastrophes naturelles.
    • S3 est exploité à une échelle suffisante pour détecter le « bit rot ».
    • Je ne stockerais pas des données importantes ailleurs que sur S3.
    • Source : quelqu’un qui a écrit le système de facturation de S3.
  • Lister des fichiers est lent. S3 est très rapide en lecture et en écriture, mais l’énumération des fichiers est très lente.

    • Ce ne sont pas les lectures et écritures rapides de S3 qui sont utiles, c’est la fonction de listage des fichiers qui l’est.
    • Dans les buckets non versionnés, lister un préfixe donné peut se faire en pratique dans un temps quasi constant.
    • On peut partitionner les données de différentes façons et utiliser les identifiants nécessaires sans se soucier des performances.
  • J’ai récemment été surpris par la lenteur du listage des fichiers. En travaillant sur un script pour gérer des assets sur S3, j’ai réalisé qu’un cache de liste de fichiers était nécessaire.

    • Il y a environ 100 000 répertoires à la racine, chacun contenant quelques répertoires avec quelques fichiers.
    • Lister les fichiers récursivement prend 15 minutes.
    • Je me demande pourquoi Amazon n’a pas résolu ce problème.
  • Amazon S3 est la technologie cloud originelle, lancée en 2006. Les « objets » étaient populaires à l’époque, et S3 a été qualifié de « stockage objet ».

    • S3 n’est pas un système de fichiers, c’est un stockage objet.
    • S3 n’est pas un fichier, et ce n’est pas non plus un système de fichiers.
    • Ce qu’on attend de l’abstraction de fichier, c’est la mutabilité.
    • S3 fournit une liste mutable d’objets immuables.
    • S3 résout un autre problème, et les tentatives pour lui donner l’apparence d’un système de fichiers viennent d’une mauvaise compréhension des clients.
  • Il y a une discussion comparant les API fournies par object_store d’Apache Arrow et Apache OpenDAL.

    • Apache OpenDAL est une bibliothèque qui fournit une API de type FS pour plusieurs stockages cloud, dont S3.
    • Certains systèmes de base de données comme GreptimeDB et Databend utilisent OpenDAL pour accéder aux données sur le stockage cloud.
    • D’autres solutions comme Alluxio et JuiceFS gèrent également une interface semblable à un système de fichiers au-dessus de S3.
  • Les logiciels de système de fichiers, en particulier les bases de données, ne peuvent pas être portés sur Amazon S3.

    • Pourtant, ils le peuvent.
    • Il n’est pas nécessaire d’écraser l’intégralité du fichier de base de données à chaque INSERT/UPDATE/DELETE.
    • Dans le cas de SQLite, il existe des outils comme Litestream qui prennent en charge la réplication vers S3 et la restauration.
  • J’utilise Minio comme « S3 » local pour stocker des jeux de données et des checkpoints de modèles.

    • Minio a beaucoup de fonctionnalités dont je n’ai pas besoin.
    • Quelle est aujourd’hui la meilleure option auto-hébergée, sur un seul nœud, pour une « chose » minimale de type S3 permettant de faire du CRUD sur des fichiers et d’en voir la liste ?
  • Tant qu’on parle de S3, cela vaut la peine de mentionner Backblaze B2.

    • J’en suis très satisfait, pour un prix 3 fois inférieur à S3.
  • S3 peut être mal utilisé comme système de fichiers.

    • S3 veut des objets, et ici on a des objets de 512 ou 4096 octets appelés clusters.