はじめに
前回までに、EC2インスタンスの起動からパワーアップさせることに成功しました。
過去の投稿については以下から確認できます。
AWS機能を網羅してみよう2.1 EC2編「起動」
AWS機能を網羅してみよう2.2 EC2編「接続&アプリ構築」
AWS機能を網羅してみよう2.3 EC2編「バックアップ&パワーアップ」
AWS機能を網羅してみよう2.4 EC2編「更にパワーアップ」
直近ではI/Oの性能を上げたり、セキュリティの強化を行いました。
今回は、前回までの一連のEC2インスタンスに対するカスタマイズやパワーアップをより効率的に行い、管理する方法をご紹介します。
AWSサービスの効率的な管理
まずは利用頻度が高いであろうサービス、Amazon Elastic Beanstalk、OpsWorks、CloudFormationの3つについて、それぞれの概要と違いを見ていきたいと思います。(メニューの「コンピューティング」、「管理ツール」カテゴリ内にそれぞれあります)
AWS Elastic Beanstalk
一言で言えば、デプロイ管理ツールです。
Elastic Beanstalkを利用すると複数の環境で、負荷分散、監視、容量設定、ミドルウェアのインストール、アプリケーションのデプロイを自動的に実施することが可能になります。
Java、PHP、.NET、Node.js、Python、Ruby、Dockerなど、アプリケーションプラットフォームの管理が行えるようになるということです。
具体的に言うと、AWS機能を網羅してみよう2.2で実践したように、Nginx、Ruby on RailsをインストールしたEC2に、AWSの機能であるAutoScalingやELBをかましてセキュリティグループを設定し、Gitからアプリケーションを配備するのが極少ない設定で構築可能になります。
例えば、専任のインフラ担当者がおらず、開発者に短時間でのインフラ調達が求められるようなケース下で重宝します。
AWS OpsWorks
一言で言えば、構成管理ツールです。
OpsWorksもElastic Beanstalkと同じような機能ですが、より柔軟性があり、単純な構成でも複雑な構成でも様々なアーキテクチャに対応します。
Elastic Beanstalkと大きく異なるのは、EC2内部のアプリケーションプラットフォームの調達がChefレシピと呼ばれるレシピを元に実行される点です。
ユーザー独自のChefのクックブックを使用できるため、EC2をほぼ自由に設定可能となります。
平たく言えば、Elastic Beanstalkをより詳細設定までできるようなイメージですね。
AWS CloudFormation
前述のサービスは主にアプリケーションサーバ周辺を管理するイメージでした。
一方、CloudFormationはほとんどすべてのAWSリソースの構築や設定を行える、最も自由度が高いサービスです。
CloudFormationでは、JSONフォーマットを使用して構成を記述します。CloudFormerを使用すると現在の構成をJSONフォーマットに変換でき、構成のコピーや雛形の作成が簡単に行えます。
Elastic Beanstalkを試してみる
Elastic Beanstalkを起動
ウェブアプリケーションの作成
アプリ名は”testApp”、プラットフォームは”Ruby”、サンプルアプリケーションで試してみましょう。
「アプリケーションの作成」を押下します。
アプリケーションのデプロイ
前の手順で作成を押しただけで、「Sample-envを作成しています」というステータスが表示され、アプリケーションが勝手に作成。
デプロイ作業が始まります。この操作は数分かかるようですので、しばし待ちましょう。
結果を確認
ヘルスのステータスがOKになっていますので、問題なくデプロイが完了したということです。
最近のイベントでは直近で実行した内容が確認できます。
右上のURLからは、実際にデプロイされたサイトを確認することができます。
アプリの作成からデプロイまで一瞬でできてしまいました!
細かなデプロイルールは、左メニューの「設定」から変更可能ですので色々試してみましょう。
まとめ
サービスの比較
■ 難易度(右が難しい)
Elastic Beanstalk < OpsWorks < CloudFormation
■ 自由度(右が自由)
Elastic Beanstalk < OpsWorks < CloudFormation
どこまで詳細に設定する必要があるのかを勘案して利用するサービスを選択しましょう。
また、いずれも利用料は無料となっています。
※各管理サービスで立ち上げたEC2インスタンスは当然料金がかかります