ソフトバンク・ペイメント・サービスについて
ソフトバンク・ペイメント・サービスは、ソフトバンクグループの決済分野における中核事業を担っている。このうち決済代行分野では、ECサイト(加盟店)向けに、決済画面やAPIを提供し、年間2兆1,949億円、2億4,000万件超のトランザクションがある(2016年度)。クレジットカード決済に加えて、携帯キャリア、コンビニ、プリペイドカード、口座振替、ポイント支払いなどを、一括導入することが可能で、開発や手続きのコストを抑えることができ、約8万件の導入実績がある。
オンライン決済サービスの可視化 課題:障害発生時の速やかな情報共有
システムに障害が発生するとメールやSlackで通知され、システム部門を通じて、営業部門・営業部門から加盟店に報告される。しかしながら、システム部門は、原因の特定や復旧、社内での周知を優先し、営業・業務部門が必要とする「どの加盟店で、いつから、どの程度の影響があったのか」といった情報をタイムリーに提供できていなかった。
Kibanaのダッシュボードで、サービス全体の状況をリアルタイムで可視化 トランザクションデータはRDBMSに格納されている。この更新差分を、Logstashで1分毎に取得し、Elasticsearchに投入した。
構築にあたり「誰でも、いつでも、どこでも、簡単に」ダッシュボードが確認できることを意識しました
ダッシュボードでは、成功した決済はグリーン、失敗したものはレッド。決済手段ごとにOK/NGの比率の推移を俯瞰することができる。
「1. グリーンが急激に少なくなったら要注意。2. レッドが急激に多くなったら要注意。」
この二つのシンプルなルールによって、直感的にわかるようになった。
また、決済方法別、加盟店別のトランザクションにドリルダウンすることができる。例えば、クレジッドカードのトランザクションが増えているときに、その加盟店を特定し、売れている商品名をインタラクティブに知ることができる。
さらに、クレジットカードの与信の状況もわかる。どの加盟店からのリクエストか、「カード番号誤り」「有効期限誤り」「取り扱い不可」といったもののうち、どのエラーコードなのか、ダッシュボードで確認することができる。パイチャートからは、それが何人のユーザからのものか、何件のクレジットカード番号が含まれるのかがわかり、不正の状況を判断するのを助ける。
これらのダッシュボードは、システム部門付近のモニターに常時掲示している。誰もが、いつでも、何となく見るといった状況を作り、異常に気がつくことができようになった。
また、他のチームからこれを応用したいという要望を受けるようにもなった。
エンジニアがシステムからアラートを受信した場合など、職場以外でダッシュボードを見たいという要望があるが、スマートフォンでKibanaを操作するのは容易ではない。そこで、Jenkinsで5分間隔でSeleniumを使ってダッシュボードのスクリーンショットを取得し、特定のSlackチャネルに投稿している。これによって、エンジニアはSlackにアクセスできれば、いつでも最新のダッシュボードの状態を見ることができる。
この取り組みの効果
- 誰でも、いつでも、どこでも、簡単に、サービスの状況を把握できるようになった
- 障害以外でも、爆売れ、不正利用といった、加盟店の変化に気がつくようになった
- エンジニアの決済トランザクションへの関心が高まった
Machine Learningの導入による不正利用検知
2017年7月にMachine Learningを試験的に導入した。これは、簡単に使えるのか、決済サービスに関わる異常を本当に検知できるのか、といった疑問を検証するためである。
Machine Learningは、決済トランザクションの合計の日次の増減を3周期で学習し、それが予測した範囲から大きく外れれば、異常として検出する。毎月1日はスマートフォンゲームなどの与信額が解放されるので、決済額が跳ね上がるため、当初は異常としてアラートがあがったが、3ヶ月目以降はこの傾向を学習したため、異常として検出されなくなった。期待したとおりの結果である。
マルチ・メトリック・ジョブでは決済成功・失敗の合計数を、決済方法別に分割し異常検知する。インフルエンサー(影響因子)として、加盟店や商品名、エラーコード・メッセージを設定、異常が検知された際には、その原因特定を助ける。例えば、ある加盟店からのクレジッドカード与信において、「カード番号または有効期限に誤りがあります」エラーが普段の18倍増えている、などといったことがわかる。
Kibanaのダッシュボードでも、対象加盟店のみを絞り込んだ場合には、同様に不正利用の状況を確認することができる。ただ、加盟店全体で見ると、大多数の中に埋もれてしまい、発見するのは容易ではない。可視化だけでは不正利用が検知できない例として挙げられる。
Machine Learningだからこそ検知できた不正利用だと言えます。
異常が発見された場合には、そのジョブ名と異常度を、Slackへ投稿している。さらに、独自の試みとして、独自のSlackのBotを作成して、Machine Learningのダッシュボードのスクリーンショットも添付する。
試験導入を通じて、Kibanaで可視化しているデータがあるのであれば、すぐに導入可能であることがわかった。また、決済サービスにおいても、人間が目で見つけづらい埋没した異常を検知する手段として有効であることも確認できた。
今後はさらに複雑なジョブの設定により、クレジットカードなどの不正利用を早期発見し、加盟店へのサービス向上を狙っている。また、これまで加盟店ごと、決済方法ごとに作成していた閾値によるアラートを、Machine Learningによる異常検知に置き換えたい。
ビジネスデータの可視化
Elastic Stackによるデータの可視化の試みをシステム部門以外にも広げた。営業部門が従来Excelで管理していた売上や、契約数、サービスサイトの閲覧状況を対象とした。
2年分の売上推移を積み上げ棒グラフで、部署別・案件別に表現した。加えてヒートマップを使い、営業部門の目標達成率を、営業担当、月次で目標達成率を青(達成)、赤(非達成)で一覧できるようにした。また、白地図上に、年間の加盟店契約の獲得状況を都道府県別に記した。
サービスサイトの閲覧状況については、アクセス元のIPアドレスから企業名を推定し、契約済み企業からのアクセス、未契約企業からのアクセスランキングを作成し、営業部門が活用するに至った。
当初は営業部門の要望を元に、システム部門でダッシュボードを作っていたが、次第に営業部門がデータ登録、可視化、ダッシュボードの作成までを行うようになった。最も困難だったExcelからのデータの登録については、ドラッグ・アンド・ドロップで操作が可能な独自のツールを開発することにより解決した。
これにより、以下のような効果が認められた。
- Kibanaの表現力、簡単な操作で詳細な分析が可能になった
- Excelでは扱えないような大きなデータを扱えるようになった
- 誰でもデータ投入からダッシュボードの作成までできるようになった