S3はファイルだが、ファイルシステムではない
- Amazon S3は2006年に登場した元祖クラウド技術で、「オブジェクトストレージ」と呼ばれるが、実際にはファイルのためのもの。
- S3を「Amazon Cloud Filesystem」だと考えるのは、人々にS3の採用を促すうえで有用な思い込みだが、実際のところS3はファイルシステムではない。
ファイルシステムとは何か、そしてモジュールの「深さ」
- UnixのファイルAPIは5つの基本関数で構成されており、ファイルの読み書きに必要なものをすべて提供する。
- これらの関数は、バッファリング、ページキャッシュ、断片化、権限、IOスケジューリングなど多くの問題を扱うが、それをユーザーに露出させない。
- 深いモジュールには、ユーザーが複雑さを意識せずに機能を利用できるという利点がある。
S3の特徴(これも深い)
- S3はUnixファイルシステムAPIを再実装しておらず、基本的な呼び出し方式が異なる。
- S3 APIはUnixのファイルAPIより単純だが、オブジェクトを部分的に上書きできないという制限がある。
ファイルシステムソフトウェア、特にデータベースはAmazon S3へ移行できない
- データベースはデータを保存する場所を必要とし、通常それはファイルシステム上のさまざまなファイルに保存される。
- データベースは部分的な上書き機能に大きく依存しており、これはS3では不可能。
S3が得意なことと苦手なこと
- S3の長所は、読み書きの帯域幅が非常に高いこと。
- しかしS3には部分的な上書き、名前変更、移動操作がなく、ファイル一覧の列挙も遅い。
- それにもかかわらずS3は保守の手間が少なく、バックアップ設定、レプリケーション、プロビジョニングなどの作業を簡素化する。
組織間におけるモジュールの深さの重要性
- S3が最初に人気を得たクラウドAPIになったのは驚くことではなく、組織間の複雑さを管理するうえで深いAPIが役立つ。
- SAPのような複雑な企業ソフトウェアを統合するのは苦痛な作業であり、それはSAPが深いモジュールではないからだ。
その他の情報
- この記事はS3が過大評価されていると主張したいのではなく、深いモジュールと比較的浅いモジュールという概念を説明している。
- 一部のデータベースはストレージとしてS3 APIを使うよう設計されており、それは可能だが透過的ではない。
- S3では多くのファイル形式がディスクより性能が劣る。
GN⁺の見解
- S3はファイルシステムの代替ではなく、特定のユースケースに最適化されたストレージソリューションであることを理解するのが重要。たとえば、大規模な不変ファイルの保存と転送には適しているが、データベースのように頻繁な部分更新を必要とするアプリケーションには向かない。
- S3の性能とスケーラビリティは非常に高いが、コスト効率と運用の複雑さを考えると、すべてのプロジェクトに適しているわけではない。たとえば、オープンソースプロジェクトのMinIOは、自前のインフラ上にS3互換ストレージを構築したい組織にとって良い代替案になり得る。
- S3を使う際には、データ整合性、ネットワークコスト、アクセス制御など追加の考慮事項があり、これらの要素はシステム全体の設計に影響を与えうる。
- S3のユースケースは限定的かもしれないが、データレイクやバックアップソリューションのような特定のアプリケーションでは非常に強力なツールである。データを安全に保存し、必要なときに素早く取り出せる能力は、多くのビジネスに重要な価値をもたらす。
- この記事は、S3の技術的な詳細と実際のユースケースへの深い理解を提供することで、技術的な意思決定に役立つ可能性がある。
1件のコメント
Hacker Newsの意見