Web制作者が知っておきたい オープンソースアプリ&クラウドでのWeb構築の心得

第1回 EC-CUBE on Windows Azure

この記事を読むのに必要な時間:およそ 3.5 分

EC-CUBE運用編

EC-CUBE 構築編では,Windows Azureを使用することで,どのようなメリットがあるかを検証しました。

では,実際に運用した場合,どのようなメリットがあるか,とくに価格面を検証してみたいと思います。

価格の見積

Windows Azure料金計算プログラムを使用して,運用時の見積を算出しました。

今回の運用では,以下のような構成を使用しました。

  • XS (1GHz CPU,768MB RAM,20GB ストレージ) 2インスタンス
  • SQL Azure データベース 1GB
  • Windows Azure Blob ストレージ 1GB
  • ネットワーク(アジア太平洋地域) 150GB

PHPアプリケーションのフロントエンドは,CPUのスケールアップよりも,複数インスタンスで稼働させたほうが,一般的に効果が高いため,XSインスタンスの2台構成としました。

アプリケーション側でキャッシュを作成し,Blobストレージへのトランザクションを極力抑えるようにしたため,ごく僅かしか発生しませんので,見積から除外しました。

ネットワークのデータ送受信量に関しては以下のような見積をしました。

1ヵ月あたり50万PV×1ページあたり平均サイズ0.3Mバイト。

上記を合計すると,日本円で5,996.72円となりました。

レンタルサーバーと比較して

物理ホストのレンタルサーバーで,同様の環境を構築することを想定してみます。

それぞれ2台以上に冗長化されたWebサーバとDBサーバを構築すると,月間数万円以上のレンタル料金は免れないと思われます。

VPSを使用すれば,安価ですが,繁忙期には台数を増やし,閑散期には台数を減らすといった運用が難しく, Windows Azureに軍配が上がります。

また,データベースを冗長化するには,高度な技術を必要とするため,多くのコストが発生します。

他のクラウドサービスと比較して

IaaSスタイルのクラウドサービスで代表的なAmazon Web Servicesと比較してみます。

見積にはSimple Monthly Calculatorを使用しました。

データベースにはSQL Azureと競合にあたるAmazon RDS for MySQLを使用しました。

為替は1ドル=80円で換算しました。

  • m1.micro 2インスタンス
  • Amazon RDS for MySQL Small Multi-AZ 2インスタンス 1GB 500万回リクエスト
  • Amazon Elastic Block Store 1GB
  • ネットワーク 150GB

上記を合計すると53,448円にもなりました。

このうち,Amazon RDSのコストが4万9,689円を占めていますので,Amazon EC2を使用して,自前でMySQLを冗長化すれば1万円未満で実現可能と思われます。

しかし,その分高額な人件費が必要になるため,Windows Azureのほうが迅速かつ安価に運用可能です。

料金の比較

Windows AzureレンタルサーバーA社 Amazon Web Services
スペックXS(1GHz CPU,
768MB RAM,
20GB ストレージ)
2インスタンス
Xeon 2.0GHz 2CPU,
1.5GB RAM,
180GB HDD 4台
m1.micro 2インスタンス,
EBS 1GB
データベースSQL AzureMySQL HAAmazon RDS for MySQL
Small Multi-AZ 2インスタンス
転送量150GB無制限150GB
月額利用料5,996.72円2万4,000円5万3,448円

このように,Windows Azureを使用することで,優れたパフォーマンスを維持しつつ,運用コストを大幅に削減することが可能です。とくに,データベースやネットワークに係わるインフラ構築/運用コストは,限りなくゼロに近づき,従来と比較して90%以上の削減ができました。

また,オンプレミスのWindows Serverと比較した場合,Windows Updateに関する運用コストが発生しますが, Windows Azureでは,自動でWindows Updateも行われるため,常に最新の安定した環境を,安全に運用できます。

運用時の対応について

LAMP環境でサービス運用しているユーザの多くは,普段Windowsを使用していると思います。このようなユーザにとって,同様のインターフェースで安定した運用ができれば,多くのコストが削減でき,アプリケーション開発など,本来すべき作業に集中することができます。

私自身,普段はMac OS Xの環境でEmacsを使用して開発しており,日常作業の多くはコマンドラインで済ませてしまいます。

Windows Azure SDK for PHPは,コマンドラインでの操作もサポートされており,bashスクリプトも付属しているため,パッケージングなどの定型作業にも,従来のスキルを活用することができました。

Windowsユーザでしたら,既存の多くの資産を活用でき,LAMPユーザでも,従来のスキルを無駄にすることなく,Windows Azureを使用できます。運用ノウハウやドキュメントなども急速に整いつつありますので,LAMPユーザにも安心してお勧めできます。

日々のアプリケーション保守については,デプロイに時間がかかるため,計画的に行う必要があります。あらかじめ,ステージング環境にデプロイする日時を決めておき,逆算して保守内容を決定します。ステージング環境では,本番環境のデータベースの複製を使用して,検証を行います。

問題がなければ,サービス構成ファイル(ServiceConfigration.cscfg)に記載しているデータベースの接続情報を更新し,VIPスワップを使用して本番環境へ公開しています。

Windows Azureの良い点,悪い点

ほかにも,BIツールであるSQL Azure Reportingや, 大規模運用に対応するためのWindows Azure CDNなど,ECビジネスに活用できる機能がたくさんあります。Windows Azureを活用することで,多くの技術的な課題を解決することができ,新たな技術開発に取り組むことができます。

デプロイ作業は,一見時間がかかり,面倒に思えましたが,アプリケーションの品質向上に一役買ってくれました。SQL Azureによって,いつも悩みの種だったデータベースの運用コストが大幅に削減できました。

悪い点は,デプロイやツールのインストールなど,1つ1つの作業に時間がかかること,まだ実際の運用実績が乏しいため,多くの自己解決能力が必要というところでしょうか。

しかし,これらは急速に解消されつつあります。

これからもWindows Azureを活用し,次世代のECシステムを成功に導いていきたいと思っています。

著者プロフィール

大河内健太郎(おおこうちけんたろう)

有限会社Loop AZ

EC-CUBE公式エバンジェリスト/コミッター

https://www.facebook.com/nanasess

クレール本店のサイト制作・構築・運用を担当。