Magento 2.4がDockerでどのように構成されるか?

Configure Magento 2.4 with Docker

Magento Commerceの最新リリースである2.4には、多くの新機能とアップデートが含まれています。今回のアップグレードでは、PHP 7.4、Elasticsearch 7、MySQL 8の各バージョンがサポートされました。それだけでなく、Magentoの管理者がデフォルトで2ファクタ認証を有効にするなど、セキュリティも大幅に強化されています。また、このリリースでは、Elasticsearchのデフォルトの検索エンジンカタログが導入されています。

この記事では、Magento 2.4から最高の結果を得るためにできることをいくつかご紹介します。

1.Magento 2.4をDockerコンテナでセットアップ

Magento 2.4を開発用にDockerで隔離されたコンテナにアップグレードまたはインストールします。このようにすることで、より良い弾力性が得られ、単一のホストマシン上で様々な目的のために別々のインスタンスを作成することができます。なお、Dockerコンテナは、異なるPHPバージョンを同時に実行することができます。また、ウェブサイトのコードにアクセスするための追加のセキュリティレイヤーを提供します。

2.Magento 2.4でElasticsearchが必要な理由

Magento 2.4では、検索にMySQLを使用する代わりに、Elasticsearchをデフォルトの検索エンジンとして使用するようになりました。Magento 2.4のバージョンを完成させるには、Elasticsearchのアクティブノードが必要です。同様に、RabbitMQもキューにメッセージを発行するために使用することができ、非同期にメッセージを受信するコンシューマを定義することができます。また、Elasticsearchサービスも同様にDockerコンテナで作成することができます。開発用には、推奨・サポートされているバージョンのElasticsearch-7.6.xが、それ以前のバージョンと比較してパフォーマンスの最適化が図られていることを確認しました。

ファイルディスクリプターと仮想メモリに関しては、Elasticsearchのドキュメントで推奨されているように、必要なシステム構成プロセスに従うことが重要です。もし基盤となるホストがSWAPメモリを使用している場合は、メモリの使用量が多いためにサービスが停止しないように、メモリの使用量を制限することをお勧めします。

3.Magento 2.4でのVarnishの使用

Varnish は、「HTTP アクセラレーション」とも呼ばれ、HTTP プロトコルで使用するために設計されています。Magento 2.4 は Varnish-6.x バージョンをサポートしています。最新のVarnishサポートの導入により、プラットフォームが最適化され、HTTPアセットを素早くユーザーに返すことができるようになりました。

下図のように、あらゆるアセットリクエストはVarnishによって満たされます。Webサーバに到達しなかったリクエストに対しても、Varnishはキャッシュされたコンテンツを返し、Magentoが満たさなければならない次のリクエストの数を減らすことができます。

Varnish for Magento 2.4 の最新リリースでは、同じ Varnish-6.x バージョンの VCL を使用することが推奨されています。これは、いくつかの古い変数が非推奨になっていることと、TTLやgraceの期限切れ後にトランザクションを再起動するなどの機能があるためです。VCLの設定でサポートされていない場合、Varnishのサービスは起動に失敗します。

4.Redisの設定と使用

PHP セッションと FPC を保存するために、Magento は Redis のキャッシングを設定する CLI オプションを提供しています。キャッシングの設定は、app/etc/env.php ファイルに変更を加えることで、キャッシュタグをフルサポートした高速バックエンドキャッシュを設定できます。これは、マルチサーバー環境で推奨されます。

5.MySQL-8 の使用

Magento 2.4 は MySQL-8 でテストされていますが、MySQL5.7 のような古いバージョンもサポートしています。しかし、これはテストされておらず、推奨もされていません。MySQL-8バージョンは、Magentoのパフォーマンスを最適化するために、クエリの最適化とインデクサーをサポートするいくつかの変更があります。

MySQL-8では、データベースレプリケーションのバイナリロギングがデフォルトで有効になっていますが、これをオフにすることで、トランザクション時間とデータベースのワークロードを減らすことができます。しかし、クラスター環境でのデータベースレプリケーションでは、健全なノードへの迅速なフォールバックと、データベースのREAD/WRITE操作を二分するために、これは良いことです。

6.Magento2.4のインフラ構築

下図のように、静的コンテンツを広帯域で配信し、動的コンテンツを高速化するためにAzure CDNを設定し、機密ファイルへの不正アクセスをブロックするためにWAFを設定しています。そして、HTTPリクエストを受け付けるVarnishを配置し、メモリ上に存在するキャッシュコンテンツを提供しています。

キャッシュされていない資産は、専用のクラウドサーバー上で動作するMagentoコンテナにプロキシされます。検索機能については、WEBサーバーとMySQL-8データベースサーバーの両方でElasticsearchサービスを共有し、Magentoのセッションとバックエンドキャッシュを保存するためにRedisキャッシュサービスも共有しています。

以上のようなアーキテクチャで、Magento-2の開発用に6種類の環境をリリースしました。

7.なぜそれが役立つのか

Dockerテクノロジーは、効率性を重視したマイクロサービスベースの手法であるため、より制御性が高く、きめ細かいものとなっています。コンテナを使用することで、開発者は、反復可能なインフラストラクチャと構成でコードを構築する場合、同じホスト上で実行されている他のアプリから分離された必要な環境を作成することができます。アプリケーションがコンテナ化されると、同じシステムで動作する他のアプリから隔離されるため、アプリケーションコードへの直接アクセスは容易ではありません。Dockerを使えば、複数のサーバーに展開できるイメージを構築、テスト、リリースすることができ、短期間でインスタンスをスケールアウトして、本番のトラフィックに対応することができる柔軟性があります。VarnishやCDNなどのアクセラレータを使用することで、アプリケーションの操作性が向上し、キャッシュされたコンテンツを再利用することで、より高速なコンテンツ配信が可能になります。

 

デモを申し込む

弊社の専門家は最適なソリューションをサポートさせて頂きます。

 

►►►サービスについて