GROWI, Inc. Blog

激白!GROWI.cloudの 可用性向上の取り組み

この記事は、2021/12/23 に行った WESEEK Tech Conference #16 の内容をまとめたものです。

第16回目のテーマは「激白!GROWI.cloudの可用性向上の取り組み」

顧客に何らかのサービスを提供する上で、日常的なサービス可用性の維持・向上に関する業務は必須課題となります。

本発表では、可用性維持・向上に必要な項目を挙げつつ、弊社が実際に提供しているサービスである GROWI.cloud での実施例をご紹介しました。

目次

GROWI.cloud の現状の運用規模

本発表時(2021/12/23 時点)の、GROWI.cloud の規模を示すデータをご紹介しました。

アジェンダ

  1. サービス運営の上で必要な監視項目とは
    • SRE の考え方から、本当に監視すべき項目を設定する
  2. サービスの可用性を計測・可視化する手法
    •  1. を実現するために必要な情報を揃える手段を実装する
  3. 可用性を維持/向上するために必要な取り組み
    • 1./2. を用意した上で、実際にどのような取り組みを実施しているか

1章: サービス運営の上で必要な監視項目とは

監視項目

みなさん、運用しているサービスの監視をどのように実施していますか?
一言に監視項目と言えども、以下のように様々な監視ポイントが思い浮かぶと思います。

闇雲にアラートを出すと

サービスの運用者が正しく対応できるようにするための監視・アラートが、必要なときに対応されなかったり、運用者の負担だけを増大化する要因にしてしまいます。

SRE の考え方

上記のような事態を避けるために、SRE という概念が作り出されました。

可用性とは

では、成功の前提条件になっている可用性とは、どういう定義なのでしょうか。[1]

可用性(Availability)とは、システムを障害(機器やパーツの故障・災害・アクシデントなど)で停止させることなく稼働し続けること、またはその指標のことをいいます。
長い時間、システムを稼働し続けられることを高可用性(High Availability)ともいいます。

今回の文脈で使われる可用性は、「システムを障害で停止させることなく稼働させるための指標」という意味で捉えられそうですね。

運用で守るべきこと

SRE の考え方に沿うと、サービス運用上守るべき事項は以下にまとめられます。

GROWI.cloud における SLO

参考) 各 SLO における許容される down 時間

SLO\期間 1日 1か月(30日) 1年(365日)
99.4% 8分38秒 約4時間20分 約52時間半
99.9% 1分26秒 約43分 約8時間45分

GROWI.cloud 上での SLO 表記

GROWI.cloud では、法人プラン/個人プランそれぞれで、各プランにおける SLO を公開しています。
SLO を運用者/利用者で共有することによって、サービスレベルの認識がお互いに合わせられるように努めています。

GROWI.cloud における SLI

GROWI.cloud 上の GROWI については、以下のような構成で稼働しています。

GROWI.cloud 構成図

SLO を目指すために必要な指標である SLI については、構成図のうち以下の部分から取得できる値を利用しています。

GROWI.cloud 上の SLI 関係部分

まとめ

1章では、SRE の考え方を用い、GROWI.cloud 上での運用方法を考えていきました。

2章: サービスの可用性を計測・可視化する手法

1章で制定した SLO/SLI といった指標を活用した運用体制を整えるため、2章では、

という点について、すぐに確認できるような環境を整備する手法をご紹介しました。

可用性の計測・可視化に必要な実施項目

準備が必要となる項目は以下の 2 点です。

  1. 監視・可視化ツールの選択
  2. 監視ダッシュボードの作成
    • 何をどのように可視化するかを決める
    • システム全体と個別のコンポーネント、それぞれのカットで見られる状態が望ましい

ゴールは、「サービス運営に必要な SLI を簡単に確認できること」です。

導入時の前提

GROWI.cloud での導入時の構成は以下の通りでした。

監視・可視化ツールの選択

監視・可視化ツールの候補は、当初以下のようなソフトウェア/サービスが挙げられました。

しかし、マネージドサービスについては、ノード数/コンテナ数による課金体系であったことから、当初から費用をかけたくないという希望と合致せずに、候補から外れました。

GROWI.cloud の事例

GROWI.cloud では、上記の候補のうち「Prometheus」を選択しました。
また、可視化には Prometheus をサポートしている Grafana を選択しました。
選択理由は以下の通りです。

採用ツールのご紹介

GROWI.cloud へ導入したツールについて簡単にご紹介しました。

Prometheus

Grafana

監視構成

GROWI が稼働している同一クラスタに監視/可視化ツールを加え、以下のように監視を実施することにしました。


GROWI.cloud 上での可視化例

GROWI.cloud では、以下のような可視化のためのダッシュボードを用意しています。

システム全体の情報

