用語辞典・クラウド・開発運用

PaaS

PaaSとは

PaaS(パース)は、アプリの実行環境や開発基盤をサービスとして利用し、OS管理の負担を減らす提供形態です。正式名称はPlatform as a Service(プラットフォーム・アズ・ア・サービス)です。

利用者はソースコードやビルド済み成果物、アプリケーション設定をプラットフォームへ配備し、事業者が用意した言語実行時、ミドルウェア、経路制御、処理管理、OS、サーバー等の上で動かします。利用者は通常、アプリケーションとデータを管理し、事業者はunderlying基盤とプラットフォームを管理します。

PaaSが減らすのはOS・実行時運用の一部です。安全なコード、依存先、秘密情報、データ、アカウント、アプリケーション設定、利用量と費用まで事業者任せになるわけではありません。

コードをビルド・配備し、事業者管理実行時へ載せてサービスと接続する利用者のアプリケーション・データと、事業者のプラットフォーム・OS・物理基盤を分ける
開発者がソースと設定・秘密情報参照・データを管理し、ビルドパッケージをプラットフォーム検査点へ配備して複数実行時インスタンスを起動し、マネージドデータベースとメッセージサービスへ接続し、ログ・指標を戻し、バージョン切り戻しと拡張・縮小を行い、下段で事業者が実行時、ミドルウェア、OS、サーバー、ネットワーク、保存領域を管理するピクトグラム図解
図1事業者が管理する範囲はサービスごとに異なります。実行時バージョン、保存領域、ポート、タイムアウト、バックグラウンドジョブ、ネットワーク接続の制約を配備前に確認します。

PaaSの処理を段階で読む

Sourceアプリケーションコードと依存先

利用者が実装、試験、セキュリティレビューを行い、再現可能なビルド入力を用意します。

Build実行成果物へ変換

buildpack、コンテナービルド、事業者builder等が実行時と依存先を組み立てます。

Deployバージョンをプラットフォームへ登録

設定、秘密情報参照、経路、インスタンス規模を関連付け、新バージョンを段階的に反映します。

Runtime処理を起動・監視

事業者が正常性、再起動、経路制御、OSパッチ等を扱い、アプリケーション処理を稼働させます。

Servicesデータベース等を束縛

認証情報とエンドポイントを注入し、マネージドデータベース、待ち行列、オブジェクトストレージ等へ接続します。

Operateログ・指標・規模・切り戻し

利用者はアプリケーション動作を監視し、バージョン、容量、コスト、インシデントを管理します。

利用者と事業者の責任分界

NISTのサービスモデルでは、利用者は事業者が支えるクラウド基盤を管理せず、配備したアプリケーションと一部ホスティング設定を管理します。事業者はネットワーク、サーバー、OS、保存領域、実行時等を運用します。

一方、コードの脆弱性、依存先更新、認証・認可、データ分類、秘密情報回転、アプリケーションログ、利用者アカウントは利用者側です。管理対象実行時が自動パッチされても、非互換バージョンへ対応する責任は残ります。

ビルドと実行時を分ける

ソースを直接アップロードして事業者がビルドする型、CIで作ったコンテナー画像や成果物を配備する型があります。ビルド時のネットワークアクセス、コンパイラー、依存先リポジトリ、キャッシュが本番環境実行時と同じとは限りません。

「手元で動くのにPaaSで失敗する」ときは、OS・CPUアーキテクチャー、実行時バージョン、環境変数、ファイルパスの大文字小文字、待受けポート、処理起動コマンド、読み取り専用ファイルシステムを比較します。

ローカルファイルシステムは永続とは限らない

PaaSインスタンスは再起動・再配置・スケールアウトで交換され、ローカル書き込み可能領域が消える設計が多くあります。アップロードファイルやセッションをローカルディスクだけへ置くと、別インスタンスへ要求が渡ったときに見えません。

永続データはマネージドデータベース、オブジェクトストレージ、永続ボリューム等へ分けます。ただし、すべてのPaaSが必ず一時ファイルシステムを使うとは限りません。個別サービスの保存仕様を確認します。

設定と秘密情報をコードへ埋め込まない

データベースエンドポイント、機能フラグ、環境別値は設定へ分離し、パスワード・API鍵・証明書秘密鍵は秘密情報管理者等から参照します。環境変数も処理ダンプやデバッグ画面へ出る可能性があります。

配備権限と秘密情報閲覧権限を分け、回転後に全インスタンスが新値を読むか確認します。ビルドログへ秘密情報を出した場合、成果物とキャッシュも調査します。

拡張・縮小はアプリケーション設計も必要

プラットフォームがインスタンスを増減できても、メモリー内セッション、ローカルファイル、単一プロセスロック、長時間接続、起動時の遅さが規模を妨げます。状態を外部へ出し、ヘルスチェックと段階的な停止を実装します。

auto拡張・縮小の指標、最小・最大、ウォームアップ、割り当て量は事業者設定です。データベース接続上限や下流APIレート制限が先に詰まることもあります。

実行時バージョンとプラットフォーム制約

事業者は対応する実行時バージョンと廃止日を決めます。古いバージョンを永久保持できず、自動更新で動作が変わる場合があります。リリースnoteとdeprecation通知を監視し、検証環境で更新試験を行います。

要求タイムアウト、バックグラウンドジョブ、開くポート、WebSocket、ネイティブライブラリー、outboundネットワーク、地域可用性等もサービスごとに違います。PaaS一般の説明を個別製品へそのまま当てはめません。

可搬性はソースコードだけでは決まらない

標準言語で書いても、事業者固有API、束縛、識別情報、ログ、待ち行列、配備マニフェスト、ネットワーク方針へ依存すると移行作業が増えます。一方、抽象化し過ぎると利用価値を失う場合があります。

重要な境界へアダプターを置き、データ書き出し、スキーマ移行、DNS切替、秘密情報再発行、切り戻しを定期的に試験します。

PaaSはコードを管理対象プラットフォームへ配備し、OS・実行時運用の一部を事業者へ移すサービスモデルです。アプリケーション・データ・秘密情報・依存先・設定に残る利用者責任と、実行時制約・バージョンライフサイクルを一緒に管理します。

PaaSの利用者・provider責任とcloud service model:NIST SP 800-145「The NIST Definition of Cloud Computing」

関連用語