単純リフトからシフトへ。AWSマネージドサービスを活用したクラウド運用最適化を考える

国内のサ―バー市場の減少に反し、クラウドインフラ市場は著しい成長を遂げています。コロナ禍の影響もあり、作業量や属人化の抑制、時間の短縮といった効果が期待できるクラウド利用は、ますます活発化するでしょう。
一方で、「クラウドに移行したにもかかわらず、思ったほど成果が出ない」とお悩みの企業もあるようです。単純にサーバーをリフトしただけでは、運用の手間やコストの低減は実現できないのです。今回のコラムでは、クラウド運用最適化を実現し、クラウド化の確実な効果を上げるためのAWSマネージドサービスの活用について考えてみます。

オンプレミスとAWSでの運用の違いは

運用保守では、サーバーの構成・変更管理、障害/復旧対策、リソース監視、パフォーマンス/ログ監視、ストレージなどのリソース拡張などさまざまな作業が行われます。オンプレミスで運用する場合は、サーバーやネットワークの監視のためにOSS製品を入れたり、サードパーティ製品を活用してバックアップ/リストアを行ったり、管理ツールを用いてWindow Serverの更新のためのパッチ適用を行ったりするのが一般的です。

一方、AWSで運用する場合ですが、AWSには、仮想サーバーサービスのAmazon EC2やデータベースのAmazon RDS、さらにはAI、分析、管理ツールまで、180種類を超える多様なサービスが提供されています。AWS運用に移行したいときは、現在オンプレミスで使用している機能をこれらのサービスで代替できないかを最初に検討しておくことをお勧めします。

一例として、AWSにデータベースを構築する場合を考えてみます。下図のように、仮想サーバー (Amazon EC2)に自分でMySQLやPostgeSQLといったDBエンジンをインストールするパターンもあれば、最初からDBエンジン (Amazon RDS)がインストールされている、マネージドデータベースを活用するパターンも考えられます。後者では、AWSの強みであるMySQLとPostgeSQLが使える独自のデータベース「Amazon Aurora」を選択肢として検討できる点がメリットと言えるでしょう。

上述したAmazon EC2や Amazon RDSは、AWSでコアになるサービスですが、パッチ適用、パスワード管理、バックアップ/リストアなどの機能を使用する場合は、別のサービスと組み合わせて運用する必要があります。例えば、可視化/サーバー監視・アラートを行う「Amazon CloudWatch」はコアサービスのデフォルトのエージェントですが、これを「Amazon SNS」や「AWS Lambda」といったサービスと組み合わせることで、単なるメール通知やプログラム実行といった機能にとどまらない、連携メリットによる活用の幅が広がります。

マネージドサービスの利点

マネージドサービスの利点についてもう少し考えてみます。下図で示したように、オンプレミス運用では、OSインストールなどは自分たちで実施・管理せねばなりませんでしたが、Amazon EC2を利用すれば、OSのインストールやサーバーメンテナンスなどはAWSが責任をもってやってくれます。マネージドサービスではさらにAWSの責任レイヤーが増え、ユーザが管理すべきレイヤーが少なくなります。スケーラビリティ、可用性、DBのバックアップは、多くのシステムで必要となる部分ですから、ここが自動化される点は、マネージドサービスの大きなメリットとなります。

運用コスト面ではどうでしょうか。一例を下図に示しました。ラフな概算の見積にはなりますが、この例ですと、Amazon EC2よりAmazon RDSのほうが高くなります。しかし、先ほど触れたスケーラビリティや可用性、DBのバックアップといった部分は自分たちで作り込む必要があります。ロードバランサーやクラスタリングソフト、バックアップソリューション、人的コストといった追加費用を考慮すると、マネージドサービスのほうがコストメリットがあるとも言えるでしょう。

マネージドサービスのメリットを享受するには

これまで述べたように、クラウド運用の可能性を広げるマネージドサービスですが、必ずしも利点ばかりではありません。監視項目が減る、監視対象が限定される、可視化できる範囲が限定される、運用方法が今までと変わる、といった懸念事項もありますから、従来の可視化やサーバー監視の既存製品を単純に置き換えればいいというわけではないのです。そのため、これまで使ってきた製品も用途に合わせて組み合わせることも考慮すべきでしょう。

クラウドインフラの特徴

最後に、クラウドインフラの特徴についてまとめておきます。AWSに限った話ではありませんが、クラウドインフラの場合、画面からでもプログラムからの設定・変更でも、すべてAPI経由で反映されます。

例えば、AWS CloudTrailは全てのAPI呼び出しが自動で記録されます。

AWS LambdaやAmazon SNS 等と組み合わせる事で、Mail/Slackへの通知、サーバーの再起動、変更された設定を元に戻すといったことも可能です。

また、AWS ConfigではAWSリソースの設定値などの変更履歴が記録され、時系列順に確認できます。

もう1つの大きな特徴として、インフラストラクチャの設定・構成をソースコードで管理、構築できます。一般的にはInfrastructure as Code(IaC)と言われていますが、AWSの場合は、テンプレートに書き込んだものを「AWS CloudFormation」に渡すことで、まったく同じ環境がAWS上に構築できます。クラウドインフラをソースコードで管理できるため、例えば、開発環境で作ったものを検証環境や本番環境で再び作らねばならない場合に、同一環境をすぐに作り直せ、別AWS環境に高速に横展開できます。インフラの変更履歴を差分管理することもできます。

このように、AWS上の操作・変更証跡を自動で残したり、運用オペレーションをプログラムから自動化できたりする点は、運用において大きなメリットとなります。

便利なサービスは活用しながら、不足分は補う

これまで述べたように、AWSは基本的に数種類のサービスを組み合わせて運用することがポイントとなります。バックアップや監視、リソース拡張など、よくある運用は同じサービス内で連携してくれます。マネージドサービスを活用し、AWSが提供する機能に合わせて運用するのが最もメリットを享受できます。足りない部分があれば、サードパーティ製品を組み合わせて機能を実現することも検討したいところです。