4 points par GN⁺ 2023-07-28 | 1 commentaires | Partager sur WhatsApp

Construction et exploitation de S3

  • S3 est l'acronyme de Amazon Simple Storage Service et désigne un système de stockage à très grande échelle.
  • Andy Warfield a travaillé sur S3, ce qui lui a permis d'acquérir une compréhension très large du système.
  • S3 est un service qui couvre des domaines variés, de l'expérience de performance côté client jusqu'à la mécanique des disques durs.

Il y a 17 ans, sur un campus universitaire lointain...

  • S3 a été lancé le 14 mars 2006 et fête cette année son 17e anniversaire.
  • Warfield a terminé son doctorat à l'université de Cambridge, a participé au projet Xen, puis a fondé la startup XenSource.
  • XenSource a grandi avant d'être rachetée par Citrix, et Warfield y a beaucoup appris sur la croissance d'une activité et la gestion d'équipe.

Comment fonctionne S3

  • Après avoir rejoint Amazon, Warfield a appris le fonctionnement de S3 auprès de Seth Markle, l'un des premiers ingénieurs du service.
  • S3 est un service de stockage d'objets avec une API HTTP REST, composé d'un frontend, d'un service d'espace de noms, d'une flotte de stockage équipée de disques durs et d'une flotte chargée des tâches en arrière-plan.
  • S3 se compose de centaines de microservices, et les interactions entre équipes reposent sur des contrats au niveau des API.

Premières observations

  • S3 est, au-delà du logiciel, un écosystème en évolution permanente qui inclut aussi le matériel et les personnes.
  • L'échelle de S3 fait que chaque composant est lui-même un ensemble de services scale-out, si bien qu'il faut du temps pour appréhender la taille réelle du système.

Échelle technique : la physique du stockage

  • S3 est un système immense qui utilise des millions de disques durs.
  • Les disques durs incarnent à la fois une prouesse technologique et une remarquable efficacité en matière de coût.

Gestion de la chaleur : placement des données et performances

  • Dans S3, pour résoudre le problème dit de « gestion de la chaleur », des optimisations sont mises en œuvre afin de répartir uniformément les requêtes d'I/O sur un grand nombre de disques durs.

Réplication : placement des données et durabilité

  • S3 utilise des schémas de redondance comme la réplication et l'erasure coding afin de garantir la durabilité des données et de gérer la chaleur.

L'effet d'échelle : stratégie de placement des données

  • En répartissant les données aussi largement que possible sur un grand nombre de disques, S3 fait en sorte que les données de chaque client n'occupent qu'une très petite part de chaque disque, ce qui permet d'isoler les charges de travail.

Le facteur humain

  • La complexité de S3 tient non seulement à des éléments techniques, mais aussi au facteur humain.
  • Amazon encourage les ingénieurs et les équipes à échouer vite et en toute sécurité, et à se concentrer sur la fourniture d'un stockage à très forte durabilité.

Changer moi-même d'échelle : résoudre des problèmes difficiles qui commencent et se terminent par la « responsabilité »

  • Chez Amazon, Warfield a lui-même connu un changement d'échelle, découvrant l'ampleur du logiciel, des personnes et du business.
  • Amazon met l'accent sur la « responsabilité », ce qui aide à comprendre sa structure organisationnelle et son approche de l'ingénierie.

L'avis de GN⁺

  • S3 est bien plus qu'un simple service de stockage : c'est un écosystème complexe où se combinent matériel, logiciel et facteur humain.
  • Cet article apporte des éclairages utiles aux ingénieurs logiciel débutants qui veulent comprendre l'échelle et la complexité de S3.
  • La culture de la « responsabilité » chez Amazon est un élément clé qui motive les équipes et les individus à innover avec un sens accru des responsabilités.

