本記事は、ソフトウェア開発者向けのオンラインメディア「CodeZine(コードジン)」からの転載記事です(オリジナル記事)。
LINEのプライベートクラウド「Verda」のインシデント対応の体制
LINE株式会社が提供するサービスは、2011年に登場したコミュニケーションアプリ「LINE」が有名だ。しかし、前身時代を含めると20年以上の歴史のある企業である。そのサービスの基盤となるインフラは物理サーバーや仮想マシンが混在しており非効率だったことから、2016年よりプライベートクラウド「Verda(ベルダ)」の構築が始まった。
「最初はOpenStackベースの仮想マシンとベアメタルサーバーを管理する基盤としてプロトタイプができ、その後ロードバランサーやDNSなど、サービスインフラに必要な機能が追加されていていきました。今は基本的な計算資源からそれを抽象化するようなサービス、ネットワーク機能、データベースなど、パブリッククラウドのようにさまざまな機能を拡張してきました」と語るのは、VerdaのSREを担うVerda Reliability Engineeringチームのメンバーである萬治 渉氏。
現在のVerdaは物理サーバー5万台弱、仮想サーバーは約10万台、データストアやロードバランシングなどのインスタンスが2万弱ほど稼働している。LINEが展開するビジネスに必要な各種サービスが展開されているが、パブリッククラウドのように外部ユーザーが利用できるように公開されているわけではない。そしてこのVerda上の各サービスを開発するメンバーは80名ほどで、Verdaの開発と運用を一貫して担っている。萬治氏のようにSREを担当するメンバーは5名。なお、萬治氏自身もYAMLなどのコードを書くインフラエンジニアである。
Verdaの各サービスを利用するユーザーの困りごとや障害発生時の対応、情報共有も開発者が行っている。PagerDuty導入以前のVerdaのインシデント対応フローは、Slackの専用チャンネルに投稿されるアラートを開発者が見て、気づいたメンバーが自発的に対応するといったものであった。しかし、アラートが増えると重要度の判断が難しく、誰が対応すべきかが明らかでないことから、即時対応ができないこともあった。
そうした課題を背景に、萬治氏は、上司のすすめもあってPagerDutyを試用して導入を決定する。インシデント対応を外部のMSP(マネージドサービスプロバイダ)企業に依頼するといった選択肢もあるが、そうはしなかった。「外部に頼むには、インシデントを検知してから担当者に通知するまでを文書でマニュアル化しなければなりません。それならコードを書いたほうが圧倒的に速いのでPagerDutyを使うことにしました」(萬治氏)
萬治氏は、Verdaのインシデント対応の改善のためPagerDutyやその他アプリの設定だけでなく、各チームとの調整や、オンコール対応などの整備にも関わった。その背景について「Verdaの規模が大きくなるにつれ、緊急対応の割合が増えてきたため、インシデント対応のスピードを速くするために重要なアラートが開発者に届く仕組みを作りたかったのです」と語った。
現在は、緊急対応が必要なインシデントに24時間体制で対応するオンコール対応を、それぞれのサービス開発チームで体制を組んで実現している。チームごとに1週間あたり2人のエンジニアがつく体制で、アラートが発生したときに担当者に電話をかけたりアラート音で通知したりしている。担当となる頻度はチームの規模によって異なり、月に1回〜2回巡ってくる体制となっている。
なお、Slackに専用チャンネルを設け、PagerDutyからの通知を受けたタイミングで、サポート担当者のスケジュールからその時点の担当者のメールアドレスを返すAPIを使って、メンションする担当者を自動的に割り当てる試みも実施している。対応内容は別途課題管理アプリケーションとも連携してチケット化する。これによって、チーム内で誰がどのインシデントに対応していることや、進捗状況もわかりやすくなった。