オートスケーリングについて
AWS EC2インスタンスの運用時には単体EC2インスタンスの場合でも、
将来的な拡張性に備えてAutoScalingグループ内での運用が望ましいようです。
参考
すべてのEC2インスタンスは、Auto Scaling グループ内で実行されるべきです。たとえEC2インスタンスが1つだったとしても同じです。Auto Scaling グループは、EC2インスタンスをモニタリングし、仮想マシンの論理グループとして機能するもので、しかも無償なのです。
メリット
- 可用性の向上
- 負荷分散
- 運用コストの最適化
ステートレスサーバー化
オートスケーリングはAMI(Amazon Machine Image)を利用して
インスタンスをスケーリングする為、
サーバー内に変更点があった場合、
スケーリング時にAMIの時点のサーバーの状態へと先祖返りしてしまいます。
これを回避する為には、
サーバーのステートレス化(サーバーが状態を持たないようにする)を実現する為の
アーキテクチャ設計の工夫が色々と必要になってきます。
参考
不安定になったEC2はいつでも捨てられる(Terminateできる)よう内部にデータは保持しないことが重要となります。データを保持していると不安定になった際にインスタンスがTerminateされて、なくなってしまいます。ここでいうデータには次のものが考えられます。
・アプリケーションで生成された永続的に保管すべきデータ
・アップロードされた画像ファイルなど
・HTTPなどのセッションデータ
・ApacheやTomcatなどのログファイル
・/var/log/messages などOSのログファイル
静的アセット
CloudFront(CDN)、S3を用いてサーバー外へ配置
セッション、キャッシュデータ
ElastiCache(Redis)を利用したインメモリの外部化
サーバー内ログファイル
CloudTrailを利用したログファイルの監視
マウント先のボリューム
ElasticFileSystem(NFS)を利用したボリュームのネットワーク共有
ステートレスなオートスケーリング利用のアーキテクチャ設計一案(個人的見解に基づく)
もちろんここであげたものはあくまで一例にすぎず
ケースに応じたインフラ設計が必要になってくることかと思います。
参考