🐱 うさねこ教室 Python と可観測性の教室

クラウドサービスの基礎

🐱 この章の目次

サービスモデルのスペクトラム

クラウドサービスは、インフラの管理責任をどこまでプロバイダに委譲するかで分類できます。 IaaS(Infrastructure as a Service) は仮想マシンやネットワークを提供し、OS 以上はユーザーが管理します。 PaaS(Platform as a Service) はランタイムまで管理され、FaaS(Function as a Service) は関数単位でコードを実行します。

責任共有モデル

責任共有モデル(shared responsibility model) は、クラウドプロバイダとユーザーの間でセキュリティ責任を分担する考え方です。 プロバイダは物理インフラ・ハイパーバイザの保護を担い、ユーザーはアプリケーション・データ・アクセス制御を担います。 『インフラ大全』第 12 章では、モデルの理解不足によるセキュリティ事故が頻繁に発生していると指摘されています。

モデルユーザー責任プロバイダ責任
IaaSOS、ミドルウェア、アプリ、データ物理、ネットワーク、ハイパーバイザ
PaaSアプリ、データOS、ミドルウェア、ランタイム
FaaS関数コード、データそれ以外すべて

インスタンスタイプとライトサイジング

クラウドインスタンスは CPU・メモリ・ストレージ・ネットワークの組み合わせで提供されます。 ライトサイジング(right-sizing) とは、実際のワークロード特性に合ったインスタンスタイプを選択し、過剰プロビジョニングを避けることです。 CPU バウンドなら Compute Optimized、メモリ上にデータを保持するなら Memory Optimized を選択します。

マルチテナンシのオーバーヘッド

マルチテナンシ(multi-tenancy) 環境では、同じ物理ホスト上に複数のテナントが同居します。 他テナントの負荷による性能変動を ノイジーネイバー問題(noisy neighbor) と呼びます。 『詳解システムパフォーマンス』第 11 章では、CPU スチールタイム(%steal)を監視することでこの問題を検出できると述べられています。

# CPU スチールタイムの確認
vmstat 1 5
# st 列が steal time(他テナントに奪われた CPU 時間の割合)

安定した性能が必要な場合は、Dedicated Hosts や Bare Metal インスタンスの利用を検討します。

参考文献

  • 『インフラ大全』第 12 章 — クラウドアーキテクチャの基礎
  • 『詳解システムパフォーマンス』第 11 章 — クラウド環境の計測