1 commentaires

 
GN⁺ 2023-07-28
Avis Hacker News
  • Un taux d’erreur de 1 pour 10^15 requêtes est quelque chose qui se produit fréquemment dans le monde réel, et c’est un point à prendre en compte pour S3.

    • Quand je travaillais chez AWS, je me souviens qu’à l’échelle de S3, un événement à une chance sur un milliard se produisait chaque jour, et qu’il fallait donc envisager et traiter même des événements dont la probabilité était normalement assez faible pour ne pas s’en inquiéter.
    • Je suis ravi de découvrir ShardStore, en particulier la vérification formelle, les tests basés sur les propriétés, etc., qui sont impressionnants. La génération précédente de services était notoirement truffée de bugs, mais au moins elle était bien conçue, grâce à l’obsession des ingénieurs S3 pour des échecs sûrs évitant toute perte de données.
  • En travaillant dans le domaine de la génomique, j’ai géré de nombreux stockages de données de plusieurs pétaoctets au cours des dix dernières années.

    • Pour avoir utilisé divers systèmes de stockage comme AWS S3, GCP GCS, Ceph, Gluster ou des systèmes HP, j’apprécie énormément les efforts nécessaires pour faire tourner ce type de systèmes.
    • Les avantages de partager les IOPS disque avec d’innombrables autres clients sont énormes, et il est très difficile d’atténuer cela sur un système unique.
    • Dans le cas de clusters matériels en colocation, nous avons dû adapter le système de batch pour traiter les E/S comme une ressource allouable, au même titre que la RAM ou le CPU, afin de gérer les travaux de grande ampleur.
    • S3 et GCP sont chers, mais leurs performances justifient ce coût.
  • Ce que nous pourrions construire si S3 utilisait un protocole basé sur OAuth2 pour déléguer les accès en lecture/écriture.

    • Il nous faut un protocole basé sur HTTP permettant à des applications d’accéder aux données au nom des utilisateurs.
    • Google Drive est ce qui s’en rapproche le plus, mais il y a le problème du fournisseur unique, et c’est dommage que remoteStorage n’ait pas pris.
    • J’espère que Solid réussira, mais cela me semble complexe.
    • Ma propre réponse au problème est gemdrive.io, mais pour l’instant je me concentre sur d’autres parties de la stack auto-hébergée.
  • Explication des spécifications du disque dur IBM RAMAC en 1956.

    • La capacité de stockage de 3.75 MB pour un coût d’environ 9 200 $ par téraoctet n’est peut-être pas exacte.
    • D’autres sites suggèrent un prix d’achat d’environ 10 000 $ par mégaoctet, donc la spécification devrait être de 9 200 $ par mégaoctet.
  • Gérer l’authentification dans un système distribué est extrêmement difficile.

    • À l’échelle d’AWS, l’authentification relève presque de la magie, et AWS dispose d’un modèle d’autorisations très riche, avec des changements de droits propagés dans l’infrastructure à des vitesses inférieures à la milliseconde.
    • Contrairement à d’autres services, S3 place peut-être les permissions au niveau de la ressource pour des raisons de performance.
  • En tant qu’ingénieur très expérimenté avec un agenda technique, je passe plus de temps à développer et à expliquer clairement les problèmes qu’à fournir des idées.

    • Pour réussir dans ce rôle, l’accent est mis sur la clarification des problèmes et le soutien aux solutions, tout en trouvant des moyens d’aider une équipe d’ingénierie solide à s’approprier ces solutions.
  • C’est agréable de voir des employés d’Amazon parler ouvertement du fonctionnement interne de S3.

    • J’aimerais en savoir plus sur le fonctionnement de Glacier, et il y a encore beaucoup de spéculations sur le support de stockage utilisé, faute d’informations publiques.
  • Le passage qui explique la tête de disque dur en la comparant à un Boeing 747.

    • C’est un travail d’une telle précision que ce serait comme rater un seul brin d’herbe après que l’avion a fait 25 000 fois le tour de la Terre.
  • En revenant à l’époque de S3 KeyMap, nous avons appris que même après avoir identifié les objets/partitions/buckets les plus chauds, on ne pouvait pas simplement les déplacer pour résoudre le problème.

    • La vraie solution consistait à répartir la charge des partitions de l’hôte par quartiles, puis à déplacer une partition du deuxième quartile vers l’hôte le moins chargé.
    • Cela a fait passer le taux d’erreur d’environ 1 % de manière stable à des journées sans aucune erreur, et nous avons rendu les alertes bien plus strictes en conséquence.
  • S3 n’est pas qu’un simple stockage, c’est un standard.

    • Certains acteurs proposent un stockage compatible S3, et même si on ne sait pas vraiment à quel point ce standard est ouvert ni s’il faut payer Amazon pour pouvoir dire « compatible S3 », c’est quelque chose de vraiment très cool.