[クラウド分解辞典−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つの特徴がある。
多彩な言語をサポート
拡大画像表示
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すると、アップロードされたアプリケーションそれぞれを個別のバージョンとして履歴を管理する。アプリケーションに問題があれば、数クリックで過去のバージョンのアプリケーションに戻せる。
拡大画像表示
複数環境の構築ができる
Elastic Beanstalkでは、「Environment」という単位で、アプリケーションのための環境を複数持てる。アプリケーションのバージョンによって環境を分けることで、ブルーグリーンデプロイが可能だ。
具体例を図2に示す。ここでは、ブルーとグリーンの2つのEnvironmentがあり、ブルーではバージョン1のアプリケーションが動作している。ブルーとは別にグリーンのEnvironmentを用意し、バージョン2のアプリケーションをデプロイしておく。グリーンのEnvironmentで、バージョン2のアプリケーションをしっかりテストした上で、本番環境として稼働させる。
拡大画像表示
このように、環境の切り替えによってアプリケーションをバージョンアップすれば、既存の情報システムには一切変更が加わらない。新しいバージョンのアプリケーションに不具合があった場合にも、容易に切り戻しができる。これが複数環境を持てるメリットだ。
コンフィグファイルによる環境のカスタマイズが可能
情報システムでは、アプリケーション自体以外にも、サーバー上に整備しておかねばならないものがある。例えば、追加のソフトウェアや、ライブラリ、あるいは情報システムに必要なファイルやデータなどだ。Elastic Beanstalkでは、それらをコンフィグファイルとして定義できる。コンフィグファイルでは表2に挙げる操作を実行できる。
拡大画像表示
コンフィグファイルを使えば、より柔軟にアプリケーションをデプロイできる。ある程度以上の規模のアプリケーションであれば、コンフィグファイルの活用は必須だろう。
会員登録(無料)が必要です
- 1
- 2
- 3
- 次へ >
- 【最終回】ユーザーニーズに沿い、フルマネージド化とサーバーレス化が進む(2016/01/27)
- 【第9回】IoTやモバイル、アナリティクスにも対応—AWS IoT、AWS Mobile Hub、Amazon Elastic MapReduceなど(2015/12/22)
- 【第7回】インフラだけではない、オフィスのデスクトップ環境も用意─Amazon WorkSpaces、Amazon WorkDocs、Amazon WorkMail(2015/10/28)
- 【第6回】Webにつながらない事態を徹底回避−Amazon Route53、Amazon CloudFront(2015/09/24)
- 【第5回】用途に合わせてデータベースを選択−Amazon RDS、ElastiCache、DynamoDB、Redshift(2015/08/26)