FOR LEARNERS学習中向け

Iストレージとデータベース段2構成層設計

データの置き場の選び方|S3・EBS・EFS・RDS・DynamoDB を「どう読み書きするか」から決める設計

データの置き場の選び方|S3・EBS・EFS・RDS・DynamoDB を「どう読み書きするか」から決める設計

S3 も EC2 も RDS も DynamoDB も、名前と役割は言える。それでも「画像をアップロードできるようにしたい」「社内で共有するファイルを置きたい」と言われると、どれに置くか迷う。特徴を覚えているだけで、要件から置き場を選ぶ順番がないと「とりあえず RDS」「とりあえず S3」になりがちです。この記事は、その順番を作ります。

この記事の結論

  • 置き場の選択は、サービス名ではなく「データをどう読み書きするか」を先に書き出すことから始めます。
  • まず形で絞ります。OS が使うディスクは EBS、複数台で共有するファイルは EFS、URL やキーで出し入れする塊は S3、行と表で検索・結合するなら RDS、キーで引くなら DynamoDB です。
  • 迷ったら「検索条件が後から増えるか」を見ます。増えるなら RDS、アクセスパターンが固定のキー引きなら DynamoDB が候補です。
  • 1つに決め切らなくてよく、ファイル本体は S3、一覧用の情報は DB のように用途別に分けるのが基本です。
  • 可用性・耐久性・バックアップの要件は、選んだ後ではなく選ぶ軸に入れます。

データの置き場は、なぜサービス名からではなく「読み書きの形」から選ぶのか

「S3 は安くて丈夫」「RDS は何でもできる」のように、サービスごとの特徴で覚えると、要件が来たときに「どれが一番良いか」を探してしまいます。でも置き場に一番良いものはなく、データの使い方に合うものがあるだけです。

AWS の Well-Architected フレームワーク(パフォーマンス効率の柱)も、最適なデータ管理は固定の答えではなく、データの種類(ブロック・ファイル・オブジェクト)、アクセスパターン、スループット、アクセス頻度、更新頻度、可用性・耐久性の制約によって変わる、という考え方を取っています。つまり、先に書き出すべきなのは「サービス名」ではなく「そのデータがどう読まれ、どう書かれるか」です。

書き出すときの問いは、次のくらいで足ります。

  • 読むのは人か、プログラムか。1件ずつか、まとめてか
  • 書き換えるのか、一度置いたら変えないのか
  • 複数のサーバーから同時に触るのか
  • 後から検索条件が増えそうか

サービスの個別の特徴は、この問いの答えに合うものを選ぶための材料にします。

CHECK 1ここまでの確認

置き場を選ぶ前に、最初に書き出すべきものはどれ?

答えと解説

答え: 2. データをどう読み書きするか(誰が・どんな単位で・どれくらい)

サービス名から入ると、要件に合わない置き場を選びやすくなります。「読み書きの形」から入る理由は最初の章を読み直してください。

置き場を決める5つの軸は何か

読み書きの形を整理するために、5つの軸を使います。

軸 問い 例
データの種類 OS が見るディスクか、ファイルか、オブジェクトか、表か 起動ディスク、共有フォルダ、画像、注文
アクセスパターン どう読み書きするか。キーで引くか、条件で探すか 会話 ID で引く、期間と顧客で絞る
共有 複数のサーバーから同時に触るか 全サーバーで同じ設定ファイルを読む
規模と増え方 どれくらい、どんな速さで増えるか 画像は増え続ける、マスタはあまり増えない
止められない度合い どれだけ止められず、どれだけ失えないか 注文は失えない、一時ファイルは作り直せる

最後の軸は、選んだ後に付け足すものではなく、選ぶときの条件です。たとえば複数の AZ にまたがって使いたいのか、1つの AZ に収まればよいのかで、候補は変わります。

最初の3つ(種類・アクセスパターン・共有)で候補が1〜2個に絞れることが多く、残りの2つで決め手をつけるイメージです。

ブロック・ファイル・オブジェクトの置き場(EBS・EFS・S3)はどう選び分けるのか

この3つは、データの種類で分けて考えます。

WHERE TO PUT DATA問いで置き場が分かれる

置き場はデータの形への4つの問いで絞れる

  1. OS が使うディスクか

    はい → EBS

  2. 複数台で共有するファイルか

    はい → EFS

  3. URL・キーで出し入れする塊か

    はい → S3

  4. 行と表で扱うか

    はい → RDS / DynamoDB

出典: AWS Overview(Storage services)、Well-Architected Performance Efficiency Pillar

EBS:OS が使うディスク

EBS は EC2 のための永続的なブロックストレージで、つないだサーバーからは普通のディスクとして見えます。OS やデータベースのファイルなど、ディスクとして使うものに向きます。1つの AZ の中で複製される前提のため、AZ をまたいで使いたいときは別の手立てが要ります。バックアップはスナップショットで取ります。

EFS:複数台で共有するファイル