こちらのダッシュボードでは、システム全体を俯瞰してすぐに確認できるような情報を表示しています。
以下は表示している項目の一例です。

  1. 過去 30 日間の SLI 値
    • ノードタイプごとに分離して出力している
  2. インストール GROWI 数

右上の赤丸部分に、1. の項目が表示されています。

個別コンポーネントの情報

こちらのダッシュボードでは、各アプリ単位でより細かい指標が確認できるような情報を表示しています。
以下は表示している項目の一例です。

  1. 各 GROWI ごとの SLI 値、許容される残り down 時間
  2. ミドルウェア情報(CPU/メモリ使用量/コネクション数など)
  3. ノード情報(CPU/メモリ使用量など)


上記は、1. の各 GROWI に関する詳細情報の表示例となっています。

まとめ

2章では、1章で制定した SLO/SLI を継続的に確認できるような環境を整備し、どのような構成に至ったのか、どのように確認しているか、についてご紹介しました。

3章: 可用性を維持/向上するために必要な取り組み

3章では、1章、2章でここまで揃えた情報を使い、実際にどのような取り組みを実施しているかについてご紹介しました。

可用性を維持するためには

SLI を SLO 以上に維持できるように意識し、対応する

アラート対応例

アラート対応の一例です。


アラート対応時に見ているもの

先述した Prometheus/Grafana をフル活用しています。
アラートも、運用上 SLO/SLI をすぐ意識できるように、以下のような思想で設定しています。

可用性を向上するためには

GROWI.cloud では、可用性を向上するために、以下の 2 点を実施しています。

  1. 可用性の値を逐次気にして、可用性を高められる箇所がないか探し、対処する
    • 「Availability 向上施策」と銘打って、集中的に行った時期もあった
  2. 障害対応履歴を残す

Availability 向上施策実例

障害対応履歴を残す

まとめ

本発表のまとめです。

  1. サービス運営の上で必要な監視項目とは
    • 真に監視するべきものは何かを洗い出す
    • SLO を設定する
  2. サービスの可用性を計測・可視化する手法
    • SLI を算出できるメトリックを整備する
    • SLI を簡単に確認できるような環境を整備する
      • ex.) ダッシュボードを整備する、アラート内容に記載する、等
  3. 可用性を維持/向上するために必要な取り組み
    • 対応時は、1./2. で整備したものをフル活用
    • 対応後は、対応内容を残してチームに共有
    • 継続的に SLI を改善できるような動きへ

今後の GROWI.cloud 運用展望

著者プロフィール

今間 俊介

株式会社WESEEK / バックエンドエンジニア

2013年にWESEEKに入社。
node.js/Kubernetes を中心としたインフラ/アプリの設計・構築・運用に携わる。
GROWI.cloud の運用にリリース当初(2018~)より従事。

株式会社WESEEKについて

株式会社WESEEKは、システム開発のプロフェッショナル集団です。

【現在の主な事業】

  1. 通信大手企業の業務フロー自動化プロジェクト
  2. ソーシャルゲームの受託開発
  3. 自社発オープンソースプロダクト「GROWI」「GROWI.cloud」の開発

GROWI

GROWIは、Markdown記法でページを記述できるオープンソースのWikiシステムです。

GROWI.cloud

GROWI.cloudはOSSのGROWIを専門的知識がなくても簡単に運用・管理できる、法人・個人向けの商用サービスです。

大手SIer・ISPや中小企業、大学の研究室など様々な場所でご利用いただいております。

【主な特徴】

【導入事例記事】
インターネットマルチフィード株式会社様
[https://growi.cloud/interviews/mfeed/?utm_source=connpass-top&utm_medium=web-site&utm_campaign=mf:embed:cite]

株式会社HIKKY(VR法人HIKKY)様
[https://growi.cloud/interviews/hikky:embed:cite]

WESEEK Tech Conference

WESEEK Tech Conferenceは、株式会社WESEEKが主催するエンジニア向けの勉強会です。

WESEEKに所属するエンジニアが様々なテーマで発表を行う予定です。

次回は、1/27(木) 19:00~20:00に開催予定です。
GROWI と連携できる GROWI bot の開発を通じて学んだ「Slack社が却下するシステムの作り方」そして「Slack社が譲れない仕様」についてお話します。

現在、connpassやTECH PLAYで参加受付中です。皆様のご参加をお待ちしております!
https://weseek.connpass.com/event/234368/
TECH PLAYはこちらから

一緒に働く仲間を募集しています

東京の高田馬場オフィス、大分にある別府サテライトオフィスにてエンジニアを募集しております。

中途採用だけではなく、インターンシップも積極的に受け入れています!

詳しい募集要項は、弊社HPの採用ページからご確認ください。

モバイルバージョンを終了