前回までは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を取り上げませんでした。Magentoを試しにインストールして試すだけであれば、Varnishは無くても構いません。Magentoを正式に運用し、かつ良好なパフォーマンスを得たいのであれば、Varnishは不可欠です。Including(ESI)を併用したフルページキャッシュアプリケーションサーバーへのリクエストを減らすという点です。Varnishが静的ファイルをキャッシュしている間はアプリケーションサーバーにアクセスが来なくなるので、アクセスの多いサイトほど大きな効果を得ることができます。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そのものを動かすためにアプリケーションサーバーを何か用意しなければなりません。mod_phpで構築しています。php-fpmが好きな方はそちらを選んでも良いと思います。データベースサーバーの選択Magentoがサポートしているデータベースサーバーは、今のところMySQL5.6または5.7となっています。互換性のある製品であれば利用できるので、MariaDBなども利用できます。CloudではMariaDBがデータベースサーバーとして採用されています。さくらのクラウドを使う場合は、データベースアプライアンスでMariaDBが選択できます。データベースサーバーの運用管理が面倒だ、という方は検討してみても良いと思います。このあとは今回は前編ということで、概論的な内容になっています。この後はさくらのクラウド上にサーバーを起動して、本番運用に耐えられるような最小構成のサーバーを設定する流れをご紹介します。