EFS は Linux 向けの共有ファイルシステムで、複数の EC2 から同時にマウントして使えます。複数の AZ にまたがって使える作りです。「全サーバーで同じファイルを見たい」という要件が出たら、候補は EFS です。

S3:URL やキーで出し入れする塊

S3 はオブジェクトストレージで、ファイルをキーで出し入れします。OS のディスクとして使うものではなく、画像・動画・ログ・バックアップのような「塊」を置く場所です。アクセスの頻度に応じて、ストレージクラスを選んでコストを調整できます。たとえば、ほとんど取り出さない長期保管は、取り出しが遅くなる代わりに安く置けるクラスが向きます。

間違えて消した・上書きしたときに戻したいなら、S3 ではバージョニングという機能で複数のバージョンを残せます。置き場ごとに保護の手段が違う点も、選ぶ前に確認しておくとよい点です。

置き場 データの形 共有 保護の手段の例
EBS ブロック(ディスク) 基本は1台のインスタンス スナップショット
EFS ファイル 複数台で共有 AWS Backup など
S3 オブジェクト URL・キーで誰からでも バージョニング、ストレージクラスの設計

CHECK 2ここまでの確認

複数のサーバーから同じファイルを同時に読み書きしたいとき、まず候補になるのはどれ?

答えと解説

答え: 2. EFS

EFS は複数のサーバーから共有できるファイルの置き場です。EBS は基本的に1台のインスタンスにつなぐディスクです。ブロック・ファイル・オブジェクトの章を読み直してください。

表のデータベースは RDS と DynamoDB のどちらを選ぶのか

表の形のデータは、RDS か DynamoDB が候補です。分かれ目は「検索条件の自由度」です。

RDS VS DYNAMODB表のデータベースの分かれ目

探し方が変わるなら RDS、キーで引くなら DynamoDB

RDS

リレーショナル

  • 条件検索・結合が得意
  • 検索条件が後から増えても対応しやすい
  • 表の設計から始める

DynamoDB

キーで引く NoSQL

  • キーでの読み書きが得意
  • アクセスの形が決まっている場面に合う
  • アクセスパターンから設計を始める
出典: Amazon RDS・Amazon DynamoDB の公式ドキュメント

RDS:行と表で、条件を変えながら探す

RDS はリレーショナルデータベースを AWS が管理するサービスで、パッチやバックアップなどの運用を任せられます(どこまで任せられるかは rds-toha で扱います)。複数の表を結合したり、条件を変えて検索したりするのが得意なので、「後から集計の切り口が増えそう」「画面ごとに検索条件が違う」業務データに向きます。

DynamoDB:キーで引く

DynamoDB はキーで項目を読み書きする NoSQL で、サーバーの管理が要りません。会話 ID から会話履歴を引く、利用者 ID からセッションを引く、のようにアクセスの形が決まっている場面に合います。有効期限を設定して、期限が過ぎた項目を自動で消すこともできます。逆に、あとから「この条件でも探したい」が増えると、設計を見直すことになりがちです。

迷ったときの見分け方

  • 検索条件が後から増える → RDS
  • 読み書きはほぼキーだけで決まる → DynamoDB
  • 設計の始め方は逆になる。RDS は表の形(何をどの表に置くか)から、DynamoDB は「どうアクセスするか」から決める

どちらが優れているかではなく、アクセスの形と合っているかで選びます。

CHECK 3ここまでの確認

検索条件が後から増えていく業務データを、複数の表にまたがって調べたい。向くのはどちら?

答えと解説

答え: 2. RDS のようなリレーショナルデータベース

条件検索や結合は行と表の RDS が得意な領域です。DynamoDB はアクセスパターンが決まったキー引きで力を出します。RDS と DynamoDB の章を読み直してください。

1つの要件に複数の置き場を組み合わせるとは

実際のシステムでは、1つの要件でも形の違うデータが混ざっています。そのときは、1つの置き場に無理に押し込まず、形ごとに分けます。

SPLIT BY SHAPE画像アップロードの例

形の違うデータは置き場を分けて組み合わせる

全部を1か所に

  • 処理中の一時ファイル(EBS)
  • 一覧用の情報(DB)
  • 画像の本体(S3)

形ごとに分ける

  • 処理中の一時ファイル(EBS)
  • 一覧用の情報(DB)
  • 画像の本体(S3)

無理に押し込む合う置き場に任せる

画像アップロードを例にした置き場の分け方の一例

たとえば画像アップロードなら、次のように分けます。

  • 画像の本体:S3。数が増え続ける塊で、キーで出し入れすれば足ります
  • 一覧用の情報(投稿者・日時・タイトルなど):DB。条件で絞ったり並べたりするため
  • 処理中の一時ファイル:EBS。サーバーのディスクとして使い、消えても作り直せる

こうしておくと、画像が増えても DB は小さいままで、検索は DB に任せられます。どれか1つに寄せるより、それぞれの得意に任せたほうが、あとからの変更にも強くなります。

CHECK 4ここまでの確認

画像アップロード機能で、画像の本体と一覧表示用の情報(投稿者・日時など)はどう置くのが基本?

答えと解説

