Devriez-vous utiliser une alternative S3 pour le stockage d'objets ?

0
9
Shutterstock/Gorodenkoff

Amazon’ s Simple Storage Service (S3) fournit une interface très utile pour stocker des objets dans un stockage cloud redondant, où vous n'avez pas à vous soucier du matériel sous-jacent. En plus d'être un service proposé par Amazon, il s'agit également d'une API standard de l'industrie, et de nombreux services sont compatibles avec celle-ci.

Quoi Le S3 est-il compatible ?

Dans de nombreux cas, si vous passez à un autre fournisseur de cloud, vous devrez retravailler une grande partie de votre application. Mais, si vous utilisez S3 comme backend de stockage d'objets, vous pourrez passer de manière transparente à de nombreux autres services.

C'est parce que S3 est une norme API ouverte. Le service de stockage simple d'AWS n'est qu'une implémentation de cette norme ; il est natif et bénéficiera évidemment du meilleur support, mais il existe d'autres services qui offriront des performances et une stabilité acceptables, souvent à moindre coût.

Le passage à ces services est facile, il vous suffit de modifier le point de terminaison d'URL utilisé par votre application, et il est généralement bon d'apporter quelques modifications mineures à la gestion des clés. Vous devrez migrer vos données avec rclone, mais ce n'est pas un processus difficile, juste long dans certains cas.

Ce n'est pas un secret, AWS coûte cher. S3 n'est pas différent, et bien que le stockage de fichiers soit très bon marché, l'accès à ces fichiers ne l'est pas. Dans une charge de travail typique en lecture/écriture servant des fichiers en direct aux utilisateurs, le stockage des fichiers est généralement bon marché ; les coûts les plus élevés sont en fait les frais de transfert de données AWS et les frais de demande S3 :

Publicité

En voyant une ventilation de Cost Explorer comme celle-ci, vous pourriez être tenté d'envisager un service tiers qui sera moins cher sur les frais de transfert de données pour votre charge de travail.

Les deux principaux concurrents d'AWS S3 sont Google et Microsoft. Google a son “Cloud Storage,” et Microsoft Azure a Azure Blob Storage. Le stockage de Google est compatible S3 et est également relativement facile à migrer. Azure, en revanche, n'est pas compatible S3, bien qu'il existe des outils comme S3Proxy qui peuvent les patcher ensemble.

Cependant, tous les services de stockage des trois grands fournisseurs de cloud vous factureront des frais élevés pour Les données. Ils sont conçus pour les entreprises clientes, et si vous êtes une petite entreprise qui essaie de minimiser ses coûts, vous devriez chercher ailleurs. Il existe d'autres fournisseurs de cloud alternatifs, tels que Digital Ocean et Vultr, qui proposent des modèles de tarification plus rationalisés avec un service de qualité similaire.

Océan numérique

Numérique Ocean est un fournisseur de cloud conçu pour être simple. Bien qu'il n'offre pas autant de fonctionnalités que les principaux fournisseurs comme AWS, il le fait généralement grâce aux services qu'il propose. L'un de ces services est le stockage d'objets, les buckets étant appelés Spaces, et c'est ce que nous vous recommanderons si vous envisagez de vous éloigner d'AWS.

Les espaces sont assez simples. Le tarif de base est de 5 $ par mois et comprend 250 Go de stockage ainsi qu'un To entier de transfert de données sortantes. C'est une très bonne affaire—la même utilisation coûterait plus de 90 $ sur AWS S3.

