新卒エンジニアが、社内で統一利用されるAPIでSLIの計測をして得られた知見
こんにちは、新卒1年目のイッシーです。
ナビタイムジャパンの全サービスで共通利用するAPI基盤の開発をするプロジェクトに所属しています。
本記事のタイトルとなっている、社内で統一利用されるAPIとは、ナビタイムジャパンの様々なサービス(フロントエンド)とバックエンドとを結ぶAPI(以下基盤API)を表しています。
今回は、新卒1年目エンジニアが基盤APIのSLIの計測により得られた知見などを紹介します。
SLIとは
まず、今回の記事を読む上で必要な知識となるSLIについて説明します。
SLIは Service Level Indicators の略で、特定のサービスの稼働状況を数値化した指標です。
具体的な稼働状況として以下のような要素が挙げられます。
可用性
主に稼働率
エラー率
APIのレスポンスタイム
etc…
本記事では主に稼働率の部分について話を進めていきます。
当社では稼働率そのものは自動的に集計されていて、それを定期的に確認し、しきい値を超えて悪化した時だけ調査を行うという流れになっています。
稼働率低下の原因調査を行うにあたって感じた課題
平常業務との並行
冒頭にも書いたとおり、私は全社で使われるサービスの基盤API開発を行っているプロジェクトに所属しているため、普段は開発を主とした業務を行っています。
また、SLI測定は定期的に行っているため、普段の業務と並行し継続して調査していくことが必要です。
さらに、私は新卒1年目のため普段の業務が問題なくスムーズにこなせる状況という訳ではありませんでした。
そのため、普段の業務とSLI測定に使う時間を区別していく必要がありました。具体的にはカレンダーに調査の時間を予めしっかり入れておくことで、平常業務にも支障が出ないように日々の仕事に携わっていきました。
あらゆるサービスに対しての知識
ナビタイムジャパンでは数多くのサービスが提供されていることは皆さんご存知かと思います。そのような様々なサービスから利用されているAPIに対してSLI測定をするため、当然サービスによってリクエストの種類は様々なものとなっています。(以下画像内のサービスはごく一部)
SLI測定をスムーズに行うためには、各サービスでどのような種類のリクエストが多いのかをある程度把握する必要があります。
SLI測定で検知した事例
次に、実際にSLI測定を行う中で検知した2つの事例について説明します。
稼働率の悪化
1つ目は特定サービスに対する稼働率が悪化した事例についてです。
基本的に稼働率がしきい値を下回った場合に調査の対象となっています。しかし、平常時にはこの数値を下回ることはほとんどないため、私としてはこれが初めての調査になりました。
調査の進め方としては前週分(正常だった時)と比較して、どのリクエストがどれほど多くエラーになっているのかを突き止めるところからでした。
上記画像のようにスプレッドシートに前週比を算出して、そこから問題のあるリクエスト及び原因の特定を進めていきました。
調査を進める中で稼働率悪化が検知された理由が、サービスのバックエンドが元々稼働率を調査していなかったAPIから基盤APIに移行したことが要因
だということが分かりました。
また、元々のAPIの稼働率が低かった原因は、経路探索リクエストやデータにありました。改善対応は順次進めています。
リクエスト数の急激な増加
2つ目は特定サービスからのリクエスト数が急激に増えた事例についてです。
今回検知した事例では、そのサービスからのリクエスト数が前日比で約1.7倍の増加となっていました。
その日はちょうど都内でも積雪があった日で、雪が降ると移動に慎重になりサービスを利用する人も増えるため、リクエスト数増加につながったと考えていました。
しかし、深掘りしていくと結果的に別の要因も関わっていました。それは、特定のIPから特定のサービスに対してかなりのリクエストがあることがわかりました。定期的にSLIをチェックしていたことで平常な状態ではないことを検知して、具体的な原因解明へと繋げることができました。
調査によって得られた知見
自社サービスへの理解
私が入社してから約1年が立ちましたが、サービスによってはほとんど知識を持っていないものも多くあります。しかし、SLI測定を行うことでそのサービスでどのような種類のリクエストが多いかを理解することができるようになり、少しずつサービスへの理解も深まってきました。
基盤APIということもあり、ほぼ全てのサービスからリクエストが来ているため調査への責任もその分大きく感じています。
日々の業務に活かせそうなこと
SLI測定を通して今後の業務に活かせそうな部分として、自力で課題となる点を明確にして原因解決まで移すための課題解決力です。
これまでの日々の業務では、問題の根本となる部分を探すという経験はあまり多くはありませんでした。
SLI測定で調査が必要となった場合には、問題に対する具体的なアクションやどのような工程・期間で進めるかについても決める必要があるため、課題解決までの一連の流れを実行に移すこととなり、何が足りていないかを知るきっかけにもなっています。
最後に
SLIを定期的にウォッチし続けることで、平常時とそうでない時との違いを明確にすることができます。これにより、事態が悪化する前に検知することや問題があった後の素早い対応に繋がります。この記事を読んで、バックエンドAPIのSLI調査に少しでも役に立つことができれば幸いです。