1
2017/12/14
ソフトバンク・ペイメント・サービス株式会社
鈴木順也 @suzukij
決済サービスの
監視を支える Elastic Stack
2
自己紹介
ソフトバンク・ペイメント・サービス株式会社に在籍
鈴木順也 ( @suzukij)
Java, Webシステムなプログラマ
Elasticsearch + Kibana は可視化目的で2年ほど
主な業務
• 新規サービスの開発
• 運用の改善
• 業務の効率化
3
ソフトバンクグループの決済分野における中核事業会社です
会社紹介 – ソフトバンク・ペイメント・サービス
SoftBank Group
決済・金融
インターネット
コンテンツ
その他
海外投資
通信
4
ソフトバンク携帯ユーザー向けの「ソフト
バンクカード」のカード発行・運営をして
います。
ソフトバンクカードは、Visa加盟店で利
用できるプリペイドカードです。ご利用
金額に応じてTポイントが貯まります。
カード発行業務
決済代行
EC運営事業者さま向けにオンライン決済事
業を運営しています。豊富な決済手段をまと
めてご提供しています。
カード加盟店業務
Visa、Mastercard、UnionPay(銀聯)のメ
ンバーシップライセンスを保有しており、各ブランド
のアクワイアラー(クレジットカード加盟店契約会
社)としての加盟店審査や管理事業、端末決
済サービスを提供しています。
ソフトバンクと共同で、ソフトバンク携帯
ユーザー向けの通話料合算請求「ソフ
トバンクまとめて支払い」の開発・運営
をしています。
キャリア決済
EC/ネット店舗
実店舗/訪問販売
決済代行からカード事業まで幅広く展開
事業内容
5
ソフトバンク携帯ユーザー向けの「ソフト
バンクカード」のカード発行・運営をして
います。
ソフトバンクカードは、Visa加盟店で利
用できるプリペイドカードです。ご利用
金額に応じてTポイントが貯まります。
カード発行業務
決済代行
EC運営事業者さま向けにオンライン決済事
業を運営しています。豊富な決済手段をまと
めてご提供しています。
カード加盟店業務
Visa、Mastercard、UnionPay(銀聯)のメ
ンバーシップライセンスを保有しており、各ブランド
のアクワイアラー(クレジットカード加盟店契約会
社)としての加盟店審査や管理事業、端末決
済サービスを提供しています。
ソフトバンクと共同で、ソフトバンク携帯
ユーザー向けの通話料合算請求「ソフ
トバンクまとめて支払い」の開発・運営
をしています。
キャリア決済
EC/ネット店舗
実店舗/訪問販売
決済代行からカード事業まで幅広く展開
事業内容
6
オンライン決済サービスの監視
• サービス状況を可視化してみた話
• Machine Learningを導入してみた話
1
今日お話しすること
ビジネスデータの可視化
• 営業部門の実績やHP閲覧状況を可視化してみた話
2
7
オンライン決済サービスの監視
8
オンライン決済サービス
加盟店 決済手段
通販サイト
ゲーム
教育
不動産
その他
電子書籍/動画
決済サービス
全て一本化
チケット
ECサイト向けに様々な決済手段を提供
加盟店に決済画面や決済APIを提供するシステム
画面リンク型
API型
クレジット
携帯キャリア決済
コンビニ支払い
プリペイドカード
口座振替
ポイント支払い
アカウント連携決済
当社当社
9
オンライン決済サービス
加盟店
通販サイト
ゲーム
教育
不動産
その他
電子書籍/動画
チケット
ECサイト向けに様々な決済手段を提供
加盟店に決済画面や決済APIを提供するシステム
決済手段
クレジット
携帯キャリア決済
コンビニ支払い
プリペイドカード
口座振替
ポイント支払い
アカウント連携決済
決済サービス
全て一本化
画面リンク型
API型
当社当社
多彩な決済手段を一括で導入可能
手続きコスト、開発コストを削減
10
加盟店
通販サイト
ゲーム
教育
不動産
その他
電子書籍/動画
チケット
サービスの規模感 ECサイト向けに様々な決済手段を提供
加盟店に決済画面や決済APIを提供するシステム
決済手段
クレジット
携帯キャリア決済
コンビニ支払い
プリペイドカード
口座振替
ポイント支払い
アカウント連携決済
決済サービス
全て一本化
画面リンク型
API型
当社当社決済手段 40 種以上に対応
11
決済手段
クレジット
携帯キャリア決済
コンビニ支払い
プリペイドカード
口座振替
ポイント支払い
アカウント連携決済
サービスの規模感
加盟店
通販サイト
ゲーム
教育
不動産
その他
電子書籍/動画
チケット
ECサイト向けに様々な決済手段を提供
加盟店に決済画面や決済APIを提供するシステム
決済サービス
全て一本化
画面リンク型
API型
当社当社導入実績 79,568 店舗
※2017年度10月
12
加盟店
通販サイト
ゲーム
教育
不動産
その他
電子書籍/動画
チケット
サービスの規模感 ECサイト向けに様々な決済手段を提供
加盟店に決済画面や決済APIを提供するシステム
決済手段
クレジット
携帯キャリア決済
コンビニ支払い
プリペイドカード
口座振替
ポイント支払い
アカウント連携決済
年間実績
取扱高 2兆1,949億 円
トランザクション件数 2億4,000万 件
※2016年度
決済サービス
全て一本化
画面リンク型
API型
当社当社
13
加盟店
通販サイト
ゲーム
教育
不動産
その他
電子書籍/動画
チケット
オンライン決済サービス ECサイト向けに様々な決済手段を提供
加盟店に決済画面や決済APIを提供するシステム
決済手段
クレジット
携帯キャリア決済
コンビニ支払い
プリペイドカード
口座振替
ポイント支払い
アカウント連携決済
決済サービス
全て一本化
画面リンク型
API型
当社当社
加盟店システムと決済機関システムをつなぐ
自社だけでは完結しないWebシステム
14
障害が発生した際に
サービスの状況を関係者間で
すばやく共有できていなかった
システム部門 営業部門
業務部門
障害発生
アラート通知
加盟店
(お客さま)
システム運用の現場で困っていたこと
15
システム運用の現場で困っていたこと
加盟店
システム
オンライン決済システム
決済機関
システム
障害発生
原因は?復旧対応は?
・どこのシステム?ウチ?決済機関?加盟店?
システム部門
16
システム運用の現場で困っていたこと
加盟店
システム
オンライン決済システム
決済機関
システム
障害発生
原因は?復旧対応は?
・どこのシステム?ウチ?決済機関?加盟店?
システム部門
全体の状況はどうなってる?
現時点のユーザ影響は?
社内に周知しないと。
17
システム運用の現場で困っていたこと
いつから?どの程度のユーザ影響?
・どこの決済機関?
・どこの加盟店?
営業部門
業務部門
加盟店
システム
オンライン決済システム
決済機関
システム
障害発生
18
システム運用の現場で困っていたこと
いつから?どの程度のユーザ影響?
・どこの決済機関?
・どこの加盟店?
営業部門
業務部門
加盟店
システム
オンライン決済システム
決済機関
システム
障害発生
なるべく早く加盟店へ報告したい
19
システム運用の現場で困っていたこと
サービスの状況をリアルタイムでパッと把握したい
加盟店
システム
オンライン決済システム
決済機関
システム
障害発生
営業部門
業務部門
システム部門
サービスの状況をリアルタイムでパッと把握したい
20
サービス全体の状況をリアルタイムで可視化
状況の急変をすばやく把握
‒いつから?現在の状況は?
‒対象の加盟店は?
‒対象の決済手段は?
‒正常とエラーの比率は?
やったこと
Kibanaの
ダッシュボードで表現
21
Elasticsearchへのデータ投入
RDB
Logstash jdbc-input-plugin
1分間隔でSQLを実行
結果をelasticsearchに投入
オンライン
決済サービス
Logstash Elasticsearch Kibana
22
決済サービスの監視ダッシュボード
意識したこと
•だれでも
•いつでも
•どこでも
•かんたんに
確認が可能であること
23
決済サービスの監視ダッシュボード
24
決済サービスの監視ダッシュボード
決済手段ごとにエリアグラフを配置
グラフはシンプルに
Green: 決済トランザクション OK
Red: 決済トランザクション NG
クレジットカード クレジットカード 3Dセキュア
携帯キャリアB決済携帯キャリアA決済 携帯キャリアC決済
アカウント連携決済 クレジットカード与信
25
決済サービスの監視ダッシュボード
クレジットカード クレジットカード 3Dセキュア
携帯キャリアB決済携帯キャリアA決済 携帯キャリアC決済
アカウント連携決済 クレジットカード与信
確認したいこと
✔ 各決済手段ごと
✔ OK / NGの比率
✔ 時系列の推移
26
決済サービスの監視ダッシュボード
誰でもわかるルール
1. グリーンが急激に少なくなったら要注意
2. レッドが急激に多くなったら要注意
27
決済サービスの監視ダッシュボード(障害時)
誰でもわかるルール
1. グリーンが急激に少なくなったら要注意
2. レッドが急激に多くなったら要注意
28
決済サービスの監視ダッシュボード(障害時)
誰でもわかるルール
1. グリーンが急激に少なくなったら要注意
2. レッドが急激に多くなったら要注意
29
決済方法別、加盟店別トランザクション
加盟店名のタグクラウド
商品名のタグクラウド
クレジット
加盟店別
30
決済方法別、加盟店別トランザクション
加盟店名のタグクラウド
商品名のタグクラウド
クレジット
加盟店別
クレジットのトランザクション量の急増
加盟店の特定
商品名の特定
31
顧客コード
カード番号ハッシュ値
結果別
加盟店別
エラーコード別
クレジットカード与信(不正与信)
32
顧客コード
カード番号ハッシュ値
結果別
加盟店別
エラーコード別
大量の与信NGを確認
クレジットカード与信(不正与信)
33
顧客コード
カード番号ハッシュ値
結果別
加盟店別
エラーコード別
クレジットカード与信(不正与信)
加盟店を特定
34
顧客コード
カード番号ハッシュ値
結果別
加盟店別
エラーコード別 エラーコードの確認
・カード番号 誤り
・有効期限 誤り
・取扱不可
クレジットカード与信(不正与信)
35
顧客コード
カード番号ハッシュ値
結果別
加盟店別
エラーコード別
3ユーザから大量の与信
クレジットカード与信(不正与信)
36
顧客コード
カード番号ハッシュ値
結果別
加盟店別
エラーコード別 大量のカード番号
クレジットカード与信(不正与信)
37
職場のモニターにダッシュボードを常時表示
“なんとなく” で見れる状態
• 思わぬ気付きを得る
‒ 障害、不正利用
• 周囲の関心を引く
‒ 他チームへの展開
※v6.0 からフルスクリーンモード
38
アラートが鳴ったらすぐに確認したい
Kibanaはスマートフォンに非対応
⇒ 結局PCでKibanaを開く必要
⇒ Kibanaのログイン、操作が面倒
(そもそもログインすらしない人も… orz)
職場以外でのダッシュボードの確認
39
5分間隔Selenium
Kibanaダッシュボードの
スクリーンショットをSlackに投げる
工夫:ダッシュボード画像をSlack通知
40
誰でも いつでも どこでも
サービスの状況を把握できるように
• 障害以外でも加盟店の変化に気付くように(爆売れ、不正利用)
• 決済トランザクションデータへの関心が高まった
取り組みの効果
41
Machine Learning
42
導入背景
簡単そう、おもしろそう
今年7月にトライアルで導入
対象はオンライン決済サービス
43
疑問
簡単に使えるの?
ちゃんと検知してくれるの?
1
2
44
実施例 決済トランザクション数
Single Metric
45
Single Metric
実施例 決済トランザクション数
3周期で学習
46
Single Metric
実施例 決済トランザクション数
学習した内容をもとに予測
47
実施例 決済トランザクション数
Single Metric
予測範囲から外れた異常を検出
毎月1日は与信枠が開放されるため決済
サービスの利用が大きく上がる
48
ジョブ作成 決済トランザクション数
Multi Metric Job
49
ジョブ作成 決済トランザクション数
Multi Metric Job
Fields
決済OK数、NG数の合計を
対象に設定
50
ジョブ作成 決済トランザクション数
Multi Metric Job
Split Data
決済方法で分割
51
ジョブ作成 決済トランザクション数
Multi Metric Job
Key Fields
インフルエンサーとして
加盟店や商品名を設定
異常の要因となった値を表示してくれる
52
ジョブ作成 決済トランザクション数
Multi Metric Job
ジョブ作成はこれだけ
かんたん
53
検知
与信結果 NG数の異常
54
検知
与信結果 NG数の異常
55
検知
与信結果 NG数の異常
決済手段:クレジットカード
56
検知
与信結果 NG数の異常
異常の要因となった加盟店
57
検知
与信結果 NG数の異常
異常の要因となったエラーメッセージ
58
検知
与信結果 NG数の異常
通常の18倍以上のエラー数
59
ダッシュボード上での表示内容
加盟店全体
対象加盟店のみ でフィルタ
決済の不正利用であることを確認
60
ダッシュボード上での表示内容
加盟店全体
対象加盟店のみ でフィルタ
加盟店全体で見ると
NGが埋もれてしまっている
MLだからこそ発見できた不正利用
61
検知結果の通知
X-Pack の Watcher を使用して Slack へ通知
Slack Bot(アラートをトリガー)
MLダッシュボード画像をPOST
62
Machine Learning を使用してみて
かんたんに使えるの?
• 簡単なジョブ登録(異常検知に特化、教師なし機械学習)
• Kibanaで可視化しているデータならすぐに導入可能
ちゃんと検知してくれるの?
• 障害時にはほぼ検知
• 可視化しても人間では見つけられない埋蔵した異常を検知
1
2
63
気付き①
母数の少ない決済手段や加盟店の場合、1人のユーザが数
回エラーを起こすだけで異常検知されてしまう。
typial: 0.0425519 actual: 5 ↑More than 100x higher
検知される回数はそれほど多くないため
その都度問題がないことを確認する運用
64
気付き②
同じ周期で不正利用によるリクエストが来た場合3周期目く
らいから学習され反応しなくなってしまう
MLでは新たな問題を発見することが目的
検出できた問題は別の手段で継続してウォッチする運用
65
気付き③
Alert通知用 Watcher JSON の設定が難しい つらい
アップデート毎に改善 V6.0からGUIで設定可能
66
今後やりたいこと つなげたいこと
不正利用の検知
もう少し複雑なMLジョブで不正利用を検知
クレジットカードの不正利用を防止
脱しきい値
加盟店ごと、決済方法ごと、たくさんのしきい値
しきい値の属人化を防ぎたい
67
X-pack
Notification
X-pack
Database Web API
Machine
Learning
Logstash Elasticsearch
Kibana
Watcher
Master
Data
オンライン決済サービス Elastic Stack構成
68
X-pack
Notification
X-pack
Database Web API
Machine
Learning
Logstash Elasticsearch
Kibana
Watcher
Master
Data
オンライン決済サービス Elastic Stack構成
一般的なよくある構成
DataノードとMLノードを分けている点
69
ビジネスデータの可視化
70
背景
Elastic Stackによる可視化をシステム部門以外でも活用できないか
営業部門にヒアリング
Excel管理のデータをトライアルでElastic Stackで可視化
・営業の売上データ、契約数
・HP閲覧状況の分析
71
ダッシュボード(売上推移 – 2年分)
積み上げ棒グラフ
部署別、案件別
72
ダッシュボード(営業部門 目標達成率 – 2年分)
ヒートマップ
縦軸に人の名前
1マスが月ごとの目標達成率を示す
73
ダッシュボード(加盟店契約 獲得状況 – 年間)
リージョンマップ
加盟店所在地を都道府県別にカウント
74
ダッシュボード (HPアクセス数の分析 - 週間)
75
システム部門と営業部門の協力
最初は営業部門の要望を元にシステム部門でダッシュボードを作成して
いたが、次第に営業部門が自力でデータ登録からVisualize、
Dashboardの作成までするようになった。
76
データの取り込み
誰でもデータ登録できるようにクライアントツールを作成
‒ Excelファイルをクライアントツールにドラッグ&ドロップするだけでデータ登録
‒ クライアントツールはJavaFXで作成
‒ Elasticsearchから提供されているClientライブラリを使ってBulk登録
Excelファイルの 1 sheet を 1 index として登録
77
効果
• Kibanaの表現力、簡単な操作で より詳細な分析が可能に
• Excelでは扱えない大きなデータも可視化、share機能で共有可能に
• 非エンジニアがデータの投入からダッシュボードの作成までできるように
78
本日のまとめ
79
本日のまとめ
• 決済サービスの状況をほぼリアルタイムで可視化
‒ 誰でもいつでもどこでもサービス状況を把握、俯瞰できるように
‒ 既存データの活用、データの価値が高まった
• Machine Learningで決済トランザクションの異常検知
‒ 可視化だけでは埋蔵してしまう変化を新たに発見
‒ MLが有益な機能であることを確認
‒ 決済サービスの不正利用検知
‒ 脱しきい値
• 可視化をビジネスデータに広げる
‒ Kibanaの表現力とかんたんな操作で様々な角度で分析
‒ Excelでは扱えない大きなデータも可視化、共有可能
‒ 非エンジニアがデータの投入からダッシュボードの作成まで
80
Elastic Stackは膨大なデータを簡単に
リアルタイム可視化できる非常に強力なプロダクト
さいごに
81
無償で小さく始めることができ、
まわりのニーズを確認しながら徐々に投資、規模の拡大が可能
まずは
可視化
機能追加
スケール
アウト
社内
展開
すばやく成果を得る
まわりの協力を得る
ダッシュボード拡充
サブスクリプション購入
X-Pack
・認証認可
・アラート
・機械学習
クラスタ構成
(ノード追加)
82
さいごに
Elastic Stackによる監視の可能性を今後もさぐりつつ
加盟店へのサービス品質を向上させたい
堅牢、安全、1件1円間違えない
1分1秒止まらないサービスを提供し続けたい
83
ご清聴ありがとうございました
84
弊社はエンジニアを募集しています
興味がある方は @suzukij まで

決済サービスの監視を支えるElastic Stack