Le stockage de données supplémentaire est de 0,02 $ par Go, assez standard par rapport à S3 (bien que plus élevé si vous prévoyez d'utiliser des archives moins chères stockage) et le prix des données supplémentaires est raisonnable à 0,01 $ par Go transféré, ce qui est 90 % moins cher que le prix AWS.

Publicité

Bien sûr, cela a quelques limites, et malheureusement, il y a beaucoup plus d'inconvénients et de contraintes attachés à cette offre exceptionnelle.

  • 750 requêtes, par adresse IP, vers tous vos espaces.< /li>
  • 150 opérations combinées par seconde vers n'importe quel espace, sans compter les requêtes GET.
  • 240 opérations au total, y compris les requêtes GET.
  • 5 requêtes PUT ou COPY toutes les 5 minutes vers tout objet individuel dans un espace

Bien que ces limites de taux ne soient pas géniales, les limites sont assez généreuses et vous n'allez probablement pas les atteindre. Si vous êtes sur le point de passer, vous pouvez en minimiser l'effet en ayant plusieurs espaces. Si vous n'êtes pas sûr, vous pouvez activer les métriques de compartiment dans S3 pour vérifier votre utilisation actuelle.

CONNEXION : Comment activer et afficher les métriques de demande pour un AWS Seau S3 dans CloudWatch

De plus, les espaces contenant plus de 3 millions d'objets, ou 1,5 million avec la gestion des versions activée, peuvent nécessiter des “périodes de maintenance intermittente” pour garantir des performances constantes. Cependant, j'ai personnellement un compartiment avec plus de 2 millions d'objets versionnés qui ne semble pas avoir connu de temps d'arrêt significatif sur 6 mois, donc ce n'est peut-être pas courant.

Un inconvénient majeur de Spaces par rapport à S3 est l'interface. Spaces est simple, et si vous cherchez simplement à télécharger le contenu de votre site Web ou à stocker des fichiers de base, l'interface Web permettra les téléchargements, les téléchargements et la modification de la plupart des paramètres. Cependant, si vous stockez beaucoup de fichiers ou avez besoin d'une configuration avancée, c'est franchement assez mauvais, et vous devrez principalement travailler avec l'API S3.

Par exemple, Spaces n'a même pas d'éditeur Web pour sélectionner votre configuration de cycle de vie, qui gère le stockage des anciennes versions des objets utilisés comme sauvegardes en cas de suppression d'utilisateurs. Cela signifie également qu'il n'y a aucun moyen d'accéder ou de supprimer des objets versionnés sans répertorier les versions via l'API et y accéder directement par ID de version.

Ils n'ont pas non plus beaucoup de documentation. Pour activer la gestion des versions, par exemple, nous avons dû consulter la propre documentation de S3 pour utiliser le point de terminaison PutBucketVersioning, la plupart du temps ignoré, qui est heureusement pris en charge sur Spaces bien qu'il soit ignoré dans les documents DO. Vous devrez l'activer via ce point de terminaison :

PUT ?versioning <VersioningConfiguration xmlns=”http://s3.amazonaws.com/doc/2006-03-01/”> <État>Activé</État> </Configuration des versions>

Et puis activez l'expiration de la version :

PUT ?lifecycle <LifecycleConfiguration xmlns=”http://s3.amazonaws.com/doc/2006-03-01/”> <Règle> <ID>Seau</ID> <Préfixe>*</Préfixe> <État>Activé</État> <NoncurrentVersionExpiration> <NoncurrentDays>90</NoncurrentDays> </NoncurrentVersionExpiration> </Règle> </LifecycleConfiguration> Publicité

Les clés API sont également très basiques. Vous n'aurez pas de contrôle granulaire sur les compartiments individuels, les objets ou tout autre élément fourni avec AWS IAM. Cela peut être un problème si vous prévoyez de donner des clés à des tiers.

Dans l'ensemble, l'expérience de Digital Ocean est loin d'être comparable à la qualité du S3 d'AWS. Mais, si vous êtes d'accord avec les limites et que cela ne vous dérange pas d'utiliser l'API pour certaines tâches, cela peut certainement vous faire économiser une tonne d'argent sur les coûts de bande passante.

Auto-hôte

Comme S3 est un standard ouvert, c'est aussi quelque chose que vous pouvez héberger vous-même, ce qui sera préférable pour beaucoup personnes. Il existe de nombreux outils pour le faire, mais l'un des meilleurs est MinIO, qui s'exécute sur Kubernetes (K8s).

Être sur K8s signifie que vous pouvez l'exécuter sur n'importe quel cloud public, y compris sans serveur Les services K8 comme AWS EKS. Mais, vous seriez toujours soumis à des coûts de bande passante dans ce cas.

Là où MinIO brille vraiment, c'est avec les serveurs dédiés, les solutions de cloud hybride et l'exécution sur des centres de données sur site. Si vous payez pour une connexion réseau dédiée à un serveur, vous ne serez pas déçu si vous saturez cette connexion. Cela peut rendre le stockage auto-hébergé très bon marché si vous prévoyez de fournir beaucoup de données aux utilisateurs finaux.

De plus, l'exécution sur votre propre matériel n'est pas soumise aux mêmes limites que des services comme S3. Vous pouvez héberger MinIO sur des serveurs ultra-rapides et obtenir de meilleures performances dans les charges de travail lourdes en lecture/écriture (et vous ne serez pas facturé pour les demandes). Bien sûr, vous devrez payer les coûts matériels pour cette performance.

Publicité

Là où cela tombe à plat, c'est sur la redondance—car S3 stocke vos données dans tellement d'endroits différents, il&# 8217;s fondamentalement garanti de toujours fonctionner et de ne jamais perdre vos données, à moins d'un météore géant. MinIO, en revanche, peut être hébergé sur un seul serveur ou via un déploiement distribué. Si vous hébergez sur un seul serveur, vous serez foutu si votre instance tombe en panne. C'est l'option la moins chère, mais nous recommandons fortement plusieurs serveurs dans un cluster ou au moins une sorte de sauvegarde sur S3.

MinIO est libre d'héberger sous la licence GNU AGPL, mais vous avez gagné& #8217;ne bénéficiez d'aucun soutien. Les licences d'entreprise commencent à 1 000 $/mois et fournissent une assistance 24h/24 et 7j/7 ainsi qu'un “Panic Button,” qui auront leurs ingénieurs de récupération de données prêts à vous aider à corriger les pannes de serveur graves.