NHN Cloud Meetup 編集部
TOAST Object Storageの紹介
2019.07.23
644
TOAST Object Storageは、様々なサービスのバックエンドストレージとして使用されています。Dooray、TOAST File、TOAST Imageなどの非構造化データを保存する多くのサービスの根幹であると言えるでしょう。
ところで、一般的に使用されているブロックストレージの代わりに、なぜオブジェクトストレージを使うのでしょうか?
今回は、オブジェクトストレージと、従来のストレージ(レガシーストレージ、ファイルシステムとブロックストレージ)の違いについて、紹介したいと思います。
1.オブジェクトストレージとは何か?
最近のデータは、イメージ、映像、SNSのように、複雑で容量が大きいだけでなく、構造化されていない非構造化データが多くを占めています。非構造化データは従来のファイルシステムとブロックストレージでは管理が難しく、構造化されていないため、クイック検索や分析が容易ではありません。ユーザーがデータを階層化されたディレクトリに分類し、構造化されたファイル名またはファイルの種類により、定められたタグを付与して管理する必要があります。しかし、それぞれのデータを分類するルールが異なるため、オブジェクトの数が多くなって分類ステップが増えてくると、容易にアクセスできなくなります。
オブジェクトストレージは、急激に増加している非構造化データを安全に保存して簡単に管理するために、レガシーストレージとは異なるアプローチを提供しています。データをデータ本体と、自動生成されたメタデータ、固有の識別子(ID)で構成されたオブジェクトで管理します。
オブジェクトストレージは、TOAST File、Doorayドライブ、Dropbox、Googleドライブなどのクラウドストレージサービス、Facebook、Instagramのような写真を保存するSNSサービス、Spotifyのような音楽を保存するストリーミングサービスなど、非構造化データを多く使用するサービスのバックエンドストレージとして使用されています。
2.従来のストレージと何が違うのか?
オブジェクトストレージとレガシーストレージは、どのような点が違うのでしょうか?前述のとおり、オブジェクトストレージは、保存からアクセス、管理まで、レガシーストレージとは全く別の方法を提供しています。
保存方法
この違いを説明するときに最も利用される例えが駐車です。一般的に、ドライバーは駐車場の空きスペースを確認して駐車します。車両を使用するには駐車した場所に行く必要があるので、駐車した場所を必ず覚えていなければなりません。しかし、代理駐車の場合は、ドライバーが駐車担当者にキーを渡して領収書を受け取ると、車両はどこかに駐車されます。回収する時も、領収書さえ提示すれば、駐車担当者がドライバーに車両を渡してくれます。
駐車場をデータ保存に置き換えてみましょう。レガシーストアからデータを保存するとき、どこに保存するかが重要です。ファイルマネージャを利用して階層化されたディレクトリを設定し、目的のディレクトリにファイルを保存したり、オペレーティングシステムが提供するPOSIX APIを利用して、使用可能なアドレスを受け取りデータを保存します。保存されたデータにアクセスするには、データの正確な位置を把握する必要があります。ドライバーが駐車する方式と似ていますね。
しかし、オブジェクトストレージは、ユーザーが保存してほしいと要請したデータをオブジェクトで構成し、リポジトリ内のどこかに保存します。ユーザーはその位置を把握する必要がなく、後で使用するデータのIDを提示し、持ってきてほしいと要請するだけでよいのです。これは代理駐車と同じフローですね。
安定性
レガシーストレージは、ユーザーが直接異なる物理ストレージにバックアップしたり、RAIDまたはバックアップシステムのサポートが必要でした。
しかし、オブジェクトストレージは、ユーザーが特に考慮すべき内容はありません。オブジェクトストレージは、データを保存するときに、物理的位置が異なるストアに複数コピーでミラーリング(Replication)したり、パリティを生成していくつかの部分に分けて保存(Erasure Coding)します。RAID-1、RAID-6と同様の安定性対策を保有しており、そのためストレージデバイスの物理的な障害が発生しても、データの整合性を維持することができます。
拡張性
レガシーストレージは容量が不足すると、物理的にディスクを追加し、新しいパスとしてマウントして使用します。新しいマウントパスを使用するため、データを保存する場所が変更されます。保存場所を変更したくない場合は、既存のディスクより容量が大きいディスクを追加して、新しいディスクにデータを移す過程が必要です。物理インターフェースとマウントポイントの制限、ディスクのサイズに応じて追加できる容量に限界があります。
しかし、オブジェクトストレージは、データの位置が重要ではないので、このような複雑なプロセスは必要ありません。新しいストレージノードを追加し、プール(Pool)に登録するだけで、全体の使用容量が増えます。
メタデータ
ファイルシステムでは、ファイルタイプに応じて定められたメタデータがあります。MP3 ID3やJPEG Tagが代表的なメタデータです。ただし、ユーザーが任意にメタデータを追加することはできません。メタデータが提供されていないファイルタイプは、メタデータを用いた分類と検索ができないという意味です。
これに対し、オブジェクトストレージは、ユーザー定義のメタデータを無制限に追加できます。追加されたユーザー定義のメタデータは、ハッシュタグのようにデータを1つのトピックにまとめ、テーマに基づいて分類するなど非構造化データをより効率的に管理できるように支援します。
Legacy Storage | Object Storage | |
---|---|---|
適合性 | 構造化データに適している (DB、ビジネスアプリケーションデータなど) |
非定型の大容量データに適している (クラウドストレージ、マルチメディアデータストアなど) |
保存方法 | POSIX APIを使って保存、保存した場所を覚えてアクセス 相対的に応答速度が速い |
REST APIを使って保存、アクセス要求 HTTP(s)に基づいてアクセスするため、比較的応答速度が遅い |
安定性 | ユーザーが直接データをバックアップしたり、バックアップシステムを利用 | 自動でRAID-1、6レベルのデータ整合性を提供 |
拡張性 | ディスクを追加して新しいパスで使用するか、既存のディスクを交換 | パスを変更せず、ほぼ無制限に拡張可能 |
メタデータ | ファイルの種類によって定義されたメタデータのみ使用 | ユーザー定義に基づいて制限なく使用 |
3.おわりに
オブジェクトストレージは、次のように要約できるでしょう。
データに固有の識別子とメタデータを付与して安全に保存し、簡単にデータにアクセスして使用できる拡張しやすいストレージ
レガシーストレージとオブジェクトストレージの違いを整理すると、圧倒的にオブジェクトストレージが良いように見えますね。しかし、圧倒的に良いシステムというものはありません。オブジェクトストレージは大容量のデータを保存することに焦点が当てられているので、小さなデータをたくさん保存する場合は良い選択とは言えません。このように、データの種類、規模に応じて構築費用と維持費用は千差万別であり、様々な条件を考慮して自分のサービスに適したストレージを選択することが合理的であるでしょう。