クラウド - スケーリング
概要
スケーリングとは、システムの処理能力を必要に応じて拡張または縮小することである。
クラウドスケーリングの本質は、システムのリソースを需要に応じて柔軟に調整できる能力にある。
主に、垂直スケーリングと水平スケーリングという2つの基本的なアプローチがある。
- 垂直スケーリング (スケールアップ / スケールダウン)
- 既存のサーバやインスタンスのスペックを向上させる方法である。
- 例えば、CPUコアの増設やメモリの増強等が該当する。
- 簡便な実装方法であるが、ハードウェアの物理的な制限があるため、無限にスケールすることはできない。
- 水平スケーリング (スケールアウト / スケールイン)
- 同じ機能を持つサーバやインスタンスの数を増減させるアプローチである。
- 負荷分散装置を使用して、複数のサーバ間でトラフィックを分散させる。
- 理論的には無限にスケールすることが可能であり、高可用性も確保しやすいというメリットがある。
自動スケーリングは現代のクラウドインフラストラクチャの重要な特徴である。
CPU使用率、メモリ使用量、ネットワークトラフィック等の指標に基づいて、システムが自動的にリソースを増減させる。
これにより、人手による監視や操作を最小限に抑えながら、効率的なリソース利用が可能となる。
コストの最適化では、スケーリングポリシーの適切な設定が重要となる。
以下に示す方法を組み合わせることにより、コストとパフォーマンスのバランスを取ることができる。
- 需要予測に基づいて、事前にリソースを確保するプロアクティブなアプローチ
- 実際の負荷に応じて、リアクティブにスケールするアプローチ
また、マイクロサービスアーキテクチャの採用により、サービスごとに異なるスケーリング戦略を適用することが可能である。
これにより、システム全体の柔軟性と効率性が向上する。
セキュリティにおいては、スケーリング時にもセキュリティポリシーや構成が適切に維持されることを確保する必要がある。
新しいインスタンスの作成時には、セキュリティグループの設定やアクセス制御が自動的に適用されるよう構成することが重要である。
特に、IoTシステムを使用する場合では、以下に示すような場面でスケーリング機能が重要となる。
- デバイス数の増加した場合
- 新しいセンサの追加する。
- 新しい設備の導入する。
- 新拠点の追加する。
- データ量が変動する場合
- 収集頻度の変更
- センサの種類追加
- 詳細なデータ収集の開始
- 処理要件の変化する場合
- リアルタイム分析の追加
- データ保存期間の延長
- 新機能の追加
クラウドのスケーリングは、技術的な側面だけでなく、運用面やビジネス面も考慮した総合的なアプローチが必要となる。
適切なスケーリング戦略の選択と実装により、効率的でコスト効果の高いシステム運用が可能となる。
垂直スケーリング (スケールアップ / スケールダウン)
垂直スケーリングとは
垂直スケーリングとは、単一のサーバのスペックを上げ下げすることである。
具体例
# スケールアップする場合 【初期状態】 CPU: 2コア メモリ: 4[GB] ストレージ: 100[GB] 【増強後】 CPU: 4コア メモリ: 8[GB] ストレージ: 200[GB]
水平スケーリング (スケールアウト / スケールイン)
水平スケーリングとは、サーバの数を増減させることである。
具体例
# スケールアウトする場合 【初期状態】 Webサーバー × 2台 毎秒1000リクエストを処理 【増強後】 Webサーバー × 4台 毎秒2000リクエストを処理
具体的なスケーリングの例 (IoTシステムの場合)
小規模な工場での利用例
# 工場が増設された場合 【初期状態】 センサ数 : 100個 データ収集間隔 : 1分毎 1日のデータ量 : 約144,000レコード (100センサ × 60分 × 24時間) サーバ構成 MQTTブローカー : 1台 データベース : 1台
【拡大後】 センサ数 : 1000個 (10倍) データ収集間隔 : 1分毎 (変更なし) 1日のデータ量 : 約1,440,000レコード (10倍) サーバ構成 MQTTブローカー : 3台 (負荷分散) データベース : 2台 (マスター / スレーブ) ロードバランサー : 1台 (追加)
自動スケーリングの動作例
【平常時】 アクティブなサーバ : 2台 CPU使用率 : 30% メモリ使用率 : 40% 【急激なアクセス増加時】 条件 : CPU使用率が80%を超える 動作 : 新しいサーバを自動追加
【アクセス減少時】
条件 : CPU使用率が20%未満が30分継続 動作 : 余分なサーバを自動削除
スケーリングが重要となる具体的なケース
時間帯による負荷変動
【朝9時の工場稼働時】 デバイス接続数 : 1000 データ転送量 : 100MB/分 サーバ4台で対応 【夜間の低稼働時】 デバイス接続数 : 100 (1/10になる場合) データ転送量 : 10MB/分 (1/10になる場合) これにより、サーバ1台に自動縮小する。
イベント時の急激な負荷増加
【通常時】 センサからのデータ受信 : 1000件/分 サーバ数 : 2台 【設備点検時 (全センサの一斉データ送信)】 センサからのデータ受信 : 10000件/分 サーバ数を自動で8台に増加させる
クラウドサービスでのスケーリングのメリット
コスト最適化
【従来の固定インフラ】 ピーク時に合わせて常時10台のサーバを用意 月間コスト : $1000 【クラウドの自動スケーリング】 平常時:2台($200/月) ピーク時のみ10台 (一時的なコスト増) 月間平均コスト : $400
可用性の向上
【障害発生時】 # 異常を検知 (サーバA停止) # 自動で新しいサーバBを起動 # ロードバランサが自動で振り分け先を変更 これにより、サービスの停止を回避する。