【ぱーす】

PaaS とは?

💡 「調理器具つき」で借りられるキッチン
📌 このページのポイント
IaaS / PaaS / SaaS — 責任範囲の比較 オンプレミス IaaS PaaS SaaS アプリ データ ランタイム ミドルウェア OS 仮想化 サーバー アプリ データ ランタイム ミドルウェア OS 仮想化 サーバー アプリ データ ランタイム ミドルウェア OS 仮想化 サーバー アプリ データ ランタイム ミドルウェア OS 仮想化 サーバー アプリ データ ランタイム ミドルウェア OS 仮想化 サーバー 自社管理 クラウド事業者が管理
IaaS / PaaS / SaaS の責任範囲の比較イメージ
ひよこ ひよこ

PaaSってIaaSと何が違うの?

ペンギン先生 ペンギン先生

IaaSは「サーバーハードウェアだけ貸す」感じ。OSのインストールからミドルウェアのセットアップまで全部自分でやる必要がある。PaaSは「OSもランタイムも入った状態で貸す」から、アプリのコードを置くだけで動くんだよ。

ひよこ ひよこ

PaaSのデメリットって何?

ペンギン先生 ペンギン先生

カスタマイズの自由度が下がることかな。「このOSのバージョンを使いたい」とか「この特殊なライブラリを入れたい」みたいなことが難しくなることがある。それとPaaSのサービスに依存してしまうと、乗り換えが大変になる「ベンダーロックイン」の問題も起きやすいよ。

ひよこ ひよこ

PaaSとコンテナってどう使い分けるの?

ペンギン先生 ペンギン先生

最近のPaaSはコンテナを裏側で使っていることも多いよ。Herokuにコードをpushすると内部でDockerコンテナが作られて動く仕組みなんだ。「コンテナを自分で管理したくない」ならPaaS、「コンテナを自分でコントロールしたい」ならKubernetesなどを選ぶ、という判断軸がある。

ひよこ ひよこ

PaaSのオートスケールって、スケールするときに既存のリクエストは途切れないの?

ペンギン先生 ペンギン先生

これはPaaSの実装によって全然違うんだよね。Herokuなんかはダイノ(コンテナ)を追加するときに「ローリングデプロイ」的な形で新しいインスタンスを立ち上げてからトラフィックを移すから、基本的にはリクエストは途切れない。でも問題は「スケールダウン時」で、処理中のリクエストを持つインスタンスを切っていいかどうかの判断が必要になる。SIGTERMシグナルを受け取ったらリクエストを受け付けるのをやめてgraceful shutdownする実装をしていないと、スケールダウン時にリクエストが切れることがあるんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「PaaS」って出てきたら「アプリのコードだけ用意すれば動かせる実行環境サービスのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「PaaS(Platform as a Service)」 = プラットフォームをサービスとして提供する
💬 IaaS(インフラ)→PaaS(プラットフォーム)→SaaS(ソフトウェア)と管理範囲が狭くなる順番で覚えよう
← 用語集にもどる