[クラウド分解辞典−Amazon Web Services編]

DevOpsによるアプリケーション開発への集中を可能に─AWS Elastic Beanstalk、OpsWorks、CodeDeploy、CloudFormation:第8回

2015年11月25日(水)佐々木 大輔(クラスメソッド)

前回は、AWS(Amazon Web Services)がエンタープライズ向けのITアプリケーションサービスとして提供している仮想デスクトップサービスの「Amazon WorkSpaces」と、その周辺サービス「Amazon WorkDocs」「Amazon WorkMail」を紹介した。今回は、DevOps(開発と運用の融合)に向けて、インフラストラクチャーの構築とアプリケーションのデプロイを自動化するためのサービスである「AWS Elastic Beanstalk」と「AWS OpsWorks」「AWS CodeDeploy」「AWS CloudFormation」を紹介する。

 Amazon Web Services(AWS)の基本サービスはIaaS(Infrastructure as a Service)である。情報システムが必要とするコンピュータ資源や、ネットワークコンポーネント、データストレージといったインフラストラクチャーを中心にサービスを提供する。これらのリソースを必要なものだけを組み合わせることで、情報システムを簡単に、安く、早く構築できる。

 だが、多くの情報システムでは、必要なインフラストラクチャーの構成要素をある程度パターン化できる。Webシステムであればサーバー(EC2)とデータベース(RDS)、可用性を高めるのであればロードバランサー(ELB)と自動的にスケールするサーバー(AutoScaling)などだ。よく使われるインフラストラクチャー構成をパターンとして構築できれば、アプリケーション開発者はアプリケーションにのみ注力でき、インフラストラクチャーの構築に手を煩わせる必要がなくなる。

 また、サーバー数が増減するようなスケーラビリティが高い情報システムでは、複数台のサーバーそれぞれにアプリケーションをデプロイするのは、大きな手間がかかる。オペレーションミスによりアプリケーションが正常にデプロイされず、情報システムが停止するリスクも考慮しなければならない。リリース周期が早い情報システムでは、アプリケーションデプロイの運用負荷がとても高い。

 こうした課題に対しAWSは、インフラストラクチャーの構築とアプリケーションのデプロイを自動化するためのサービスを提供する。それが「AWS Elastic Beanstalk」と「AWS OpsWorks」「AWS CodeDeploy」「AWS CloudFormation」だ。それぞれのサービスが異なる特徴を持っている。以下、詳細を説明しよう。

アプリのデプロイを自動化するAWS Elastic Beanstalk

 AWS Elastic Beanstalkは、アプリケーションのデプロイと、そのアプリケーションが動作するインフラストラクチャーの構築を自動化するサービスだ。ELBや、Auto Scaling構成のEC2、RDSといったWebアプリケーションにおける定番構成を簡単に構築できる。

 アプリケーション開発者は、Elastic Beanstalkにアプリケーションをアップロードするだけでよい。あとはElastic Beanstalkが自動的に必要なリソースを計算し、オートスケール可能な形で構築してくれる。アプリケーション状態のモニタリングも可能だ。AWSに対する特別な知識がなくとも、AWS上に情報システムを立ち上げられる。

 Elastic Beanstalkには4つの特徴がある。

多彩な言語をサポート

表1:Amazon Elastic Beanstalkがサポートする言語と開発スタック表1:Amazon Elastic Beanstalkがサポートする言語と開発スタック
拡大画像表示

 Elastic Beanstalkは、Webアプリケーションでよく使われるプログラム言語と、それぞれでよく使われるメジャーな開発スタックをサポートしている(表1)。Javaや、Java SE、.NET、PHP、Node.js、Python、Ruby、Goなどだ。多くのアプリケーション開発者がすぐにElastic Beanstalkを使い始められるだろう。

 Dockerコンテナに対応していることも大きな特徴だ。アプリケーション開発者がローカル環境で開発・テストしたアプリケーションを、Dockerイメージ化し、それをElastic Beanstalkにアップロードすれば、テスト済みアプリケーションをすぐに本番環境にデプロイできる。

アプリケーションのバージョン管理ができる

 Elastic Beanstalkにはアプリケーションのバージョン管理機能がある(図1)。アプリケーションをWARファイルまたZIPファイルでアップロードするか、あるいはGitでpushすると、アップロードされたアプリケーションそれぞれを個別のバージョンとして履歴を管理する。アプリケーションに問題があれば、数クリックで過去のバージョンのアプリケーションに戻せる。

図1:Elastic Beanstalkのバージョン管理機能図1:Elastic Beanstalkのバージョン管理機能
拡大画像表示

複数環境の構築ができる

 Elastic Beanstalkでは、「Environment」という単位で、アプリケーションのための環境を複数持てる。アプリケーションのバージョンによって環境を分けることで、ブルーグリーンデプロイが可能だ。

 具体例を図2に示す。ここでは、ブルーとグリーンの2つのEnvironmentがあり、ブルーではバージョン1のアプリケーションが動作している。ブルーとは別にグリーンのEnvironmentを用意し、バージョン2のアプリケーションをデプロイしておく。グリーンのEnvironmentで、バージョン2のアプリケーションをしっかりテストした上で、本番環境として稼働させる。

図2:「Environment」を使ったデプロイの例図2:「Environment」を使ったデプロイの例
拡大画像表示

 このように、環境の切り替えによってアプリケーションをバージョンアップすれば、既存の情報システムには一切変更が加わらない。新しいバージョンのアプリケーションに不具合があった場合にも、容易に切り戻しができる。これが複数環境を持てるメリットだ。

コンフィグファイルによる環境のカスタマイズが可能

 情報システムでは、アプリケーション自体以外にも、サーバー上に整備しておかねばならないものがある。例えば、追加のソフトウェアや、ライブラリ、あるいは情報システムに必要なファイルやデータなどだ。Elastic Beanstalkでは、それらをコンフィグファイルとして定義できる。コンフィグファイルでは表2に挙げる操作を実行できる。

表2:コンフィグファイルで実行可能な操作の一覧表2:コンフィグファイルで実行可能な操作の一覧
拡大画像表示

 コンフィグファイルを使えば、より柔軟にアプリケーションをデプロイできる。ある程度以上の規模のアプリケーションであれば、コンフィグファイルの活用は必須だろう。

この記事の続きをお読みいただくには、
会員登録(無料)が必要です
  • 1
  • 2
  • 3
バックナンバー
クラウド分解辞典−Amazon Web Services編一覧へ
関連キーワード

AWS / DevOps / クラスメソッド

関連記事

トピックス

[Sponsored]

DevOpsによるアプリケーション開発への集中を可能に─AWS Elastic Beanstalk、OpsWorks、CodeDeploy、CloudFormation:第8回前回は、AWS(Amazon Web Services)がエンタープライズ向けのITアプリケーションサービスとして提供している仮想デスクトップサービスの「Amazon WorkSpaces」と、その周辺サービス「Amazon WorkDocs」「Amazon WorkMail」を紹介した。今回は、DevOps(開発と運用の融合)に向けて、インフラストラクチャーの構築とアプリケーションのデプロイを自動化するためのサービスである「AWS Elastic Beanstalk」と「AWS OpsWorks」「AWS CodeDeploy」「AWS CloudFormation」を紹介する。

PAGE TOP