Hyperswitchは、Stripe・Adyen・Braintreeなど120以上の決済プロバイダーに単一のAPIで接続できる、Rust製のオープンソース決済オーケストレーション基盤です。決済ルーティング、カードやトークンの保管庫、加盟店向けの収益回復・照合機能をモジュールとして提供します。コードはCargoワークスペース構成で、`router`と`scheduler`という2つの実行バイナリに分かれています。
コア処理は、crates配下に数十個あるCargoクレートへ分割されています。Cargo.tomlのmembersは「crates/*」です。これによりワークスペース全体が1つのRustプロジェクトとしてビルドされます。Dockerfileは2段階構成です。`rust:trixie`イメージ内でcargo buildを実行したあと、実行用の`debian:trixie`イメージに`router`または`scheduler`バイナリだけをコピーします。`scheduler`バイナリはSCHEDULER_FLOWという引数でconsumer役とproducer役に分かれ、非同期ジョブ処理用のプロセストラッカーとして動きます。決済処理の中核であるrouterは、actix-web基盤のAPIサーバーです。api_modelsやdiesel_modelsなど共通クレート経由でPostgreSQLにアクセスします。ルーティング判断は、決済処理とは別立てのdecision-engine API群が担います。ゲートウェイごとの成功率やコストに基づき、最適なPSPを選ぶ仕組みです。分析機能はanalyticsクレートが担当します。AnalyticsProvider抽象を介したClickHouseやPostgreSQLへのクエリ結果が、メトリクスとして集計される仕組みです。`.clippy.toml`には、時刻取得やUUID生成の直接呼び出しを禁止するdisallowed-methods設定があります。common_utils経由の処理に統一し、リプレイ可能な実行ログを保証する設計です。v1とv2というCargo featureでAPIバージョンを切り替えられる点もクレート定義から確認できます。
- STEP 01
git clone後にscripts/setup.shを実行すると、DockerまたはPodmanの有無が検出されます。続けてStandard・Full・Minimalのいずれかを選ぶプロンプトが表示されます。
- STEP 02
選択後はdocker composeで複数のコンテナが起動します。routerクレートはlto有効かつcodegen-units=1のreleaseプロファイルを使うため、初回ビルドには相当な時間がかかります。
- STEP 03
起動完了後にControl CenterのURLがターミナルへ表示されます。ブラウザからログインし、決済プロバイダーの接続情報を登録できます。
- STEP 04
/paymentsエンドポイントへAPIリクエストを送ると、登録済みのPSPに向けたテスト決済がrouter経由で実行されます。
- STEP 05
Fullプロファイルを選ぶと、schedulerバイナリや監視系のコンテナも起動します。analyticsクレートが提供する集計画面も確認できる状態になります。
手元に残るのは、router APIサーバーとschedulerジョブ処理、PostgreSQLなどを含むDocker構成一式です。加えてブラウザで操作できるControl Centerダッシュボードも使えるようになります。登録したテスト用PSPへ決済リクエストを送ると、成功または失敗のレスポンスが返ってくる状態になります。
releaseプロファイルはlto有効かつcodegen-units=1のため、初回ビルドはマシン性能によって数十分単位の時間を要します。
Stripe・Adyenなど実際のPSP連携を試すには、各社の有効なAPIキーが別途必要です。素のquickstartだけでは、決済体験の全体像までは確認しきれません。
analyticsクレートが使うClickHouseやopensearchは、featureフラグ付きの任意依存です。そのためStandardプロファイルの範囲では、分析ダッシュボードの一部が動かない可能性があります。
crates配下は数十個のクレートに分かれた大規模なワークスペースのため、コード全体を把握するには相応の時間が必要です。
自社で決済PSPへの接続やルーティングを内製したいエンジニアリングチームに向いています。Cargo.tomlの厳格なclippy設定やDockerfileの多段ビルド、CIワークフロー群の充実から、実運用を意識した設計であることはソース自体から確認できます。ただしPCI準拠などの監査要件は、設計意図の確認だけでなく自組織での検証が別途必要です。