本稿はJCB Advent Calendar 2025の12月10日の記事です。
JCBデジタルソリューション開発部 JCB Link(ジェーシービーリンク)チーム、プロダクトオーナーの岩本です。
世の中のキャッシュレス化の流れはもちろん、皆様の積極的なカード利用により日々膨大な売上データ、振込データが発生しております。
皆様の日頃のご愛顧、心より感謝申し上げます。
そしてぜひ今後とも積極的なカード利用をお願いしたい一方、 システム管理者として気になってくるのはデータ蓄積による基盤利用料です。
本記事ではJCB LinkでのTTLを用いたデータ削除によるコスト削減の取り組みについて紹介します。
JCB Linkとは
JCB Linkとは加盟店様の業務をサポートするオンラインサービスで、振込・売上の情報や契約の内容をオンラインでいつでも確認・ダウンロード(PDFやCSV)ができます。
各情報は最長で過去24ヶ月分の照会が可能です。(この後、重要な情報です)
2023年7月のサービス開始より日々数億件発生する売上・振込データを蓄積しています。
発生した課題
JCB LinkはマルチテナントプラットフォームであるJDEP上に構築をしています。
そして気づけば断トツでJCB LinkのSpanner利用料が高くなっていました。
当然、サービス提供にあたり必要なデータを保管しており仕方ない部分はあるのですが
「打てる手は打つべし!」
とプロダクトオーナー、バックエンドチームが動き出しました。
実は想定通り!アジャイル開発を活かした作戦
JCB LinkのPO陣、実はこの課題が発生することは認識をしておりました。
JCB Linkはアジャイル開発を採用しており、加盟店の皆様へ少しでも早くサービス提供をするため下記の開発優先順を定めておりました。
- 振込・売上機能の提供(ユーザーにとって重要!)
- 契約情報・店舗情報の提供
- 閲覧期間超過データ削除(今回の取組み。ユーザーにとっては価値の見えない部分)
※実際にはもう少し細かく機能アップデートしており、今後も機能追加予定です!
つまり、
まずはユーザーの方々への価値提供ができるサービス開発を優先。
そして不要データが多く発生する時期までにデータ削除を開発する。
というアジャイル開発の特徴を活かしたリリース戦略でした。
TTLを用いたデータ削除
データ削除にはSpannerのTTL機能を利用しました。
TTLの仕組みをものすごく簡単に説明します。
- テーブル定義で有効期限を決定するタイムスタンプ列と、有効期限(例えば7日間など)を設定します。
- システムがバックグラウンドで期限切れの行を検知し、自動的に非同期で削除処理を実行します。(72h以内に順次削除)
そして実際の実装イメージです。
削除を判別するタイムスタンプはよくテーブルで定義する「新規登録タイムスタンプ」や「更新タイムスタンプ」でももちろん問題ないですが、JCB Linkは複雑な条件でレコードが更新される仕様上、
TTL削除用のタイムスタンプを設けて削除する方針を取りました。

TTL導入にも障壁が
実装イメージだけ見ると簡単そうですが、実は様々な考慮が必要でした。
※その他、削除されたデータが正しいかをどう担保するかも障壁になりました(これはかなりJCBLinkの仕組みが複雑なので今回の記事では割愛)
大幅な基盤利用料削減を達成
最終的に様々な障壁を乗り越え、無事にTTLを導入し閲覧期間超過データの削除が実現できました。
過去分データ蓄積分まで考慮すると、年間1,000万円を超える費用削減を達成しました!
しかし実はまだ課題は残っております。
TTLは「とあるタイミングからX日経過したデータの削除」には最適なのですが、
時限トリガー以外の複雑な条件での削除が困難です。
JCB Linkでも複数世代が溜まらないと削除できないデータ(マスタ系テーブルなど)などはバッチ化をして、今後も不要データ削除による保守費削減に取り組む予定です。
おわりに
今回は大量データによる基盤利用料増加への対応としてTTLを導入した経験を記事にさせていただきました。
システム特性によって課題点・削減効果も変わりますが、少しでも同じ悩みをもつ方々の参考になると嬉しいです。
今後も加盟店の皆様への新たな価値提供はもちろん、プロダクトオーナーとして保守性もしっかりと検討していきたいと思います。
そしてぜひ皆様にはデータ量を増やしてさらに私の頭を悩ませるべく、JCBカードのさらなるご利用をお待ちしております!
最後に、JCBでは我々と一緒に働きたいという人材を募集しています。 詳しい募集要項等については採用ページをご覧下さい。