デプロイ王子のテクノロジ解説!

サーバなのに?サーバがない?サーバレスアーキテクチャの使いどころ - (page 2)

廣瀬一海(デプロイ王子)

2016-05-10 07:00

Multi-tier ArchitectureとServerlessは何が違う?

 Multi-tier Architectureは、分散処理にかなった仕組みなのですが、コストや実装の手軽さを考えると、あまりにも大がかりすぎる仕組みでもあります。例えば、GitHubのWebhookイベントを契機にジョブを処理したい、メールをアプリから送信するためにAPI経由でメールを送信させたいなどの目的で手軽に作るという感じではありません。

 そこで、Multi-tier Architectureとコンテナ仮想化を発展させ、非同期キュー以後の仕組みを複数のユーザで共有してより手軽に使えるように使えないか、という発想が生まれたのだと思います。

 Serverlessを提唱したIron.ioが提供するマイクロサービス向けのソフトウェアプラットフォーム「IronWorker」では、以下の図のようにDockerを使ったコンテナ仮想化を行うことによって、ユーザーのプログラムコードをSandboxとして分離、Runnerから指定したFunctionをコールする事で処理を行っています。


「IronWorker」のプロセス

 このコール処理部分が、サーバプログラム(待ち受けプログラム)の常駐実装なしに、トリガとしてコールすることから、この仕組みをServerless Architectureと呼ぶケースが多いようです。

 結果、Serverless Architectureは以下の特徴を持っており、Multi-tier Architectureより手軽に使えるようになっています。

  1. APIのエンドポイントは指定されたルールで発行される為、ウェブAPIの設計、実装が不要
  2. キューの格納、取得の実装はサービス側で管理される為、キューに関する設計、実装が不要
  3. コンテナ仮想化によってマルチテナント化されており、大抵の場合はFunction呼び出し単位での課金である為、VMよりはコストが安くなる可能性がある
  4. 常駐用のサーバコードを書く必要がなく、トリガでコールされる指定Functionの実装だけでよいので、コードが簡素になる

 反面、リソースは共有であるため、当然ながら制約も出てきます。

  1. 最大CPU実行時間の制限がある
  2. 最大実行メモリに制限がある
  3. 実装する場合はそれぞれのSDKとお作法がある
  4. 使えるローカルディスク(あくまでテンポラリ用)やテンポラリには制限がある
  5. コンテナが存在しない場合などには、初期化に時間がかかるため、初回呼び出しやコンテナのサスペンド時などには時間がかかる可能性がある

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ZDNET Japan クイックポール

注目している大規模言語モデル(LLM)を教えてください

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]