SREチームの長田です。 今回は私が所属している「カヤックのSREチーム」について紹介します。
SREとは
Site Reliability Engineering の略です。 「サイト信頼性エンジニアリング」と訳されることが多いようです。 同名の書籍(いわゆるSRE本)が出版されたことから、SREという言葉が一般的に使われるようになったようです。
この記事ではSREそのものについての説明は省きます。 ざっくり一言で説明すると、「サイト(サービス)の信頼性を技術の力で担保すること」のようになるでしょうか。 SREの何たるかのより詳しい説明については上記のSRE本や、提唱元であるGoogleのサイト(英語)を参照してください。
カヤックのSREチーム
カヤックのSREチームは2018年に発足しました。 当初は3名体制でしたが、メンバーの入れ替わりもありつつ徐々に人数を増やし、現在は6名が在籍しています。
メンバーごとに一つ以上のプロジェクトを担当しています。 各プロジェクトの課題やその解決策をSREチーム内で共有し、プロジェクトをまたがった知見の共有を行っています。
目標はSREチームの仕事をなくすこと
カヤックのSREチームの目的は サービスの可用性にフォーカスした改善・運用を行う ことです。 SREの責務である信頼性の担保の中でも、特に可用性を重視しています。
その上で 可用性を担保したままアプリケーション開発者でも運用できるようになる ことを最終目標としています。 つまり、対象のプロジェクトについて、SREチームメンバーが直接手を動かさなければならない仕事をなくすということです。
プロジェクトの現状から可用性に関係する要求を見つけ出し、具体的なタスクとして定義し改善を行っています。 そのような可用性担保のための活動を、アプリケーション開発メンバーだけで継続できる状態をつくるための仕組み化・ガイドライン化を進めています。
プロジェクトごとにSREが常駐して運用していくという方法もありますが、 現状ではSREチームメンバー数よりもプロジェクト数のほうが多いため、専属メンバーを配置するのは難しい状況となっています。 仮に十分な人数が確保できたとしても、SREチームメンバーでなければ対応できない仕事を減らすことは、 プロジェクト運用を安定させ、属人化を防ぐという意味で効果的である、という考えのもとこのような目標を掲げています。
カヤックのプロジェクトに合わせた活動
カヤックにはゲームからまちづくり、クライアントワークまで、幅広いプロジェクトがあります。 それぞれのプロジェクトに必要な信頼性担保の手法は、その特徴によって異なってきます。
また、各プロジェクト、特に自社サービスの技術要素の選択については、そのプロジェクトのリードエンジニアに委ねられています。 利用するプラットフォームやメインとして使用するプログラミング言語など、大枠についてはおおよそ固まっていますが、 それよりも詳細な部分については統一のルールはありません。
このような事情があるため、SREチームでは1から10までをサポートするフルスタックなものではなく、 必要とするものだけを部分的に選択できるツール・フレームワークを開発・導入すること目指しています。
具体的には以下のような活動を行っています。
- オペレーションを簡略化するためのデプロイツール整備
- 障害復旧速度を上げるための監視・開発サポート
- 陳腐化防止のための使用技術のアップグレードや移行
- プロジェクトによらない一般的な運用ノウハウの定型化
より詳細な説明については、今後の本ブログでの記事公開をお待ち下さい。
おわり
今年は「SREチームによる運用コスト削減」をテーマに、毎月1本程度の公開を予定しています。
システムの最適化・自動化により、金銭的な意味でのコストダウンはもちろん、 開発コストやオペレーションコストの削減についても紹介していく予定です。