答え: 2. 本体は S3、一覧用の情報は DB に分ける

形の違うデータは、それぞれに合う置き場に分けます。組み合わせの章を読み直してください。

具体例で選んでみる

最後に、4つの要件で、5つの軸を当てはめてみます。

要件 読み書きの形 置き場
画像アップロード 塊を出し入れ。一覧は条件で絞る 本体は S3、一覧用の情報は DB
社内ファイル共有 複数台から同じファイルを読み書き EFS
注文データ 条件で検索、集計、失えない RDS
ログイン後のセッション ID で引く、期限が来たら消える DynamoDB(有効期限の設定)

どれも最初から答えが決まっていたわけではなく、「誰が・どう読み書きするか」を書き出した結果として決まっています。

選んだ置き場のコスト・バックアップ・可用性は設計のどこで効くのか

置き場を選んだあとにも、決めることが3つ残ります。深掘りはそれぞれの記事に譲り、ここでは入口だけ押さえます。

  • コスト:S3 はアクセスの頻度でストレージクラスを選べます。使わないデータを高頻度向けのクラスに置き続けない、というのが基本です。
  • バックアップ:EBS はスナップショット、S3 はバージョニング、RDS は管理されたバックアップ、というように置き場ごとに手段が違います。AWS Backup を使うと、EBS・RDS・DynamoDB・EFS などをまとめて保護できます。
  • 可用性:EBS は1つの AZ の中、EFS や S3 は複数の AZ にまたがる、というように前提が違います。複数の AZ でどう守るかは、置き場の選択と一緒に考えます。RDS の冗長化の仕組みは rds-multiaz-replica-shikumi で扱います。

これらを「選んだあとで考える」と、置き場の選び直しになることがあります。選ぶ段階で、軸の1つとして入れておくのが設計です。

Cloudory 執筆者(AWS 認定 全冠)

置き場の選択は、一度に正解を当てる作業ではありません。読み書きの形を書き出し、5つの軸に当てはめ、足りなければ分ける。この順番を持っておけば、新しいサービスが出ても同じ問いで比べられます。次は RDS と DynamoDB を個別に読んで、それぞれの得意と制約を確かめてください。

READ ALSO — 学習中向け・段2 構成 Amazon RDS とは何か|マネージドの範囲と、EC2 に DB を置く場合との責任の違い

まとめ

  • 先に「どう読み書きするか」を書き出し、種類・アクセスパターン・共有・規模・止められない度合いの5つの軸で絞ります。
  • EBS はディスク、EFS は共有ファイル、S3 はオブジェクト、RDS は条件検索、DynamoDB はキー引きです。
  • 形の違うデータは1つに押し込まず、置き場を分けて組み合わせます。
  • コスト・バックアップ・可用性は、選んだあとではなく選ぶ軸に入れます。

参照ソース

SCOREこの記事の確認テスト

0/4問 正解

各章の「ここまでの確認」に答えると、ここに集まります。結果はこの端末のブラウザにだけ残り、サーバには送りません。

PRACTICEこの記事の論点を練習問題で確かめる

この記事が扱うサービスの問題だけを続けて解けます。練習問題は Google でログインした人が使えます(練習問題の一覧)。

HAND IT OVER人に渡すなら

一言で説明するなら

荷物の置き場選びと同じです。毎日使う工具は手元の棚、みんなで使う資料は共有の書庫、大きな箱は倉庫、台帳は検索できる帳簿に。中身の使い方で置き場を決めます。

前提を持たない人にそのまま渡せる記事です。「後輩に説明する」「顧客に理由を伝える」の材料として。

FAQよくある質問

全部 S3 に置けませんか?

置けるデータは多いですが、OS が直接使うディスクや、行単位の検索・更新には向きません。S3 はオブジェクトをキーで出し入れする置き場なので、データの読み書きの形で分けます。

RDS と DynamoDB はどちらが新しい・良いですか?

優劣ではありません。検索条件の自由度が要るか、アクセスパターンが固定のキー引きかで選びます。

選んだあとに変えられますか?

変えられないわけではありませんが、データの移行は手間がかかります。最初に読み書きの形を書き出しておく理由はここにあります。

次に何を読めばいいですか?

表のデータベースの片方ずつを深掘りする rds-toha と dynamodb-toha が次です。

SAME TRACK同じ領域の記事

ブロック・ファイル・オブジェクトの違い|EBS・EFS・S3 を「読み書きの単位」と「共有できるか」で理解する
ブロック・ファイル・オブジェクトの違い|EBS・EFS・S3 を「読み書きの単位」と「共有できるか」で理解する 段1 入口仕組み
S3 とは何か|バケットとオブジェクト・ストレージクラス・公開設定を「ディスクではない置き場」で理解する
S3 とは何か|バケットとオブジェクト・ストレージクラス・公開設定を「ディスクではない置き場」で理解する 段1 入口とは
Aurora DSQL のコストを DPU とアラームで見張る|2026年10月の更新
Aurora DSQL のコストを DPU とアラームで見張る|2026年10月の更新 NEWS段2 構成運用