AWSとAzure、まずはプロフィールを比較する:PHP開発で使える2大クラウドを徹底検証(1)(1/3 ページ)
クラウド上でのJavaやRuby、.NETを利用した開発についての記事は増えてきていますが、クラウド上でのPHP利用に関する記事は、現時点では意外と少ないです。本連載では、PHP開発で利用することを前提に、Amazon Web Services(以下、AWS)とWindows Azureの2大クラウドを比較します。PHPのエンジニア以外でも参考になる内容になっていると思いますので、ぜひお読みください
近年クラウドの普及が進んでいますが、老舗のAWS、Google App Engineを他のクラウドプロバイダが追いかける構図が明確になってきています。
その一方で、Webアプリケーションの開発の主力言語の一つとしてPHPが以前から使われています。PHPはデザイナからWebデベロッパに転身した開発者から人気を博しており、PHP技術者認定試験ができるなど、注目を集めています。筆者はJava、Ruby、Python、C#と、ひととおりWebアプリケーションの開発を経験していますが、PHPではほとんど特別なサーバの設定なしで、エディタ一つで簡単にWebアプリケーションを作れるのは、スタートアップが簡単で初心者にとって魅力的だと感じています。また、スタートアップが簡単という意味でクラウドサービスとの相性も良いです。
本連載では、PHPの開発者が利用できるクラウドサービスとして、今利用するなら有力な採用候補となるAWSとAzureについて比較します。
連載の最初となる第1回では、最初に各クラウドの概要を見て行きましょう。まずはAWSから見ていきます。
Amazon Web Services(AWS)とは
AWSはオンラインブックストアの老舗Amazonが提供するクラウドサービスです。すでに利用されている方も多いと思います。仮想マシンリソースを提供するAmazon EC2サービスを中核として、ストレージ、ネットワークなどのインフラをIaaSサービスとして提供しています。
IaaSサービス以外にもAmazon RDSやSimple DB/DynamoDBといったデータベースや、Elastic Beanstalkとしてシステムの負荷に応じて自動的にスケールアウトする機能、Hadoopを利用したMapReduce処理を行うElastic MapReduceなどのミドルウェアも提供しています。ちょっと前まではAmazonのクラウドといえばIaaSとして捉えられていましたが、現在ではPaaS(Platform As A Service)の機能も提供しています。
AWSは非常に多くのサービスを提供していますが、本連載では、PHP開発で利用できる機能をピックアップして紹介します。
IaaSの基本機能、Amazon EC2/S3/EBS/Route53
EC2はインスタンスと呼ばれる仮想マシンを提供するサービスです。仮想マシンのスペックは、あらかじめAWSが定義したものの中から選ぶことができます。仮想マシンイメージにはElastic IPと呼ばれるクラウド外部のネットワークからアクセスできるIPアドレスを割り当てたり、ファイアウォールを定義したセキュリティグループでTCP/UDPのポートのフィルタリングなどのセキュリティ設定を行うことができます。OSは、RedHat、SUSE、Ubuntu、CentOSなどのLinux、Windowsを利用することができます。また、AWSによって提供される、このサービスに最適化された仮想マシンであるAmazon Linux AMIを利用することもできます。
S3はストレージサービスで、一般的なファイルサービスとして利用できるほか、EC2で利用する「AMI」と呼ばれる仮想マシンイメージもここに登録します。次に紹介するディスクサービスであるEBSのスナップショットも個々に格納できますし、Elastic MapReduceで処理を実行する場合も、S3を入出力に利用します。
EBSは、仮想マシンにアタッチして利用するストレージサービスです。S3に登録されたAMIから起動したインスタンスを停止した場合でも、EBSにデータを書きこんでおけばディスクの内容が消えることはありません。また、EBSをルートディスクとして起動できるインスタンスを利用すれば、OS領域全体を永続化することができます。ただし、ローカルディスクに比べて、EBSディスクは若干パフォーマンスが落ちます。
EC2でElastic IPを利用すると、クラウド外からインスタンスへのアクセスはIPアドレスで行うことになります。サービスを提供する上で、IPアドレスでサービスにアクセスさせるのでは不便です。以前はドメイン登録の代行業者でDNS登録を行う必要がありましたが、最近は「Route 53」としてAWSがDNSサービスも提供しています。
AWSの仮想マシンイメージ
AWSによってオフィシャルにサポートされている仮想イメージとしては、Red Hat Enterprise Linux(RHEL)、SUSE Enterprise Linux、Windows Server 2008があります。また、RHELをベースとして、AWSで独自にカスタマイズを加えたAmazon Linux AMIも利用することができます。 その他、コミュニティによって提供されているUbuntu、CentOS、FedoraなどのOSのほか、アプリケーションインストール済みの仮想マシンイメージを利用することができます。いろいろなAMIを探してみてください
セキュアなネットワークを構築するAmazon VPC
Amazonのクラウド上にある仮想マシンと、オフィスなどのネットワークをVPNで接続するサービスです。クラウド上で自社システムを動作させる場合、セキュリティの確保が課題となりますがAmazon VPCを利用すればクラウドとオフィスを簡(単にセキュアなネットワークで接続することができます。また、複数拠点間で利用することもできるので、拠点が複数あるような企業のオフィス環境やオフショアなどによる開発環境でも簡単に利用することができます。詳細は、「AWS、Amazon VPCを大幅に拡張」などをごらんください。
オートスケーリングやPaaSの機能を提供する Elastic Load Balancing/Auto Scaling/Elastic Beanstalk
Elastic Load Balancingは、複数のインスタンス間で負荷分散を行うためのロードバランサです。Auto Scalingはインスタンスを監視し、CPUの負荷やアクセス数などが特定の条件になったら自動的にインスタンスを増やしてスケールアウトさせることができます。Elastic Beanstalkは、アプリケーションのデプロイ、モニタリングからElastic Load BalancingやAuto-Scalingと連携したスケールアウトまで、総合的なアプリケーションの管理を行います。Elastic Beanstalkについての詳細は、「AWSの自由自在なPaas「Elastic Beanstalk」とは」などをごらんください。なお、Elastic Beanstalkは現在のところ、Java言語にのみ対応しています。
データベースサービス Amazon SimpleDB/DynamoDB/Amazon RDS
クラウドの台頭に伴って、RDBMSに代わりキーとバリュー(値)のシンプルなデータ構造でデータを管理するKVS(Key-Value Store)データベースが注目されています。AWSでもSimple DBという形でKVSをサービスとして提供しています。KVSはデータ構造をシンプルにする代わりに大量データを分散させて持つというメリットがありますが、従来のRDBMSで実現されていたACIDによる整合性やSQLによるクエリは利用できせん。また、つい先日(2012/1/19)、DynamoDBという形で、SSDを採用してSimpleDBよりスケール性能が向上したデータベースもリリースされています。まだパブリックベータですが、フルSSDのストレージという新しい試みに今後に期待が高まります。
エンタープライズ用途では、整合性やSQLによるクエリのニーズが高いことから、Amazon RDSとして、RDBMSのサービスも提供しています。Amazon RDSでは、MySQLとOracleを利用することができます。
なお、RDBMSについては、EC2上でMySQLなどのデータベースサーバを起動したインスタンスを立ち上げて運用することも可能ですが、RDBではバックアップ・リストアやレプリケーション機能を持ち、自前でやるより簡単にRDBMSを運用できるようになっています。
インスタンスをモニタリングするAmazon CloudWatch
CloudWatchは、インスタンスやアプリケーションのモニタリングツールです。Amazon EC2インスタンスやEBSボリューム、Elastic Load Balancers、Amazon RDSのDBのCPU使用率、待ち時間、リクエスト数などのメトリックスでモニタリングすることができます。モニタリング結果をグラフ化したり、アラート設定を行うことができます。
大規模データの分散処理 Elastic MapReduce
大量データを分散処理するためのMapReduceを利用した処理が行えるサービスです。Elastic MapReduceにより大量のデータを扱うデータウェアハウス構築、ログ解析や各種分析などを効率よく行えます。Elastic MapReduceは、内部ではHadoopフレームワークを利用していますが、Elastic MapReduceを利用すれば、Hadoopのセットアップやクラスタを構築することなく手軽にMapReduce処理を行うことができます。
上記の全てのサービスは、Amazon Management Console上からWebブラウザで管理することができます。
Amazon Web Servicesの歴史
Amazonでは様々なサービスが提供されていますが、全てのサービスが最初から提供されているわけではありません。主要なサービスの提供の歴史を見ていきましょう。
サービス名 | パブリックベータリリース日 | 正式版リリース日 |
---|---|---|
Amazon EC2/S3 | 2006/.8/25 | 2008/10/23 |
Simple DB | 2007/12/14 | - |
Amazon EBS | 2008/8/20 | 2008/10/23 |
Elastic MapReduce | 2009/4/2 | 2010/12/1 |
CloudWatch | 2009/5/18 | 2010/2/21 |
Auto Scaling | 2006/5/18 | 2010/2/22 |
Elastic Load Balancing | 2009/5/18 | 2010/3/26 |
Amazon VPC | 2009/8/26 | 2011/8/3 |
Amazon RDS | 2009/10/27 | - |
Route 53 | 2010/12/5 | 2011/5/24 |
Elastic Beanstalk | 2011/1/19 | - |
Elastic Cache | 2011/8/22 | - |
DynamoDB | 2012/1/19 | - |
表1 AWS主要サービスのベータ提供時期、正式提供時期 |
SimpleDB、Amazon RDS、Amazon SNS、Amazon SES、Elastic Cache、DynamoDB、Beanstalkなどはまだ正式版ではなく、試験的に運用するパブリックベータという位置付けになっています。一般的にAWSでは、パブリックベータ版を発表してから正式版までおよそ2年掛けており、じっくりと評価・改善してからリリースしていることが伺えます。
Copyright © ITmedia, Inc. All Rights Reserved.