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

第1回 EC-CUBE on Windows Azure

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

EC-CUBE構築編

はじめに

2011年は,多くのECシステムがクラウドベースに刷新された年でした。EC-CUBEにおいても「EC-CUBE クラウドサーバ」がリリースされたり,⁠ニフティクラウド」がEC-CUBEに標準対応するなど,クラウド化の波が押し寄せています。

しかし,これらの多くはIaaSをベースに構築されたものであり,Webサーバやデータベースを冗長させたり,その上でEC-CUBEを動作させるためには,それなりの専門知識が必要です。

EC業界にはEC-CUBEという手軽に利用可能な,素晴しいオープンソースパッケージがあり,まだβ版ではありますがWindows Azure対応のパッケージも公開されています。これをベースにカスタマイズすれば,専門知識のないユーザにも簡単に利用できるのではないか?と思いました。

そこで,EC-CUBEのコアコミッタであり,EC-CUBE公式エヴァンジェリストの私が自社で運用しているサイトエクセスをWindows Azureに対応させてみました。

ECにおいて,Windows Azureを使用するメリットは,運用コストの削減や,抜群のスケーラビリティ,SQL Azure Reportingを使用したBIツールとの連動などが挙げられます。

とくに,タイムセールなど,瞬間的なアクセス増に対応するため,Windows Azureでは簡単にインスタンス数の増減ができ,大変魅力です。

また,基幹システムをWindows Serverベースで構築している企業も多く,既存資産も活用できます。

デプロイ構成の変更のみでインスタンス数の増減が可能

デプロイ構成の変更のみでインスタンス数の増減が可能

デメリットはといえば,まだ運用実績が少ないこと,SLA の稼働率がやや低い(99.95%)ことでしょうか。

Windows Azure自体,2010年2月に商用サービスが始まったばかりですので,これから改善されていくと思われます。

Windows Azure対応について

CodePlexにて,EC-CUBE on Windows Azureというパッケージが公開されていますので,今回はこのパッケージをベースに,実際の運用に耐えうるようカスタマイズしました。CodePlexにも公開していますので、よろしければお試しください。

http://eccubeonwaz.codeplex.com/releases/view/85751

EC-CUBE on Windows Azureで対応されているもの

EC-CUBE on Windows Azureでは,主に以下のような対応をされています。

SQL Azure対応

EC-CUBEは,PEAR::MDB2というデータベース抽象化ライブラリを使用しており,データベースごとの振舞いについては,大部分をこのライブラリが吸収してくれます。

まだベータ版ですが,SQL AzureにアクセスするためのMDB2_Driver_sqlsrvがありますので,こちらを使用しています。

しかし,DDLや細部のSQLについてはPostgreSQL/MySQL用のSQLを使用していますので,SQL AzureのSQLに書き直されています。

また,更新系のSQLの文字型にはNプレフィックスをつける必要があり,MDB2_Driver_sqlsrvのパッチを作成して対応されています。

 DDLの修正

PostgreSQL/MySQLSQL Azure
文字型TEXTNVARCHAR(max)
日時型TIMESTAMPDATETIMEOFFSET
指定精度数値型NUMERICNUMERIC(9,0)
SQL構文の修正
LIMIT/OFFSET
MDB2::setLimit()を使用。サブクエリで使用している場合は,SELECT TOPに書き替え
自動採番
MDB2のシーケンス機能を使用
USING句
ON句に書き替え
DATE()
CONVERT(varchar(10), getdate(), 111) に書き替え
TO_CHAR()
CONVERT(varchar(10), getdate(), 111) に書き替え
ILIKE
LIKEに書き替え
php_azure.dllの使用

Windows Azure - PHP Contributionsにて提供されるphp_azure.dllを使用し,データベースの接続情報などを,サービス構成ファイル(ServiceConfigration.cscfg)に記述できます。

これにより,再デプロイの必要なく設定情報を変更できます。

タイムゾーンへの対応

標準のEC-CUBEはタイムゾーンに未対応ですので,PHP5のDateTimeクラスを使用して,タイムゾーンへ対応しています。

本格運用のための対応

EC-CUBE on Windows Azureは,まだβ版ですので,本格運用のために以下のようなカスタマイズを実施しました。

EC-CUBE 2.11.5へのアップグレード

EC-CUBE on Windows Azure は EC-CUBE 2.11.3 がベースとなっていますので,ベースのバージョンを 2.11.5 へアップグレードしました。

Windows Azure Blob対応

すでにEC-CUBE on Windows Azureで対応がされていますが,直接Blobのデータを参照するため,トランザクション費用がかかってしまいます。

また,画像の縦横サイズが取得できず,様々な画像サイズへの対応ができません。

このため,EC-CUBEの管理画面からアップロードする商品画像や,ヴィジットのテンプレートなど,運用中に動的に追加されるファイルはWindows Azure Blobに格納し,各インスタンスでキャッシュするようにカスタマイズしました。

SMTP AUTH

Windows Azureには,SMTPのサポートがありませんので,EC-CUBEをSMTP AUTHに対応させ,外部のSMTPサーバを使用するようにしました。

URLRewrite

SEO対策のため, URLRewriteを使用して簡潔なURLでアクセスできるようにしました。

決済モジュールのインストール

標準のEC-CUBEは,クレジット決済などに対応するための決済モジュールを,オーナーズストアにて購入し,EC-CUBE の管理画面からインストールします。

Windows Azureでは,動的に追加したファイルは永続化されないため,この方法が使えませんので,決済モジュールの管理画面をカスタマイズし,デプロイするパッケージに含めるようにしました。

構築のまとめ

デフォルトのEC-CUBEがPostgreSQL/MySQLに依存しているため,SQL Azureに対応するには,相応の労力が必要でした。

しかし,運用面ではPaaSならではの利点が活き,多くの恩恵を授かることができます。

これらの利点を活かすことによって,従来とは一線を画した,次世代 EC システムを構築できると確信しています。

Windows Azure自体も急速に進化していますので,今後の展開にも期待です。

著者プロフィール

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

有限会社Loop AZ

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

https://www.facebook.com/nanasess

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

コメント

コメントの記入