PaaSとは
PaaS(パース)は、アプリの実行環境や開発基盤をサービスとして利用し、OS管理の負担を減らす提供形態です。正式名称はPlatform as a Service(プラットフォーム・アズ・ア・サービス)です。
利用者はソースコードやビルド済み成果物、アプリケーション設定をプラットフォームへ配備し、事業者が用意した言語実行時、ミドルウェア、経路制御、処理管理、OS、サーバー等の上で動かします。利用者は通常、アプリケーションとデータを管理し、事業者はunderlying基盤とプラットフォームを管理します。
PaaSが減らすのはOS・実行時運用の一部です。安全なコード、依存先、秘密情報、データ、アカウント、アプリケーション設定、利用量と費用まで事業者任せになるわけではありません。

PaaSの処理を段階で読む
利用者が実装、試験、セキュリティレビューを行い、再現可能なビルド入力を用意します。
buildpack、コンテナービルド、事業者builder等が実行時と依存先を組み立てます。
設定、秘密情報参照、経路、インスタンス規模を関連付け、新バージョンを段階的に反映します。
事業者が正常性、再起動、経路制御、OSパッチ等を扱い、アプリケーション処理を稼働させます。
認証情報とエンドポイントを注入し、マネージドデータベース、待ち行列、オブジェクトストレージ等へ接続します。
利用者はアプリケーション動作を監視し、バージョン、容量、コスト、インシデントを管理します。
利用者と事業者の責任分界
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」