トレタの障害対応

この記事はトレタ Advent Calendar 2017の24日目の記事です。

サーバサイドエンジニアの中村です。 トレタのようなSaasを提供する企業に関わらず、サービスを提供する会社において障害対応フローを決めておくことは非常に重要です。

今回の記事では、トレタで障害が発生してしまったときにどのようなフローで対応し、全国の飲食店の方々への影響を最小限にしているかをまとめてみたいと思います。

トレタにおける障害とは?

お客様の業務影響があるものを指します。例を挙げると以下のような事象です。

  • トレタにつながらない
  • ウェブ予約ができない
  • メールが送信できない/受信できない
  • FAXが送信できない
  • SMSが送信できない

アプリからAPIサーバにつながらないなどの重大な障害のときに、飲食店の最低限オペレーションを可能にするためにオフライン時にもアプリ側で予約情報を見れるようになっています。

f:id:m_nakamura145:20171204095411p:plain

障害検知の方法

以下の3パターンがあります。どのパターンにおいてもエンジニアが最初に調査し、障害かどうかを判断します。

監視サービスからslackへの通知

トレタでは以下の監視サービスを使っています

これらの監視サービスが異常を検知したら特定のslack channelに通知します。 また、トレタにアクセスできないなどの重大な異常を検知したら pagerduty からエンジニアに連絡がいくようになっています。

エンジニア以外の社員が障害に気づき、緊急でエンジニアを呼ぶ場合にはslackからpagerduty経由で連絡が行くような仕組みも作っています。

f:id:m_nakamura145:20171204095451p:plain

お客様からの問い合わせ

お客様からカスタマーサポートチームへのお問合わせの中で、バグと思われる挙動のお問合わせが来た場合はすぐにエンジニアが調査を行います。

調査の結果、障害だと判断された場合は障害対応フローに移ります。

社員がトレタの各種プロダクトを触っている際に気づく

自分たちで発見するパターンです。すぐにエンジニアに連絡し調査を行います。

障害対応フロー

トレタでは何度かの障害対応の経験を経て、障害対応フローを改善してきました。 現在は以下のフローになっています。

障害発生の事実確認

上述の障害検知からエンジニアに連絡が入り、調査を開始します。

エンジニアの調査と平行し、カスタマーサポートチームでも似たような現象のお問い合わせが来ていないかを調査します。

社内共有

エンジニアによって障害だと判定された場合はslackで社内全員に連絡をします。 このタイミングで報告するのは以下のような内容です。

  • 障害の内容
    • 例: Web予約が使えない、SMSが送信できない
  • 障害時間
  • 影響範囲
    • 店舗数や日本の店舗か、海外の店舗かやWeb予約したユーザに影響があるかなど
  • 影響するプロダクト
    • トレタはiPadアプリの他にも店舗向けのWebアプリやユーザ向けのWeb予約、他幾つものオプションサービスを提供しています。プロダクト名を書くことで他のプロダクトには影響ないことを連絡します
    • 例: iPadアプリ、Web予約など
  • 復旧対応内容
    • 誰が何時にhotfixをProduction Deployするか?

社内共有後にエンジニアはhotfixの準備を行います。並行してカスタマーサポートチームは該当店舗への連絡の準備、影響範囲によってはAPI連携を行っている外部の企業様の担当の方へも連絡を行います。

飲食店へご連絡する

障害の復旧が遅れる場合は、障害発生の第1報を飲食店・お客様に現在復旧対応中の旨をご連絡します。障害対応が既に完了している場合は、その旨をご連絡します。

連絡方法は

  • トレタのサービスサイトに障害情報を掲載
  • トレタアプリのお知らせ欄に掲載
  • トレタにログインしているアカウントのメールアドレスにメールで送信
  • カスタマーサポートチーム・担当セールスから直接電話でご連絡する

のような方法で早急にご連絡します。

復旧作業

  • アプリケーションコードの修正の場合はhotfix deploy
  • データの不整合の場合は本番オペレーションにてデータの不整合を復旧
  • アクセス急増などによるパフォーマンス低下の場合はインフラの増強作業

を行います。無事復旧したら再度社内共有を行い、飲食店にご連絡を行います。

再発防止対策

トレタでは社内情報共有にesaを利用しています。その中の 障害情報 カテゴリに障害情報を記録しています。記録する内容は、

  • 現象
  • 復旧対応
  • 障害時間
  • 原因
  • 影響範囲
  • 再発防止策

を全て詳細に書いています。また、障害復旧の翌週の全社員が集まるホームルームでも障害報告を行い、再発防止に努めています。

まとめ

トレタではSaaSを提供する企業として障害を発生させないために日々全力を尽くしています。しかし、万が一障害が発生したときのために、対応フローを明確に決めておくことで、実際に障害が発生したときのお客様への影響を最小限にする工夫をしています。

