Daily HabitsチームとSRE活動

こんにちは。medibaのテクノロジーセンター・SRE Unitのイ・グンジェと申します。

私はSREエンジニアとして2020年4月からmedibaに参画することになり、 「テクノロジー」のものづくり部隊に属するかつ横断的にはauポータルコンテンツの「Daily Habits」のチームに参加しております。

この記事では、Daily HabitsチームとそのチームでのSRE(Site Reliability Engineering)活動についてお話させていただきたいと思います。

[参考] 2020年度エンジニア組織について


Daily Habitsチーム

サービス

auポータルではニュース、天気、無料ゲームなどの多様なコンテンツがあります。
その中で、Daily Habitsチームは以下のコンテンツを担当しております。

特に「毎日ポイント」という名前からも分かるように、Daily Habitsチームは ユーザの「習慣」にフォーカスしたサービスを担当するチームで、ユーザーが毎日使いたくなるサービスを提供するのを目指しております。

チーム構成

Daily Habitsチームはより良い品質のコンテンツを提供するために、
スクラム開発を採用しております。

スクラム開発はソフトウェア開発における反復的で漸進的なアジャイルソフトウェア開発手法の1つであり、以下のような特徴があります。

  • 開発プロジェクトを数週間程度の短期間ごとに区切る
  • その期間内に分析、設計、実装、テストの一連の活動を行う
  • 一部分の機能を完成させるという作業を繰り返しながら、
    段階的に動作可能なシステムを作り上げる
  • スクラム開発における反復の単位を「スプリント」という

実際に私たちのチームは1週間単位でスプリントを運用しておりまして、 以下のように多様なメンバーが毎日集まってサービスの改善点や今後のサービス方向性などについて話し合っております。

また、集まった内容は毎週金曜日に次回スプリント計画会でスプリント課題に上げて、迅速に実際のサービスにもDeployできるようにしております。

[参考]ものづくりプロセスを導入・改善した結果どうなったの?ってお話

Daily HabitsチームのSRE

上記の内容で言及したように、Daily Habitsチームは多様なポジションのメンバーが集まり、1週間のスプリント単位でサービスを運用しております。

何よりも異なる領域のエンジニアとすぐに意思決定できる環境である為、SREの概念を展開するのができると思いました。

ただし、SREの概念は人、組織、会社により異なると思い、私たちのDaily Habitsチームは「Daily HabitsのSRE」を定義し、自主的なSRE活動を展開することにしました。

Daily Habits SREの定義

1. 概要


SREはGoogleが「サービス管理における伝統的なSysAdminのApproach」から離れて、 Googleの方式で新しく解析し、提示した「サービス管理におけるGoogleのSysAdminのApproach」です。

尚、SREの背景はDevOpsであり、DevOps具現のためのBest PracticeがGoogleのSREです。

DevOps is a set of practices, guidelines and culture designed to break down silos in IT, ops, networks, security, etc.

Site Reliability Engineering is a set of practices we’ve found to work, some beliefs that animate those practices, and a job role.

[参考]Google Nextの発表資料

結局、SREはGoogleがDevOpsを具現するために実装した新しい「SysAdminのApproach」ということで、 Daily HabitsもDaily HabitsなりのSREを定義してDevOps的なエンジニアリングの具現を実施します。

2. Daily Habits SREの定義


Daily HabitsのSREは Daily Habitsサービスの信頼性を高めるための行動を実施します。

信頼性は日本産業規格では以下のように定義されています。

一定の条件下で、安定して期待される役割を果たすことのできる能力

アイテムが与えられた条件で規定の期間中、要求された機能を果たすことができる性質

そこで、Daily Habitsサービスで以下の活動をすることでサービスの信頼性向上に務めます。

  • 安定して期待される役割を果たすことのできる能力を高める
    • システム変更が安定的に行われるための環境を作る
    • Game Habitsのコンテンツを安定的に提供するための環境を作る
    • より快適で安定した環境でDaily Habitsの価値提供ができるようにする
  • 与えられた条件で規定の期間中、要求された機能を果たす能力を高める
    • Point Habitsのシーズン期間中、安定的にPoint付与に成功するための環境を作る
    • Habitsコンテンツの障害を把握し、迅速に対応できる環境を作る
  • サービス提供水準を把握し、改善に務める

3. Daily Habits SREのガイドライン


Daily Habitsサービスの信頼性を高めるためには

  • Metric & Monitoring

    • Daily Habitsシステムのモニタリング体制を構築する
    • モニタリングデータを活用してサービス水準の指標を設定する
    • 設定した指標の状態を把握し、サービス水準を洞察する
    • モニタリングデータに基づいて改善を繰り返し、Daily Habitsのサービス信頼性を高める
      • SLO / SLIを定義する。
  • Capacity Planning

    • Daily Habitsシステムを運用することに必要なリソースを把握・確保する
      • サービス特性上、急激なTrafficはないため、過度なリソース消費に注意
    • Resourceを把握し、Scaleを調整する(削減・増設)
      • コストを節約した分、新しい領域に投資する
    • 快適なシステム環境でサービスを提供して信頼性を高める
      • 適切にコストを配置する
  • Change Management

    • Daily Habitsシステムの変更を管理する
    • システムの変更フローで人間を除去し、自動化することで障害を減らす
      • システム障害の70%は人間が関与したのが原因になるため
        • CI/CDツールを用いて開発したソフトウェアのBuild/Deployを行う
      • Toil作業を減らす
        • システムの変更において反復的でつまらない手作業をなくし、自動化させる。
    • システムの変更を自動化することで所要時間を減らす
      • 節約できた分、サービス品質向上に務める
    • 障害・所要時間を減らして信頼性を高める
      • システムの自動化に務める
  • Emergency Response

    • Daily Habits障害対応体制を構築する
    • 障害対応のマニュアル(playbook)を作り、より迅速に対応できるようにする
      • できるだけ、障害回復時間を早くする。
      • 誰でもできるようにする
    • 障害による被害を減らすことで信頼性を守る・高める
      • 障害対応をマニュアル化し、メンバーが迷わず対応できるようにする

最後に

ここまで、Daily HabitsチームとSREについてお話させていただきました。

現時点ではDaily Habit SREの行動指針を定義しただけど思っており、 SLO/SLI指標の設定、Capacity Planningなどについて具体的な基準値を定義するなどの 課題が残っています。

その課題を達成することで、お客様に提供しているDaily Habitsのサービスの品質が 数値で把握できるようになったらより素敵なDaily HabitsのSREになれると思います。

まだまだ道のりが遠いと思いますが、これから「ヒトにHAPPY」を伝えるように 頑張って行きたいと思います。

ありがとうございます。