Sitecore技術情報(2)Sitecoreにおけるサーバスケールの考え方
- CMS
- 開発
- Sitecore9の製品構成と主な周辺ミドルウェア(1)
- Sitecoreにおけるサーバスケールの考え方(2)
Sitecoreでは、各サーバが担う役割を「サーバロール」として定義しています。今回はこのサーバロールとサーバ分散構成の考え方を説明したいと思います。
Sitecoreのサーバロール
Sitecoreでは各サーバが担うべき役割をサーバロールという単位で定義していますが、1台のサーバに対して、複数のサーバロールを割り当てることが可能です。
「Sitecoreが提供する機能を意味のある単位で束ねたもの」がサーバロールと考えると、理解しやすいかもしれませんね。
以下に主要なサーバロールを例示します。xConnectは単純化して表記していますが、更に細分化することも可能です。
# | サーバロール名 | 説明 |
---|---|---|
1 | Content Delivery | Webサイトを外部へ配信する。いわゆるWebサーバのこと。 |
2 | Content Management | CMS機能を提供する。コンテンツエディター等の管理画面全般もここが提供する。 |
3 | Processing | 行動履歴データ等を元にReporting用のデータの加工・整形を行う。 |
4 | Reporting | 集計した結果をレポートとして出力する。 |
5 | xConnect | サイト訪問者の行動履歴を収集・検索するAPI等を提供する。 |
サーバロールの詳細は、下記ページ(英語)が参考になります。
https://doc.sitecore.net/developers/architecture-and-roles/architecture/index.html
Sitecoreにおけるサーバ分散構成
開発環境ではあまり信頼性を求められないため、1サーバへ全サーバロールを割り当てる構成とする場合もありますが、信頼性を求められる本番環境では、複数台のサーバによる分散構成を採用することが多いです。
このような場合、非機能要求に応じて垂直スケールと水平スケールを組み合わせて構成を検討していくことになります。
先ほど説明したサーバロールを踏まえ、Sitecoreにおけるスケール方式について説明していきます。
- 垂直スケール
同一サーバロールのサーバを複数台用意することにより、スケールすることを指します。
ロードバランサ(LB)等による負荷分散制御や、セッション維持方式(Sticky Session)に関する検討が必要となりますが、可用性を向上できるため、主にContent Deliveryサーバロールで採用されることが多いです
- 水平スケール
1サーバへ複数サーバロールを割り当てている場合に、一部のサーバロールを別サーバへスケールすることを指します。
水平スケールを行うことでサーバ停止時の影響を局所化でき、サーバの負荷特性に応じたチューニングが行いやすくなりますが、サーバリソースを効率的に利用することは難しくなります。(サーバ毎にリソースのバッファを確保する形になるため)
外部公開されるContnet Deliveryサーバロールは専用のWebサーバとして分離することが多いですが、バックヤードとなるContent Management、Processing、Reporting等の各サーバは要求される処理量に応じて分離を検討する形になります。
どのようなサーバ構成とするかは、要求に応じて個別検討する必要がありますが、推奨されるサーバロールの組み合わせ等も考慮する必要があります。 次回はその一部をご紹介していきたいと思います。