血と汗となみだを流す

個人の思ったこと、やったことの吐き出し口です。

インフラエンジニアのためのAPI Gateway入門〜API Gatewayがわからないからわかったところだけ伝える〜

この記事は #インフラ勉強会 Advent Calendar 19日目(12/19)の記事です!

adventar.org

概要

  • AWSのマネージドサービス「API Gateway」についての記事になります。
  • サービスの内容について書こうと思いましたが思った以上に奥が深く、すべてを把握することが出来なかったため、「どんなものか」をふわっと伝える内容になります。
  • ※完全に筆者の主観で書いているため、認識の齟齬や間違いが含まれている可能性がありますのでご了承ください。

内容

  • API Gatewayの使い所
  • 他のマネージドサービスと違うところ

API Gatewayの公式ページ


API Gatewayの使い所

  • Lambdaの前段として
    • AWSサービスと組み合わせて使う場合は主にLambdaとの組み合わせになるかと思います
    • LambdaはREST APIのような形式で実行できないため、Lambdaを実行するためのAPIとして使われることが多いようです
      • 2018年11月のバージョンアップで、ALB(Application Load Balancer)のbackendにLambdaが指定できるようになりました
      • 既存のendpointがALBで一部のPATHのみLambda、のようなことができるようになりました
  • APIの抽象化として
  • backendのリファクタリングをしたいが、APIの呼び元からの実行形式を変えたくない場合など、API Gatewayを挟んで抽象化しておくことができます
  • レスポンスのキャッシュ機能
    • backendからのレスポンスをAPI Gatewayがキャッシュすることができるため、backendの負荷を減らすとともに応答速度の向上が見込めます
    • ただしキャッシュするデータ量によってコミット料金が掛かるのでキャッシュするデータと料金の兼ね合いになるかと思います

他のマネージドサービスと違うところ

  • バージョン管理と環境別デプロイ
    • 「ステージ」という機能があり、API Gateway単体でバージョン管理や環境別デプロイが実施できます
    • AWSアカウントで環境を分けてたりする場合、API Gatewayだけどうしたもんかと悩むなど・・・
  • 性能の制限を設定できる
  • APIキー毎にキャパシティの制限が掛けられます。
    • 例えば外部に提供するAPIを、無料/有料で使用できるキャパシティを変えるなど
    • ↑実際やっているという例を聞いたこと無いけど・・・
  • SDKの自動生成機能
  • 言語固有の方法でAPIを実行するときのSDKを生成する機能があります。
  • 一部のメソッドで対応していない言語有り(ANYメソッドでRubyのSDKは出力できない)

まとめ

  • SDK周りがまだ不安定ですが、REST APIとして使う分にはとても良い
  • APIを提供する機能だけでなく、横も縦も幅広い機能です。正直全部理解できる気がしない。がんばる
プライバシーポリシー