☁️

Cloudflare Workers で構築する超高速 BIN API

に公開

Cloudflare Workers で構築する超高速 BIN API

本記事では、Cloudflare Workers を用いて
「JP BIN Lookup」のような
BIN(Bank Identification Number)検索API
“超高速・低コスト・高可用性” で構築する方法を紹介します。

MVNO事業やEC事業では、
クレジットカードのBIN情報を利用することで

  • 決済の不正検知
  • 海外発行カードのフィルタリング
  • カードブランド/プリペイド判定
  • コスト最適化(手数料の理解)

などに活用でき、
高速応答のBIN API は非常に価値が高いです。

Cloudflare Workersを使えば、
これを サーバーレス・グローバル・ほぼ0円 で作れます。


なぜ Cloudflare Workers なのか?

BIN API の特徴は以下です。

  • とにかく高速(100〜200ms では遅い。10〜30ms で返したい)
  • 世界中から叩かれる
  • DBアクセスのたびに遅くなる
  • スケールするとコストが跳ねる

Cloudflare Workers は、
これらの課題に対して 最強クラスの選択肢 です。

✨ Cloudflare Workers のメリット

  • グローバル50+リージョンで自動デプロイ
  • 99% キャッシュで動くため API が爆速
  • K/V や D1 DB を組み合わせてサーバーレス構築
  • 月額 ほぼ0円(無料枠が大きい)

Workers は V8 Isolate 上で稼働するため、
「サーバーを起動する」という概念がなく
常に即時レスポンス できるのが最大の強みです。


アーキテクチャ概要

本記事で作る構成はこれ。

[Client] → [Cloudflare Worker] → [KV / D1] → BINデータ返却
               ↑
          Cache Everything
  • Worker が即時レスポンス
  • BIN データは KV もしくは D1 Database に保存
  • キャッシュルールを工夫して超高速化

Step 1:Cloudflare Pages + Workers の準備

今回は API 部分を Workers に、
ドキュメントやフロント(もしあれば)を Pages に置く構成にします。

1. Workers の作成

$ npm create cloudflare@latest
  • TypeScript テンプレートがおすすめ
  • Wrangler(CLI)が自動的にセットアップされる

Step 2:BIN データを格納する

選択肢は2つあります。

✔️ KV ストア

シンプルな key-value。
BIN(6桁)→ JSON を返す構造ならこれで十分。

例:

BIN: 457173 → {"brand": "visa", "type": "credit", ...}

✔️ D1

SQLite ベースの Cloudflare ネイティブDB。
よりリッチなクエリをしたい場合はこちら。


Step 3:Worker の実装(最小版)

以下は「KV に置いた BIN 情報を返す最小API」です。

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const bin = url.pathname.replace("/", "");

    if (!/^\d{6,8}$/.test(bin)) {
      return new Response(JSON.stringify({ error: "Invalid BIN" }), {
        status: 400,
        headers: { "Content-Type": "application/json" },
      });
    }

    const result = await env.BIN_KV.get(bin, "json");

    if (!result) {
      return new Response(JSON.stringify({ error: "Not found" }), {
        status: 404,
        headers: { "Content-Type": "application/json" },
      });
    }

    return new Response(JSON.stringify(result), {
      headers: {
        "Content-Type": "application/json",
        "Cache-Control": "public, max-age=86400",
      },
    });
  },
};

Step 4:Wrangler でデプロイ

$ wrangler deploy

数秒でグローバル展開完了!


Step 5:Cloudflare のキャッシュ設定

API をさらに高速化するために

  • クエリストリング無視
  • Cache Everything
  • Edge TTL 1日〜7日

などを Page Rules や Worker(fetch & cache API)で実装します。

BIN データは更新頻度が低いため、
キャッシュ戦略こそ性能を決める最重要ポイント です。


応答速度のイメージ

Workers + KV + Edge Cache の組み合わせでは

  • 国内:5〜15ms
  • アジア圏:10〜25ms
  • 欧米:20〜50ms

レベルのレスポンスが期待できます。


料金イメージ

サービス 料金 備考
Workers 無料枠 10万req/月 超過も格安
KV 1GB/月 0.5ドル BINデータは数MB
D1 開発中は無料 将来の商用プラン次第
Pages 無料 API連携も可能

BIN API ならほぼ無料で運用できます


まとめ

Cloudflare Workers を使うと、
BIN Lookup API を

  • 爆速
  • 安定
  • 低コスト
  • グローバル

に構築できます。

MVNO・EC・フィンテック系サービスでは
不正利用対策としても非常に強力な仕組みなので、
Workers と相性抜群です。


次回予告

次の記事では、

「日本のデビット・プリペイド BIN の構造を徹底解説」

を詳しく解説します。

https://jpbinlookup.com/

Discussion