Magentoを本格的な構成で運用する〜前編〜
前回まではMagentoのインストール方法や機能、アップデート方法の紹介をしてきました。今回からは私が実際にMagentoを使用したサイト構築プロジェクトで「最小構成」としてご提案している構成と、構築の流れをご紹介していきたいと思います。
Magentoを動かす本格的な構成の最小構成とは
本格的な構成でMagentoを動かす場合、私が最小構成としてご提案しているのは、
- 4コア8GB以上の性能のWebサーバーを1台
- 4コア8GB以上の性能のDBサーバーを1台
という構成です。もちろん、すでにある商品や顧客データの量、あるいはアクセス数によってはもっと良いスペックのサーバーが必要になりますが、新規にサイトを構築するのであれば少なくとも上記くらいの構成から始めるのが無難ではないかと思います。
最小構成でトレードオフにしていること
最小構成なので、以下の事項についてはトレードオフとしています。
- WebサーバーとDBサーバーの可用性については考慮しない
- 管理画面専用のサーバーは用意しない
- テスト用の環境は同一サーバー内で用意するか、そもそも考慮しない(良くはないですが)
どうしても現在のMagentoはアプリケーションそのもののターゲットが中〜大規模サイト用に寄っているため、古いバージョンよりもサーバー費用がかかる傾向にあります。1台のサーバーで全てを賄おうとすると、性能不足に悩まされがちになります。手間はかかりますが、最初から用途別のサーバーで構築していくほうが良いでしょう。
ミドルウェアの構成
この記事を書いている時点のMagentoの最新版は2.2.3です。以前の記事で取り上げたミドルウェアの要件から幾つかの要素が変わっています。
- PHP5.6がサポート外に
- PHP7.1がサポート対象に
- Varnish3がサポート外に
- Varnish5がサポート対象に
PHP5.6系のサポートは、2018年末で終了することが以前から告知されているので、Magento2.2系がサポート外としたことはある意味望ましいといえます。ちなみにHHVMは現時点ではMagentoの正式サポート対象ではないので、本番環境の候補に選んではいけません。
本格的な運用にはVarnishが不可欠
実は以前の記事ではVarnishを取り上げませんでした。Magentoを試しにインストールして試すだけであれば、Varnishは無くても構いません。ですがMagentoを正式に運用し、かつ良好なパフォーマンスを得たいのであれば、Varnishは不可欠です。
Varnishを使うメリット
Varnishを使うメリットは、
- 静的ファイルをキャッシュして、クライアントに配信する
- Edge Side Including(ESI)を併用したフルページキャッシュ
- アプリケーションサーバーへのリクエストを減らす
という点です。
Varnishが静的ファイルをキャッシュしている間はアプリケーションサーバーにアクセスが来なくなるので、アクセスの多いサイトほど大きな効果を得ることができます。特にApache + mod_phpのように使用するメモリ量が大きい構成の場合、Varnishが静的ファイルの配信で助けてくれるだけでも非常に助かります。
さらにVarnishを使うと、Magentoが生成するHTMLページをVarnishにキャッシュさせることができます。Magentoではフルページキャッシュと呼んでいますが、要はVarnishを使う場合はESIが利用できます。この仕組みを利用すると、ページの中でログイン状態などによって表示内容が変わる部分だけを動的にアプリケーションサーバーに要求することができます。アクセスのたびにページ全体を生成するのはCPU時間がものすごく無駄になるので、再利用可能な部分は積極的に再利用するようにMagentoは設計されています。
Magento1系の有償版ではこれに類似した機能が搭載されていたのですが、Magento2では標準機能としてVarnishとの連携機能が搭載されています。もちろんMagento1系と同じようにVarnishを使わない内蔵フルページキャッシュを使うこともできますが、あまりパフォーマンスはよくありません。ですからVarnishを使うのはMagentoにとって「当たり前」なことであるともいえます。
最小構成と言いながらもメモリだけは少し余裕を持って
Varnishは本当はWebサーバーとは別のサーバーで運用したいのが本音ですが、予算が限られている場合は妥協案としてVarnishをWebサーバーと同居させます。この場合、ApacheやNginxが使用するメモリに加えて、Varnishがメモリを余計に使用します。実メモリが不足してスワップアウトしたり、プロセスがOSによってkillされると困るので、メモリ容量は少し多めにしておくと良いでしょう。
アプリケーションサーバーに何を選ぶか
Varnishが基本的に全てのHTTPリクエストを一旦受けてくれますが、Magentoそのものを動かすためにアプリケーションサーバーを何か用意しなければなりません。最小構成の場合はオーソドックスにApache + mod_phpで構築しています。もちろんNginx + php-fpmが好きな方はそちらを選んでも良いと思います。
データベースサーバーの選択
Magentoがサポートしているデータベースサーバーは、今のところMySQL5.6または5.7となっています。もちろん互換性のある製品であれば利用できるので、MariaDBなども利用できます。実際、Magento Commerce CloudではMariaDBがデータベースサーバーとして採用されています。
さくらのクラウドを使う場合は、データベースアプライアンスでMariaDBが選択できます。データベースサーバーの運用管理が面倒だ、という方は検討してみても良いと思います。
このあとは
今回は前編ということで、概論的な内容になっています。この後はさくらのクラウド上にサーバーを起動して、本番運用に耐えられるような最小構成のサーバーを設定する流れをご紹介します。