1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

API Gatewayがないとどうなる?-Kong Gatewayで触ってみる-

1
Posted at

🌸はじめに

弊社ABIがKong社とパートナーシップを締結しました。
そのため、社内でKong API GatewayやKong AIなどといった言葉をよく耳にしますが
一体それって何をやっているの?という段階なので、
まずは、基礎であるAPI Gatewayについて
Kong Gatewayを最小限の構成で触ってみて理解できればなと思っています。

🌏API Gatewayがないとどうなるの?

APIをそのまま公開すると、誰でも叩ける、何回でも叩ける、プログラム(Bot)でも叩ける
といった状態が生まれてしまいます。
これでは、「誰がAPIを叩いているのかわからない」「大量のリクエストを防げない」
「想定外のコストや負荷が発生する」などの問題が、起こる可能性があります。

これらを防ぐためには、アプリケーション側で認証チェックや回数制限、
ログ出力といった処理を実装する必要があります。

しかし、APIを複数持つ場合、
これらの処理をAPIごとに個別に実装する必要があります。

...これはしんどい。

もしAPI Gatewayがなければ、すべて自前開発になり、工数は膨れ上がり
運用の大変さ、セキュリティリスクも高くなります。

参照:https://security.i-standard.jp/post/api-security-basics

🦍ここで登場するのがAPI Gateway

ここで登場するのがAPI Gatewayです
API GatewayはAPIの前に置く「共通の入り口」のイメージがわかりやすいと思います

APIを直接叩かせるのではなく、すべてのリクエストを一度 API Gateway に通します。

これにより、認証・制限・ログといった共通処理を
API Gateway 側に集約できます。

API Gatewayの代表的なものとして、AWS API Gateway、Azure APIMなどの
クラウドマネージド型や

Kong Gateway、Tyk,GraviteeなどのOSS型があります。
パートナーシップ締結をしている会社であること、手元の環境で基礎を学ぶことを理由に
高性能かつ拡張性がある「Kong Gateway」を題材に取り上げたいと思います。

公式HP:https://jp.konghq.com/

🪐最小構成で触ってみる

1.Kongの設定ファイル(Kong.yml)を作成

テスト用の転送先として httpbin.org を利用します。
/test というパスで受けたリクエストを、
httpbin.org にルーティングする設定を行います。

_format_version: "3.0"
services:
  - name: httpbin
    url: https://httpbin.org
    routes:
      - name: httpbin-route
        paths:
          - /test

2.Kong Gatewayを起動
以下のコマンドでKong GatewayをDBなしのモードで起動し、
KongがAPIの入口として動作することを最小構成で確認してみます。
Kongは起動時にkong.ymlを読み込み、動作します。

docker run -d \
  --name kong \
  -e KONG_DATABASE=off \
  -e KONG_DECLARATIVE_CONFIG=/kong/kong.yml \
  -v "./kong.yml:/kong/kong.yml" \
  -p 8000:8000 \
  kong/kong-gateway

3.Kong経由でAPIを呼ぶ
Kongを通してAPIを叩いてみます

curl http://localhost:8000/test/get

返ってきたレスポンスは以下の通りです

{
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "X-Forwarded-Host": "localhost",
    "X-Forwarded-Path": "/test/get",
    "X-Forwarded-Prefix": "/test",
    "X-Kong-Request-Id": "xxxxxx"
  },
  "origin": "172.17.0.1, xxx.xxx.xxx.xxx"
}

localhost:8000にアクセスしたところ、Kongが/testを検知、
httpbin.orgにリクエストを転送して、レスポンスがKong経由で返ってくるという
KongがAPIの入口として、機能していることが確認できました!

🏰まとめ

今回やったことはとてもシンプルですが
Kong GatewayをAPIの前段に置く、
ルーティングを定義する
だけで、APIの入口を一元管理できることが分かりました。

今後は、この基礎の上に積み重なる、認証、レート制限などの学習をしたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?