
こんにちは。
troccoのSRE兼エンジニア兼CSを担当しております百々と申します。
前回は「CS経験0のエンジニアがCSチームを立ち上げるまで」というタイトルでCSチームの立ち上げの話をさせていただきましたが、実はCSチームが生まれたタイミングとほぼ同じくらいにSREチームも立ち上がりました。本日はSREチームの取り組みの概要をご説明出来ればと思います。
概要
まずtroccoの特色としましては分析基盤構築の自動化が挙げられます。ストレージやDB、クラウドアプリケーションなど様々なデータソースと連携しデータの転送・加工を行っております。データの転送や加工については1つ1つの処理をジョブとして管理しておりまして、ジョブ基盤はkubernetes上で運用しております。
troccoがそういった特色を持つ中でSREチームは様々な施策行っております。本日は以下の3つをご紹介させてください。(セキュリティやパフォーマンスなど他にも様々取り組みを行っておりますが、そちらについてはまた別のタイミングでさせていただければと思います。)
- 稼働状況見える化
- テスト充実化
- PDCAを回す
稼働状況見える化
troccoの稼働状況を見える化としては「アプリケーション側」と「インフラ側」の2つ軸から行っております。
「アプリケーション側」の可視化はredashにより行ってます。「普段はうまくいくのにエラーになっているもの」を観点に可視化・アラート化するものを設定しています。
以下はredashのダッシュボードです。
アラートはSlackで実施しています。
「インフラ側」の可視化はnew relicを使っております。ジョブ基盤とAPMのメトリクスからそれぞれNew Relicのダッシュボードの機能を用いて可視化を行っております。
以下はジョブ基盤であるk8sのメトリクスを可視化したものです。これらにはそれぞれアラートも設定しております。
以下はAPMのメトリクスを用いたものです。CSのブログでもご紹介しましたが、カスタムメトリクスを利用することでクライアント毎に指標をだすことも可能となっております。また、上記同様に各項目にはアラートを設定しております。
テスト充実化
普段の開発において単体テストや結合テストはもちろん実施しておりますが、一方でtroccoの性質上、様々なデータソースとの連携が必須となるためテストケースが膨大になります。
そこで注力ポイントとしてインターン生や新卒メンバーが中心となってデータソースに特化したテストを実施しております。
以下のようなテスト観点をまとめた上でデシジョンテーブルを作成し、テストケースの決定とテストデータ作成・テスト実施を行うといった形です。
そういったテストを実施することで特殊なケースにおける不具合や特殊な環境下における不具合などを事前に検知し優先度を決めた上で対応を行うという動きが出来てきております。
ストレージ系・データベース系のデータソーステストを現在は実施しておりまして、その次にはクラウドアプリケーション(SalesforceやKintoneなど)のテストを進めます。こちらについては様々なケースを網羅するためにMockサーバをもとにしたテストを行っていく予定です。
PDCAを回す
troccoチームではtroccoのさらなる品質向上を目的とした振り返りを週次で行っております。まずは先述した稼働状況の見える化を通して、以下の観点でNEXT ACTIONを決めて改善を進めております。
- 運用の効率化・自動化
- アプリケーション観点での品質向上
- 単体テストなど自動テストのブラッシュアップ(テスト観点の見直しなど)
特にパフォーマンス観点では稼働状況が見える化されたことによって具体的なボトルネックが分かるようになったので今期では非常に多くの改善を行うことが出来ました。
また、これらの活動は「アプリケーション観点での品質向上」を起点にしてDX(Developer Experience)の向上にも生かされています。troccoの品質向上にとどまらず我々のエンジニアリングワークの質を向上させるというものです。
たとえばgit-pr-release を導入することでリリースの管理工数の削減やリリース速度の向上を行う事ができました。
また金曜日のランチの時間を利用してポストモーテム読書会を行っております。
発生したインシデントとその対応内容から運用効率化(自動化など)できるところを探るであったりアプリケーションの品質向上ネタの掘り起こしなどをおこなっております。
運用効率化の取り組みの例としましては、調査効率化のためにチャットボットを開発いたしました。なにか調査すべき内容があったときにはこのボットに問い合わせることでおおよその内容は把握することが出来ます。(もちろんセキュリティの観点から秘匿情報をマスクするなどの処理も加えております。)
こういった取り組みを通じてtroccoの品質を日々向上させております。
最後に
現在のtroccoのSREチームは各メンバーがCSチームとSREチームを掛け持ちしながら活動しております。サービスの質は根幹を担うものですのでゆくゆくは独立したチームとして活動できる状態としていきたいと考えており、そのためにはどうしても仲間が必要です。
この記事を読んで我々の取り組みに興味を持って頂けた方はぜひご連絡ください!(採用関係なく単純に興味を持ったという方もお気軽にご連絡いただけると幸いです。)
最後までお読みいただきありがとうございました!それでは!