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等の各サーバは要求される処理量に応じて分離を検討する形になります。

どのようなサーバ構成とするかは、要求に応じて個別検討する必要がありますが、推奨されるサーバロールの組み合わせ等も考慮する必要があります。
次回はその一部をご紹介していきたいと思います。