旅行プラットフォーム事業部エンジニアの西山です。フォルシアではプロダクトチームの他に、SREチームに所属しています。SREとは、サイト・リライアビリティ・エンジニアリング(Site Reliability Engineering)の略称で、Google社が提唱したシステム管理とサービス運用の方法論です。
当社では、「エンジニアもお客様のビジネスに深く携わり、お客様と一緒にビジネスを作っていく」という考えのもと、エンジニアは要件定義~設計~開発~保守運用と、顧客案件に横断的に携わっています。
そのためフォルシアのSREチームに専任はいません。各種プロダクトと兼任のエンジニアが5~6名のチームを構成しています。兼任だからこそ、一般的なSREチームの担当範囲全てをカバーするのではなく、優先度が高い課題に絞って毎年社内の課題を解決しています。
今回はそんなフォルシアのSREチームにおける2018年度の活動内容をご紹介します。
活動内容
具体的にはどのような課題を解決しているのか。2018年度の活動の一部をご紹介します。
主にこの2つに重点を置いて活動しました。
- オンコール対応回数の削減
- 新しく発生するようになったエラーの早期検知
1. オンコール対応回数の削減
フォルシアでは、オンコール対応において、よくあるパターンにサーバ高負荷時対応がありました。
この対応はある程度定期的に発生しており、復旧手順はサービスの種類によらずほぼ共通です(まさにSRE用語で言う所のトイルですね)。
SREチームで高負荷の発生原因を特定/分類し、ある事象に対して自動復旧スクリプトを用意し商用環境に適用しました。
スクリプトの処理は次の通りです。
- 高負荷(LAやエラーログの内容を監視)のサーバを検知
- 該当サーバをLBから切りはずし、原因に応じて対応処置をとる
- 負荷が落ち着いたことを確認し、該当サーバをLBに復帰
この自動復旧スクリプトにより、とあるサービスでは50%程度のオンコール対応回数削減を達成しています。
2. 新しく発生するようになったエラーの早期検知
どんなにテストをしても、エラーを完璧に無くすことは難しいです。エラーをつぶすことと同じくらいエラーを早期に検知することも大切だと考えています。
過去1週間で初めて発生したエラーを検知した場合はslackに通知をするbotを用意し、エラーの早期検知を実現しました。通知内容の精度を上げるため、エラーログ文字列の類似度も新規エラー判定条件の項目としています。
品質AWARD
ここまで紹介した活動内容に加えて、フォルシアでは「品質AWARD2018」と銘打って2018年度にサービスの品質向上に取り組んだチームの紹介・表彰をしました。
多くのアプリにrobot-framework, puppeteer, Frisby.jsによるテストの導入を推し進めたSevketや、 pg_prewarmと複合indexを用いて検索速度という品質を大幅に改善した相澤ら複数のチームが受賞しています。
受賞者には盛大な拍手が送られ、副賞としてオフィス近くの百貨店でおいしいと評判のお菓子が進呈されました!
売上という観点では見えづらいですが、品質改善は表彰に値し積極的に取り組んでいくべき活動、という風土を今まで以上に色濃くしてきたいと思います。
おわりに
2019年度もSREチーム一丸となって、品質および運用を改善していきます。
自分たちの環境を自分たちの力でより良くしていくことに興味をもってくださった方/SREの取り組みについて詳しく聞いてみたいと思ってくださった方は是非下記からお気軽にお問い合わせください。
西山諒平
旅行プラットフォーム事業部 2015年度新卒入社。
大手旅行会社のシステムを担当。
フロントサイド~サーバサイド・DB・サーバ構築など何にでも興味津津な雑食系エンジニア。