← グループ一覧へ戻る
技術解説

レガシーとクラウドネイティブ、設計思想の違いを読み解く

  • AWS
  • クラウド
  • アーキテクチャ
  • 設計思想

レガシーとクラウドネイティブを比較するとき、多くの解説は「サービスの機能」から入る。S3とは何か、Lambdaとは何か、という説明である。

しかし機能の説明だけでは、「なぜこの設計になっているのか」という腹落ちが起きない。本稿では、AWSが公式に示す情報をもとに、レガシーとクラウドネイティブの間にある設計思想の違いを、機能ではなく前提の違いとして読み解く。

ページ構成

  1. 暗黙の上限と、明示的な上限
  2. 全体像
  3. ファイル:階層で辿るか、キーで指すか
  4. 計算:常駐させるか、呼ばれた時だけ動かすか
  5. データ:行で持つか、列で持つか
  6. ログ:サーバーに溜めるか、外に流すか
  7. 結論:操作の発想から、設計の発想へ

1. 暗黙の上限と、明示的な上限

レガシーの世界には物理的な上限があった。ディスク容量、メモリ、CPU、ネットワーク帯域。これらは暗黙のガードレールとして機能していた。ディスクが一杯になれば止まる。メモリが足りなくなれば落ちる。上限を意識して設計しなくても、物理が勝手に止めてくれた。

クラウドにはその物理的な上限がない。ストレージは容量無制限。計算リソースは同時に数千並列で動く。止めるものは、自分で決めない限り存在しない。

だからクラウドでは、「どこで止めるか」を自分で設計しなければならない。決めなければ、リソースは際限なく使われ、コストが発散する。実行時間の制限、保持期間の設定、処理量の上限——これらは全て「ここまで」という境界を明示的に設計する行為である。

レガシーでは上限は暗黙の前提だった。クラウドでは、上限は設計対象になる。

2. 全体像

この前提の違いは、AWSのいくつかの代表的なサービスに共通して表れている。

ここで誤解しやすいのは、「小規模だからレガシーでいい」という考え方である。これは規模の問題ではない。そもそも、自分が扱うデータの量を自分でコントロールできるか、という問題である。

アクセスログ、CDNログ、APIの呼び出し履歴——これらは利用者の数とアクセス頻度によって勝手に増えていく。「今は少ないから大丈夫」は何の保証にもならない。後から前提を変える移行コストは、最初から前提を変えておくコストよりずっと高い。

3. ファイル:階層で辿るか、キーで指すか

レガシーのファイルストレージは、ディレクトリを階層的に辿って目的のファイルに到達する。オブジェクトストレージ(S3)には、その階層構造が実体として存在しない。見えている「フォルダ」は表示上の見せ方であり、実体は1本のキー文字列である。

実はこの方式は珍しいものではない。Google Drive、Dropbox、iCloud——日常的に使っているクラウドストレージは、すべてオブジェクトストレージである。「フォルダ」に見えているものは、裏側ではフラットなキーとメタデータで管理されている。ファイルを少し編集して保存しただけで、ファイル全体がアップロードし直されるのを見たことがあるはずだ。それが、オブジェクトストレージが「部分更新ができない」という性質そのものである。

4. 計算:常駐させるか、呼ばれた時だけ動かすか

EC2(サーバー)は、OSを常時起動させ、その中でプロセスを常駐させる思想である。使っていない時間も含めて、動いている時間に対して課金される。

Lambda(関数)は逆に、「必要な瞬間だけリソースを借りて、終わったら返す」という思想である。

この違いは状態の持ち方にも表れる。サーバーは状態をディスクに保持できるが、関数は状態を持てない。状態を外部(S3やDynamoDBなど)に出すことが、関数をいくつでも同時に動かすための前提条件になる。

5. データ:行で持つか、列で持つか

RDBMSは行単位でデータを格納し、インデックスを使って特定の1行に高速に到達する。データレイク(S3+Athena)は列単位でデータを格納し、パーティションで読む範囲を絞り込んで集計する。

この違いは得意・不得意を生む。RDBMSは特定の1行をピンポイントで取得・更新するのが得意だが、数億行になると全件集計が遅くなる。データレイクは大量データの集計が得意だが、特定の1行だけを探して書き換えるという操作には向いていない。

データレイクでは、データは基本的に追記(イミュータブル)が前提になる。誤りがあれば、修正済みのデータで丸ごと置き換えるか、修正レコードを追記して後段の集計で最新を採用する設計にする。

6. ログ:サーバーに溜めるか、外に流すか

ログファイルはサーバーのローカルディスクに溜まる。サーバーが死ねば、ログも一緒に消える。複数サーバーを横断して見たければ、自分で集約する仕組みが必要になる。

CloudWatch Logsのようなログストリームは、サーバーの生死に関係なくログが残り、横断検索も最初からできる。YouTubeのライブ配信を思い出すとわかりやすい。「ファイルをダウンロードして再生する」のではなく、「流れてくるものをリアルタイムに受け取る」。ログも同じ発想で、流れてくるデータを受け取り、過去に遡って検索する。

7. 結論:操作の発想から、設計の発想へ

AWSを学ぶときの第一歩は、個々のサービスの使い方を覚えることではない。

レガシーの仕組みは「1台のマシンの中で完結する」という前提で設計されている。クラウドネイティブの仕組みは「マシンは無数にあり、いつ消えてもいい」という前提で設計されている。

この前提の違いを理解しないまま個々のサービスを覚えても、「なぜこうなっているのか」は腹落ちしない。

参考リンク

トピックURL
オブジェクトストレージとはhttps://aws.amazon.com/what-is/object-storage/
Lambdaの仕組みhttps://docs.aws.amazon.com/lambda/latest/dg/concepts-basics.html
Athenaとはhttps://docs.aws.amazon.com/athena/latest/ug/what-is.html
CloudWatch Logsの概念https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogsConcepts.html