技術部シニアエンジニアリングリードの @tnmt です。
近年ペパボではSRE(Site Reliability Engineering)に取り組んでいます。同じくSREに取り組むエンジニアを読者想定に、今回からいくつかケーススタディとして事例の紹介をしていきたいと思います。ペパボのエンジニアリングの一部理解になれば幸いです。
第一弾として、2019年より行っているロリポップ!レンタルサーバーでのSLI/SLOを元にしたパフォーマンス改善の取り組みをライトに取り上げます。
ロリポップ!レンタルサーバーのSLI/SLO運用
きっかけ
そもそものきっかけとしては、2019年当時のサービス利用ユーザー様の一部から「ウェブサーバーのレスポンスが悪い」というフィードバックをいただいていたということでした。
ウェブサーバーのレスポンスタイムはホスティングサービスの品質を左右するものであり、ロリポップ!レンタルサーバー全体として改善することが求められていました。そのため、当時行っていたサービスのインフラ運用の死活監視以外に、あらたにレスポンスタイムの継続的なモニタリングを追加することとしました。はじめるにあたって Google の Site Reliablity Engineering のプラクティスである Service Level Indicator(以下SLI), Service Level Objective(以下SLO) をもとにしたパフォーマンス改善を目指すこととしました。なお、SLI,SLOそれぞれの意味の説明はここではは省略します。(原典は Google - Site Reliability Engineering にあります。)
ウェブサーバーのレスポンスタイム低下は当時のユーザー契約数低下一因の可能性もあったため、レスポンスタイムの把握と改善は単にエンジニアだけでなく、サービス責任者であるマネージャーや部長も巻きこみ、機能開発と並行して優先度の高い取り組みとして開始されました。
SLI/SLOの策定
当然ながら、最初のSLIはユーザー様に提供しているウェブサーバーのレスポンスタイムとなります。まず最も重要な指標であるこの一つに照準を絞りました。
対象となるウェブサーバーのレスポンスタイムは、ユーザー様の体感となるべく近いものとするため、テスト用に記事をいくつか登録したWordPressサイトを各ウェブサーバーに配置し、外部からそのWordPressを参照した結果を記録していくこととしました。
具体的には当時並行してモニタリングの仕組みとしてPrometheusとGrafanaの整備が進められていたため、Prometheusのblackbox_exporterを利用して、準備したWordPressのレスポンスタイムを取得しはじめました。
ある程度蓄積された情報から95パーセンタイルのパフォーマンス速度を割り出し、SLOとしてはそれよりも少しストレッチした数値を設定しました。ロリポップ!レンタルサーバーには複数のプラン(ライトプラン・スタンダードプランなど)が存在しているため、そのプランごとに異なるSLOが策定されます。
モニタリングとデイリーの活動
プラン×サーバーでモニタリング対象サーバーが相当数となること、またユーザー様の利用に関してはペパボ側でコントロールが難しく、サーバーごとにリソースの使われ方のバラ付きがあるため、SLOを満たしているサーバーとSLO違反しているサーバーが一覧できるようにGrafanaダッシュボードを構築しました。
天候に見立て、レスポンスタイム95パーセンタイルのSLOを満たしていれば「晴天」「晴れ」、SLO違反は乖離が小さい順に「曇り」「雨」「雷雨」でサーバー台数の分布を示し、合わせてレスポンスタイム95パーセンタイルのスコアが悪い順にサーバーのランキングを表示できるようにしました。
SREチームはデイリーでこのダッシュボードをチェックし、SLO違反のサーバーがあれば原因の調査・特定と改善を行うというアクションが起こせるようになりました。
レスポンスタイム改善とハイスピードプラン、そして「ロリポップ!爆速宣言」へ
2019年から取り組みはじめたこれらのパフォーマンス改善ですが、最初の6ヶ月はSLO違反となるサーバー台数も多く、2019年6月末の状況で1ヶ月ウィンドウでのSLO達成率は67.35%(目標値:88.15%)と厳しいスタートとなりました。当時は厳密な「エラーバジェットポリシー」を策定していなかったこともあり、SREチームはSLO違反サーバーの調査やパフォーマンスチューニングを絶えず行っていました。
これと並行し、新たにパフォーマンスを重視したプランの提供準備を開始していました。すでにレスポンスタイムの継続的なモニタリングの環境は整っていたため、既存プランとの比較をしながら新規プランの準備をすすめ、2019年9月にはハイスピードプランの提供を開始しました。また、他プランも下半期に継続的に改善を続けることで、2019年末にはSLO達成率は全プラン通期で目標を達成しています。
2020年も変わらず取り組みを続け、SLOを満たしたレスポンスタイムで安定してきたことあり、2020年8月5日には具体的なレスポンスタイムのエビデンスを載せた「ロリポップ!爆速宣言」を実施し、全プランのリニューアルを行いました。
この一連の改善については、ロリポップ!レンタルサーバーのオウンドメディアにも記事がありますので、合わせてご覧いただければと思います。
ロリポップが高速化・安定化のために取り組んでいること - 教えて!レンタルサーバーのこと - ロリポップ!レンタルサーバー
まとめ
簡単ですが、ロリポップ!レンタルサーバーのSLI/SLOをもとにしたパフォーマンス改善について、2019年から2020年の取り組みをエンジニアリングの観点からまとめました。
今後もロリポップ!レンタルサーバーではより高速で安定したサービス提供に向けて継続した取り組みを続けていきます。
次回のペパボSREケーススタディもお楽しみに。
Pepabo Tech Conference #14 のお知らせ
来る 2/25(木) 18:30 に「Pepabo Tech Conference #14」を開催します。今回は「プラットフォーム・基盤部門スペシャル - 事業部横断部門の取り組み大公開」をテーマに、技術基盤チーム・データ基盤チーム・プラットフォームグループ(SRE)・セキュリティ対策室のメンバーが各チームの取り組みについてお話させていただきます。
今回ケーススタディで触れなかったSREチームの事例紹介もありますので、興味がある方はぜひご参加ください。