こんにちは、技術1課の多田です。
先日、弊社のイベント『サバノミソニ』にてCode3兄弟の発表をしてきました。 デモもやってみたのですが、普段はデモを観る側が多く、やってみる側になって待ち時間を持たせるのってすごく大変だと痛感しました。 次は、うまくデモできるようまた別の機会にチャレンジしたいです。
さて、Code3兄弟と仲良くなるシリーズの2回目となります。 今回は、AWS CodeDeploy(以下、CodeDeploy)と仲良くなりたいと思います。 尚、内容は2回に分けてお届けしたいと思います。 本サービスの詳しい情報は、こちらをご覧下さい(英語のドキュメントになります)。
以下、目次です。
- CodeDeployとは
- CodeDeployでアプリケーションをデプロイ
- まとめ
CodeDeployとは
CodeDeployとは、EC2やオンプレのサーバーへアプリケーションのデプロイを自動化するサービスです。 特徴としては、次のものがあります。
- アプリケーションのデプロイに特化したサービス
- アプリケーションのデプロイファイル群は、CodeDeployの指示でS3かGithubからサーバーにダウンロードする
- 開発、本番環境関係なく同一の方法でデプロイできる
- Auto Scalingでのスケールアウト時に、自動で最新モジュールのデプロイが可能
- 利用できるリージョンは、ソウル以外の全てのリージョン
CodeDeployの動作を図示すると、下記の図のようになります。 利用する時は、アプリケーションのデプロイファイル群をS3かGithubにアップロードします。 その後、CodeDeployの指示でインスタンスが必要なファイルをダウンロードし、ファイルの配置やサービス再起動等の処理が行われます。
CodeDeployでアプリケーションをデプロイ
ここからは、早速アプリケーションをデプロイしてみます。
AWSマネジメントコンソールからCodeDeployを選択すると以下の画面が表示されます。 おぉ、かっこいいです。「Get Started」ボタンをクリック
デプロイの方法は、2つあります。 1つは、AWSが用意してくれている「Sample Deployment」です。今回はこちらを使用します。 もう1つは、既存のEC2に対して行う「Custom Deployment」です。 それでは、「Sample Deployment」を選択した状態で、「Nextボタン」をクリック。
次に、アプリケーションをデプロイするEC2の選択します。 OSとして選択できるのは、Amazon LinuxとWindowsのようですね。 インスタンスタイプは固定になっているので、Keypairは適宜適切なものを選択し、Tag名はデフォルトのままにします。 そして、「Launch Instances」ボタンをクリックします。
ゲージが満タンになるまで待ちます。 裏では、CloudFormationが動いています。
しばらく待つと、インスタンスの作成プロセスが完了します。 完了すると、「Next Step」をクリックすることができますので、クリックします。
アプリケーション名を決めるセクションになり、任意のアプリケーション名を入力します。 今回は、特に変更せず「Next Step」をクリックします。
デプロイするアプリケーションの情報について確認するセクションになります。 問題なければ、「Next Step」ボタンをクリックします。
Deployment Group名と、EC2のTagを設定するセクションになります。任意の名前を設定してください。 Deployment Groupは、アプリケーションをデプロイする個々のインスタンスの集合体です。Tag名は、Deployment Groupのインスタンス全台に適用されます。 今回はデフォルトのままにして、「Next Step」ボタンをクリックします。
IAM Roleを設定します。 新しいRoleを作成したい場合は、「Create a new service role」を選択すれば、自動で任意のRole名を入力してください。 「Next Step」をクリックしてください。
デプロイの設定を選択するセクションになり、2つの方法があります。 1つは、標準で用意されてる「Default Deployment Configurations」で、今回は、この設定を使用します。 もう1つは、適宜設定可能な「Create Custom Deployment Configurations」があります。
更に、3つのデプロイ方法があり、どれか選択するのですが、それぞれ以下の違いがあります。
- OneAtATime:1台ずつデプロイする
- HalfAtATime:デプロイ対象Groupの半分にまずは、デプロイを行う(※)
- AllAtOnece:全て1度にデプロイする
※デプロイ対象インスタンスが奇数の場合について 例えば、9台のインスタンスの場合、1度に最大4つのインスタンスにデプロイします。 5つ以上のインスタンスのデプロイが成功した場合は、成功扱いとなります。 5つ以上のインスタンスのデプロイが失敗した場合は、失敗扱いとなります。
今回は、「OneAtATime」を選択して、「Next Step」ボタンをクリックします。
確認画面になります。 問題なければ、ドキドキの「Deploy Now」 ボタンをクリックします。
3台ともStatusがSucceededになっているので、デプロイしたEC2にアクセスしてみます。
Sample Applicationがデプロイされたのは次の3台です。
いずれかのインスタンスに「http://Public DNS」でアクセスすると、下記の画面が表示されます。 デプロイ成功です!
まとめ
今回は、CodeDeployの概要紹介と、サンプルアプリケーションのデプロイを行ってみました。 AWS上でアプリケーションをデプロイするならば、非常に簡単かつそのプロセスは自動化されているため、ヒューマンエラーも防げます。 次回は、もう1つのCustom Deploymentを使って、よりCodeDeployと仲良くなりたいと思います。