サービスとロール

この記事は、Mackerel アドベントカレンダー(全部CRE)の2日目の記事です。

12月に入りました。今月はMackerel CRE アドベントカレンダーに挑戦します。目新しい記事というよりは、ゆるやかに、あらためて自分の理解を自分の言葉で整理するためと、これからもっとお会いしていくであろう未来のMackerelユーザの方々とお話するときに役立ちそうなものをまとめていくような記事を書き溜めていきたいと思います。

qiita.com

第1回目はMackerelの「サービス」と「ロール」という概念についてです。 Mackerelを理解するなら、まずはここからといったところでしょうか。

サービスとロールとは?

サービスとロールとは、監視対象や取得したメトリックをグルーピングする単位です。 Mackerelの中でとても重要な概念で、アラート通知の条件設定やグラフの描画など、いろいろな設定に関わります。 Mackerelを活用していく上で、はじめにこのサービスとロールをどのような形で切り出して行くのかをぼんやりとでも考えておくと、あとの設定がとても楽でわかりやすいものになります。

サーバーが提供する「サービス」

「Mackerelはサーバー監視サービスです。」とよく説明しています。 サーバー監視という言葉を使うと、どうしても対象のサーバーに目がいきがちですが、サーバーとはもともと、サービスを提供するもの、という意味です。 Mackerelでは、サーバー1台1台というよりも、そのサーバーが提供しているサービス全体にフォーカスできるような設計になっています。

サービスは、サーバーが提供しているある程度のまとまりのある機能のことです。 厳密には、管理のしやすさや何かしらの制約によって、まとめたりより細かいコンポーネントごとに分けるということもあるので、必ずそうとは言えませんが、イメージとしてはこのような感じです。 例えば、Webサーバーをたてて、コーポレートサイトを運用しているのであれば、コーポレートサイトがサービスにあたります。ソーシャルゲームであれば、ゲームタイトルごとの環境がそれにあたるでしょう。 はてな にとっては、「はてなブログ」や「はてなブックマーク」がサービスにあたります。 実際に、はてな社内用 Mackerelの「サービス」の設定には、「はてなブログ」や「はてなブックマーク」にあたる設定が入っていて運用に活用しています。

サーバーには役割「ロール」がある

クラウド環境などを利用していると、ひとつのサービスを複数台のサーバーで運用しているということはよくあります。 私もお客様のところにお伺いすると、まず「担当されているサービスは何ですか?」と聞いたあと、そのサービスが何台程度のサーバーで、どんな構成で運用されているのかということをよく聞きます。 この「どんな構成で?」というところが、Mackerelでいうところの「ロール」にどんなものがあるのかのヒントになります。

例えば、以下のようなものです。

  • Webメディアサービスを運用しています
  • ロードバランサーを前段にWebサーバーを3台並列に動かして負荷分散をしています
  • Webサーバーはデータベースに接続しています
  • DBサーバーは、マスターDBサーバーが1台、そこからレプリケーションする参照用のスレーブDBサーバーが2台あります

など。 この中に含まれるロールは、ざっくり以下のようなものでしょうか。もちろんこちらも管理のしやすさなどから、DBサーバーはマスターDBサーバーとスレーブDBサーバーに分けてもよいでしょう。あくまで例です。 本来なら、これ以外にも管理サーバーやログサーバーなども入ってくるかもしれません。

  • ロードバランサー
  • Webサーバー
  • DBサーバー (または マスターDBサーバー と スレーブDBサーバー)

そして、この役割を担う個々のサーバーをMackerelでは「ホスト」と呼びます。 図にするとこんな感じです。

f:id:missasan:20181202002534p:plain

次のブログでは、実施にサービスとロールがMackerelの中でどのように登場してくるのか、どの設定に関わってくるのかというところをまとめてみようと思います。

私のブログはこんな感じでゆるゆると進みます。どうぞみなさまお付き合いくださいませ。