Help us understand the problem. What is going on with this article?

外部サービスと連携するときのゆる心得

More than 1 year has passed since last update.

初めて外部サービスのAPIを使って自分のシステムと連携するとき、
慣れている人には当たり前だけど見落としがちなことをまとめてみます。

リクエスト・レスポンスのログをとる

普段、私たちはログの存在を忘れています。
必要になるのは、何か予期せぬことが起こったときです。

外部サービスへのリクエストについての問い合わせをする際には、
十中八九リクエストIDなどの情報が必要になります。

どこかのサービスと連携する時、そのサービスの全てを知ることはできません。
最低限「どんなリクエストを送り、何が返ってきた(あるいは返ってこなかった)」ということを
後からトレースできるようにしておきましょう。

ログローテーションは忘れずに

ログローテーションを適切に行なっておきましょう。
Disk Fullでログが書き込めなくなって処理が止まる...
なんてことは無いだろうと思っても意外と起こるものです。

タイムアウト時の挙動を決めておく

APIリクエストとは、いろんな理由で失敗するものです。
リクエスト側のサービスの問題の場合もあるし、API提供側の問題もあるし、
その間のネットワークの問題もあります。
エラーレスポンスが返ってくればいいですが、リクエストしたまま何も返ってこない
なんてことも時には起こります。

レスポンスは何秒まで待つのか、その後はどう処理するのか
といったことは、リクエスト側でポリシーをもっておくよいでしょう。

レファレンスにないレスポンスが返っても問題ないようにしておく

XMLで返ってくるはずなのに、とあるエラーだけはHTMLが返ってきたりとか
レファレンスのエラーコードのリストには乗っていないエラーコードが返ってきたとか、
そういうことも少なからずあります。
自分のサービス側で新しくリリースされたAPIの機能に追随していなかった、なんてこともあるかもしれません。
何が返ってきても、処理が中断しないような実装にしておくことが重要です。

リトライする

色々気をつけていても、理由がよく分からずリクエストが失敗することはあります。
HTTPステータスコードで500番台(サーバーエラー)が返ってきた場合などは、
リクエストの再試行(リトライ)を行なうと、リクエストの成功率が上がります。

exponential backoffのメモ

わからないことは聞く

どこまで情報が開示されていても、外部サービスはよそのサービスです。
中の人にしかわからないことだってあります。
聞ける窓口がある場合はさっさと聞いてみましょう。
どうしても情報が得られないときは「多分こうだろう」と見切りをつけることもありますが
不安要素はなるべく減らしたいものです。

終わりに

いかがでしたでしょうか。
リクエストする側のサービスの規模や性質によって、気をつける観点が変わってくるかもしれませんが、
大体上記のようなことを気をつけておくと、ストレスが少なく外部サービスとの連携ができるのではないかと思います。
それでは、楽しいAPIライフを。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away