今回はトレタの障害対応事例をまとめましたが、私個人としても、各企業の障害対応のフローに興味があるので、この記事を読んだ方々に自分の企業ではこんな風に対応しているというのを共有していただけたらと思います。

データを使った開発とカスタマーサクセス

この記事はトレタ Advent Calendar 2017の18日目の記事です。

サーバサイドエンジニアの中村です。

トレタではデータ分析基盤としてBigQueryを使っています。BigQueryを使ってどのようにデータを溜めているかについては下記の記事をごらんください。

tech.toreta.in

BigQueryに溜まったデータの可視化ツールとしては redash を使っており、最近ではUIがredashよりも美しい Metabase へ移行中です。

トレタではこれら2つの可視化ツールをフル活用しています。今回の記事では、データを可視化するようになってトレタでどのような変化が起きたのかを開発チーム・カスタマーサクセスチームの2つのチームについてお伝えします。

開発編

データを見ながら新機能の価値仮説を検証する

f:id:m_nakamura145:20171204095126p:plain

BigQueryにデータが溜まってきたことで、新機能の価値仮説を検証する段階でデータが利用できるようになりました。

トレタでは新機能を作る場合の最初の体験設計をデザイナーが行うことが多いですが、この段階で積極的にエンジニアと連携し、データでわかることがある場合はすぐに調べて議論を行います。

開発した機能の改善点を探す

f:id:m_nakamura145:20171204095144p:plain

新しく開発した機能は専用のダッシュボードを作っています。見る指標はその機能ごとに違いますが、大まかには以下のような数字です。

  • 機能を利用している店舗一覧
  • うまく新しい機能を使えている店舗
  • 狙ったとおりに機能を使えていない店舗
  • APIリクエスト数

プロジェクトの始まりで「価値を感じていただける飲食店」のケースを考え、そう言った店舗に使えていただけるかをわかるように調整しながらクエリを作っています。

最近では少しづつ、次の機能開発に利用できるデータを集めるためにログを新たに仕込むこともやり始めました。

エンジニアへの問い合わせを減らす

データを誰でも見れるように整備したおかげで、あらかじめ想定される問い合わせに応えられるようなクエリを用意しておくと、カスタマーサポートチームもエンジニアに調査依頼を出さずに問題解決が可能になりました。

結果としてエンジニアへの問い合わせが少なくなり、お互いのチームが自分の仕事に集中できるようになりました。

カスタマーサクセス編

カスタマーサクセスチームとは?

カスタマーサクセスチームは、トレタを導入していただいた店舗をサポートし、売上を最大化するグループです。

トレタのようなSaaSを提供する会社はカスタマーサクセスが要です。トレタというツールを上手く使ってもらい、離脱率を下げるために店舗に向けて様々なアクションを行います。

BigQueryにデータが溜まってきたことで、カスタマーサクセスチームもデータを見ながら店舗に対して効率良くアクションを起こせるようになりました。

お客様の状態を確認する

トレタのような業務用ツールはオンボーディングが上手くいくことが重要です。せっかくトレタを導入いただいても使い方がわからなくて、紙の台帳に戻ってしまうというケースもあります。

今では導入店舗も9000店舗以上になり、物理的に全ての店舗をサポートすることは難しくなっています。そういった中で、トレタを上手く使っていただけていない店舗をデータから抽出し、そういった店舗に集中してアクションを行います。

また特定のキャンペーンや施策を行う時に対象となる店舗がわかるようになったので、施策の精度が高まりました。

トレタをさらに上手く使ってもらう

トレタは見た目はシンプルですが、かなり高機能なアプリケーションになっています。 そのため、一度で使い方を覚えてもらうのはかなり難しく、お客様に説明を行うときも段階的に機能の説明や設定を行います。

お客様へアクションを行う前に店舗の状態をデータで詳細に確認し、次に起こすべきアクションは何なのかを決定します。

まとめ

2017年2月ごろにredashを導入して約10ヶ月間経ち、今ではほとんどの社員が当たり前のようにデータを見るようになりました。

トレタでは開発チームやカスタマーサクセスチームなどそれぞれの職種は違いますが、全員で飲食店の方々にもっと素晴らしい機能を提供するために日々データを見ながらアクションを起こしています。

今年はデータサイエンティストチームが結成され、さらなるデータの活用を進めています。トレタの新たなプロダクトにご期待下さい。

「トレタ Advent Calendar 2017」やります

こんにちは。サーバーサイドエンジニアの芹沢です。
去年に引き続き、今年もトレタ Advent Calenderを開催します。

qiita.com

トレタのエンジニア・デザイナーがそれぞれの知見を語る様子をぜひごらんください。

ちなみに去年2016年の開催告知はこちらです。(数学検定2級には公約通り今年リベンジして合格しました)

tech.toreta.in

お約束ですが、トレタはエンジニア・デザイナーを広く募集しておりますのでこちらも何卒よろしくお願いします。

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.wantedly.com

© Toreta, Inc.

Powered by Hatena Blog