microCMS

microcms-js-sdkにリトライオプションが追加されました

シンハラ

こんにちは、microCMSでカスタマーエンジニアとして働いているシンハラです。
このたびmicroCMSのJavaScriptのSDKであるmicrocms-js-sdk に、リトライオプションを追加されましたので、お知らせします(ver 2.4.0)。

概要

クライアント生成時にretry: trueオプションを付与することで、APIがエラーが返却された際に、自動的にリトライを行うことができます。

const client = createClient({
  serviceDomain: "YOUR_DOMAIN", 
  apiKey: "YOUR_API_KEY",
  retry: true
});


現在の仕様ですと、最大2回までリトライを行います。

リトライにあたっては、 Exponential Backoffというアルゴリズムを採用しているため、リトライが分散して行われるようになっています。

  • 1回目のリトライ: 1回目のリクエスト失敗から、5秒〜10秒のディレイ
  • 2回目のリトライ: 2回目のリクエスト失敗から、10秒〜20秒のディレイ


また404 Not Foundのような、リトライをしても解決されない可能性が高いステータスコードについては、リトライは行われません。

詳細については、こちらのプルリクエストをご参照ください。

課題と解決策

microCMSのAPIはサーバレスアーキテクチャを採用し、大量のリクエストにも対応できる構成となっていますが、短時間に極度にリクエストが集中した際に、まれに500番台のエラーレスポンスが返却されることがあります。

その他にもmicroCMSの仕様として、GET APIの呼び出し回数が1秒あたり60回を超えた場合、429 Too Many Requestsのステータスコードが返却されるようになっています(制限事項)。SSGのようなアーキテクチャを採用し並行してビルドを行う際に、意図せずこちらの制約に抵触してしまう場合がありました。

エラーが発生した場合のデメリットとしては、CSR/SSRの場合、該当のリクエストを行ったユーザーはページのレンダリングに失敗します。またSSGの場合だと、ビルドプロセス全体が終了してしまうケースがほとんどですので、エラーが発生した際は再ビルドを行う必要がありました。

これらの課題について、リトライオプションを有効化することによって、正常なレスポンスを取得できる可能性が高まります。特にSSGの場合だと、再ビルドを回避できる可能性が高まるため、より効率的なデプロイを実施が可能となります。

おわりに

今回の仕様追加に関して、フィードバックがございましたら、画面右下のチャット欄よりお気軽にご連絡ください!

まずは、無料で試してみましょう。

APIベースの日本製ヘッドレスCMS「microCMS」を使えば、 ものの数分でAPIの作成ができます。

microCMSを無料で始める

microCMSについてお問い合わせ

初期費用無料・14日間の無料トライアル付き。ご不明な点はお気軽にお問い合わせください。

お問い合わせ

microCMS公式アカウント

microCMSは各公式アカウントで最新情報をお届けしています。
フォローよろしくお願いします。

  • X
  • Discord
  • github

ABOUT ME

シンハラ
microCMSでカスタマーエンジニアを担当しています。 プライベートではNext.js / Nuxt.js とHeadless CMSを組み合わせた開発をメインで行なっています👨‍💻