⌚ 2021/11/ 8 (Mon) 🔄 2024/3/20 (Wed)
【徹底解説】Amazon API Gatewayの落とし穴!使用時の注意点とは?
最近はバックエンド処理をAPIとして提供することが多くなりました。
私が以前参画していたプロジェクトでは、Spring BootでREST APIを実装し、APIの定義はOpenAPI(旧:Swagger)で行っていました。
環境はAWS(Amazon Web Service)を使用していたので、AWSが提供するAPI Gatewayというサービスを使用することになりました。
Amazon API Gateway(以降、API Gateway)を使用するのは初めてだったのですが、開発を進める中で思わぬ落とし穴に嵌りました。
では、いったいどのような落とし穴に嵌ったのか?を以下で紹介します。
この記事を読むと、Amazon API Gatewayを使用する際の注意点を実例を元に学ぶことができます。
-
Amazon API Gatewayを初めて使用する方 -
Amazon API Gateway使用時の注意点を知りたい方 -
システム開発エンジニアの方
▼この記事を書いた人
サン・エム・システム㈱に入社して21年目になりました、老眼と四十肩に苦しむおっさんSEです。
たまにプロジェクトマネージメントなどもやりますが、システムアーキテクトとしても日々修行に励んでいます。
SREのようなことをやったり、アジャイルの勉強したりと、時代に置いて行かれないように頑張ってます。
1.使用時の注意点①: タイムアウト
API Gatewayには「最大統合タイムアウト」という制約があります。
下の図で簡単に説明すると、API GatewayからSpring BootのAPIをリクエストし、レスポンスが返ってくるまでの時間が29秒を超えると、タイムアウトが発生します。
設定可能な最大値は29秒です。
この制約には設計段階で気が付くことが出来たので、1つのAPIの処理が29秒を超えることがないように、処理が重そうな機能は複数のAPIに分割するなどして工夫しましたが、複雑なSQLを実行して一覧情報を取得する機能は1つのAPIとして残さざるを得ませんでした。 心配を抱えつつAWS環境でテストしてみると、一覧情報を取得するAPIはタイムアウトを連発・・・
処理時間を29秒以内に収めるべく、DBやSQLのチューニングを行うことになりました。
既存システムの改修ということもあり、DBのテーブル構成は変えられないという制約もありましたが、SQLの実行計画と睨めっこをしながらトライアンドエラーを繰り返し、何とかタイムアウトが発生しないようにすることができました。
2.使用時の注意点②: サイズオーバー
あるユーザーでログインした場合のみエラーとなる現象が発生しました。
原因を調べると、HTTPヘッダーのサイズオーバーが原因でした。
APIから別のAPIを呼び出す際に、ログインユーザー情報をHTTPヘッダーにセットして渡す仕様にしていたのですが、
そのユーザーのみ想定外の量の情報が登録されており、API Gatewayの「リクエスト行とヘッダー値の合計サイズ」の上限10,240バイトを超えていました。
HTTPヘッダーのサイズに上限が設定されているのはよくあることで、かつ「10,240バイト」は一般的に見ても十分なサイズと言えます。
これは正直なところ落とし穴というよりも、設計時の考慮漏れが原因ですね。
こういったところも考慮に入れて設計しないとダメ、という良い教訓になりました。
3. まとめと関連リンク
最近はクラウドのサービスを最大限に利用してシステム開発することが求められるようになっています。
俗にいう、クラウドネイティブですね。
パブリッククラウドが提供するサービスの内容をしっかりと把握して、それを踏まえたシステム設計を行う力が求められているのだなと感じます。
3-1.Amazon API Gateway公式リンク
Amazon API公式サイト
API Gatewayの仕組みやAPIのタイプ、Amazon API Gateway の開始方法などの情報がありますので、気になる方は是非ご覧ください。
3-2.パブリッククラウド構築サービス~Onestop Cloud~
パブリッククラウド構築サービス Onestop Cloud
サン・エム・システム㈱では、AWS(Amazon Web Service)のセレクト コンサルティングパートナーとして認定されており、
AWSやAzureのクラウドのシステム構築・移行から、その後の運用保守までをワンストップで提供しております。
クラウドに関してお悩みの方は、上記リンクよりお気軽にご相談ください!
また、クラウド構築の実例を詳しく知りたい方はこちらから資料請求が可能です。
クラウドの用途や導入するメリットなどがわかりやすくまとめられております。