APIのステータスチェックで気をつけること

APIを提供する多くのサービスにおいてステータスページを提供しています(AWS Service Health DashboardGitHub System StatusApps Status Dashboardなど)。特に企業向けにAPIを提供する際にはSLAが必要になりますので、外部から見られるステータスページの存在は大事です。

今回はそんなAPIのステータスチェックの仕組みを作る上での注意点をあげていきます。

1. DB操作を含めること

APIサーバに単にアクセスしてレスポンスを受け取るだけであれば、それはAPIというよりもHTTPサーバのステータスレベルのチェックになります。これでは殆ど意味がありません。

確実にDB操作を伴う操作を行うようにしましょう。それによりアプリケーションサーバ、DBサーバのステータスがチェックできます。なおファイルを保存したりする場合はその部分も動作チェックを行う必要があります。

2. 正しいエラー操作を行う

正常系だけのテストでは片手落ちです。400系、500系を含めた正しいエラーコードが返ってくるかどうかもきちんと確認しておきましょう。時々エラーステータスコードを変更したりすることがありますが、元々のエラーステータスを期待しているクライアントもあります(正常系ですが、200が201になるなど)。

APIのステータスチェックはブラックボックステストになりますので、正常系はもちろんのこと、エラー系についても網羅的にテストしておく必要があるでしょう。

3. データをクリーニングする

ステータスチェックはテストではありませんので、一般的に本番サーバ上で行われます。そのためステータスをチェックする際にデータを追加している場合は、それを元に戻してあげる必要があります。

登録したデータに対して削除処理を行うことで元の状態に戻るようにしておく必要があります。特にリアルタイムバッチ処理であったり、ファイルの保存が伴う場合にもきちんとデータが削除されるようにしましょう。その点においてRESTful APIであればDELETEメソッド時の処理として保証されるでしょう。

4. 認証を行う

DBを操作する場合と同様にAPIのステータスをチェックする際には認証を行うようにしましょう。できれば新規ユーザの作成からユーザアカウントの削除まで一貫してチェックできるのが良いでしょう。

認証の状態によってエラーが発生するというのはよくありがちです。特に本番環境のデータは予定していたものと異なる場合も多く、その結果としてAPIがエラーを起こすというのはよくあります。

5. レスポンスを測定する

ステータスは生死確認だけではありません。レスポンスについても測定し、閾値を越えるようであればアラートを出すようにしましょう。特にデータ量の増加に伴うレスポンス低下は最初には分からないエラー要因になりますので注意が必要です。

APIの場合、外部システムから定期的に多くのリクエストが発生します。一度待ちが発生すると、雪だるま式に積み重なって処理しきれなくなる可能性があります。トークンごとのアクセス制御も必要ですが、システムのレスポンスが適切にできているか(遅延が発生していないか)は常に注視しましょう。

6. 海外からのステータスもチェックする

インターネットはグローバルなサービスであり、国内限定のAPIでもない限りは海外からの利用においてもステータスのチェックが必要です。時々、特定の外国からアクセスできないといった問題が発生することがあります。もちろん多くの場合は諸外国側のネットワーク問題になります。

ステータスチェックを同じサーバ、ネットワーク内で行っても意味がないのと同様、なるべく離れたサーバから監視する必要があります。その際には日本、US、EUなど複数箇所からモニタリングできるようにしましょう。

7. APIが外部サービスにつながる部分も確実に、かつ慎重に

APIゲートウェイの場合、APIがさらに外部のAPIに接続して出力を加工していることがあります。そうした場合、自社のサーバは問題がなくとも、外部サーバのエラーによってAPIに問題が生じることがあります。

外部サービスへの過度の負荷は避けるべきですが、APIのステータスチェックを行う際には外部サービスも含めて確実に行っておきましょう。また、外部サービスがエラーになっても利用者に不具合が発生しないよう、あらかじめエラーステータスコードを設けておきましょう。


しっかりと構築されたシステムにおいてもエラーは発生するものです。Webブラウザからのアクセスであれば人が見た目で判断して復旧までアクセスを控えることができます。しかし自動化されたシステムにおいてはそういった機構が備わっていないことも多々あるようです。

予想外のエラーは利用者のシステムに思いもしなかったエラーを発生させる可能性があります。そうならないためにも日々の運用状況を適切に可視化するようにしましょう。

© NTT Communications Corporation All Rights Reserved.