Slide 1

Slide 1 text

決済トランザクションの監視における の活用 アプリケーションログ/トレースデータの可視化

Slide 2

Slide 2 text

ペイメントサービス株式会社 アプリケーション開発者 髙野 はいね 自己紹介 決済代行システム の開発に従事 年に ペイメントサービス株式会社に新卒入社 主な業務 ・決済代行システム開発 ・運用改善

Slide 3

Slide 3 text

ソフトバンク携帯ユーザー向けの 「ソフトバンクカード」のカード発行・ 運営をしています。 ソフトバンクカードは、 Visa加盟店 で利用できるプリペイドカードです。 ご利用金額に応じて Tポイントが貯 まります。 カード発行業務 決済代行 EC運営事業者さま向けにオンライン決済 事業を運営しています。豊富な決済手段 をまとめてご提供しています。 カード加盟店業務 Visa、Mastercard、UnionPay(銀聯)のメン バーシップライセンスを保有しており、各ブラ ンドのアクワイアラー(クレジットカード加盟 店契約会社)としての加盟店審査や管理事 業、端末決済サービスを提供しています。 ソフトバンクと共同で、ソフトバンク 携帯ユーザー向けの通話料合算 請求「ソフトバンクまとめて支払い」 の開発・運営をしています。 キャリア決済 EC/ネット店舗 実店舗/訪問販売 ペイメントサービスの事業内容

Slide 4

Slide 4 text

ソフトバンク携帯ユーザー向けの 「ソフトバンクカード」のカード発行・ 運営をしています。 ソフトバンクカードは、 Visa加盟店 で利用できるプリペイドカードです。 ご利用金額に応じて Tポイントが貯 まります。 カード発行業務 決済代行 EC運営事業者さま向けにオンライン決済 事業を運営しています。豊富な決済手段 をまとめてご提供しています。 カード加盟店業務 Visa、Mastercard、UnionPay(銀聯)のメン バーシップライセンスを保有しており、各ブラ ンドのアクワイアラー(クレジットカード加盟 店契約会社)としての加盟店審査や管理事 業、端末決済サービスを提供しています。 ソフトバンクと共同で、ソフトバンク 携帯ユーザー向けの通話料合算 請求「ソフトバンクまとめて支払い」 の開発・運営をしています。 キャリア決済 EC/ネット店舗 実店舗/訪問販売 ペイメントサービスの事業内容

Slide 5

Slide 5 text

加盟店 決済機関 通販サイト ゲーム 教育 不動産 その他 電子書籍/動画 決済サービス 全て一本化 チケット クレジット 携帯キャリア決済 コンビニ支払い プリペイドカード 口座振替 ポイント支払い アカウント連携決済 当社 当社 API型 決済代行サービス

Slide 6

Slide 6 text

加盟店 決済機関 通販サイト ゲーム 教育 不動産 その他 電子書籍/動画 決済サービス 全て一本化 チケット クレジット 携帯キャリア決済 コンビニ支払い プリペイドカード 口座振替 ポイント支払い アカウント連携決済 当社 当社 API型 導入実績 約 111,742 店舗 (2019年5月実績) 取扱高 2兆9,453 億円 (2018年実績) 決済代行サービス

Slide 7

Slide 7 text

加盟店 決済機関 通販サイト ゲーム 教育 不動産 その他 電子書籍/動画 決済サービス 全て一本化 チケット クレジット 携帯キャリア決済 コンビニ支払い プリペイドカード 口座振替 ポイント支払い アカウント連携決済 当社 当社 API型 決済手段 40 種以上に対応 決済代行サービス

Slide 8

Slide 8 text

加盟店 決済機関 通販サイト ゲーム 教育 不動産 その他 電子書籍/動画 決済サービス 全て一本化 チケット クレジット 携帯キャリア決済 コンビニ支払い プリペイドカード 口座振替 ポイント支払い アカウント連携決済 当社 当社 加盟店システムと決済機関システムの間に位置す る自社だけでは完結しない Webシステム API型 決済代行サービス

Slide 9

Slide 9 text

今日お話すること ● ログ/トレースデータを 可視化したダッシュボード ● ダッシュボードの活用事例 ● 社内への取り組みの広がり

Slide 10

Slide 10 text

決済代行 システム 加盟店 X 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C 決済代行システムの構成 Java / Spring Bootで開発された複数のアプリケーションで構成。 加盟店からのリクエストを決済機関へハンドリングする。 プラットフォームにPaaSを採用

Slide 11

Slide 11 text

加盟店 X 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C 決済代行システムの構成 アプリケーションログは標準出力へ。 プラットフォームがsyslogで送信し、 Logstash経由してElasticsearchへ格納される。 決済代行 システム

Slide 12

Slide 12 text

App A 加盟店 決済機関 分散トレーシングZipkinの導入 App B App C リクエスト単位に一意となる ID(=トレースID)を自動で発行し、ログに付与する。 決済代行システムではトランザクション単位に発行される。 ログドキュメントのトレース IDを grokフィルターで構造化する。 ログを送信 Kibanaで「適当なログ」から トランザクション単位で ログを釣り上げられるようになった。 トレースIDで検索

Slide 13

Slide 13 text

Trace/SpanとZipkinダッシュボード Trace Span 決済代行 システム Zipkinダッシュボード:/traces/{trace-id} トレースデータ を送信 バックエンドにElasticsearchを採用 Span単位でドキュメントが格納される。 Span(=処理) Name Service(=アプリケーション) Name 処理の順序と 処理時間を可視化 サンプリングレート 100% 保持期間180日 Spanはアプリケーションの実装で任意に追加できる。 HTTPリクエストだけでなく SQLやメソッドも可視化できる。

Slide 14

Slide 14 text

①アプリケーションログの可視化

Slide 15

Slide 15 text

ログ件数 (ログレベル単位) アプリケーション 割合 アプリケーション ログ一覧 ①アプリケーションログの可視化

Slide 16

Slide 16 text

ログ件数 (ログレベル単位) アプリケーション 割合 エラーの発生傾向が一目で分かる。 アプリケーション割合にも 偏りが発生していることが分かる。 ①アプリケーションログの可視化

Slide 17

Slide 17 text

アプリケーション ログ一覧 トレースIDをKibanaの設定で Zipkinダッシュボードへのリンクにしている。 ①アプリケーションログの可視化

Slide 18

Slide 18 text

②Zipkinトレースデータ自体の可視化(1/2)

Slide 19

Slide 19 text

Span件数 Span平均処理時間 Span処理時間のパーセンタイル ②Zipkinトレースデータ自体の可視化(1/2)

Slide 20

Slide 20 text

②Zipkinトレースデータ自体の可視化(2/2)

Slide 21

Slide 21 text

Service Name の割合 Span Name の割合 Spanの処理時間のレンジ Spanの処理時間のランキング ②Zipkinトレースデータ自体の可視化(2/2)

Slide 22

Slide 22 text

Spanの所要時間のランキング ログのダッシュボードと同様に Zipkinダッシュボードへのリンクにしている。 ②Zipkinトレースデータ自体の可視化(2/2)

Slide 23

Slide 23 text

活用イメージ Slack通知から Kibanaリンクへ移動 対象のログからトレース IDを特定 トレースIDで関連ログを絞り込む ログダッシュボードから Zipkinリンクへ移動 処理を特定 通知からリンクを辿っていくだけ(スマホでOK)で、 事象の概要や件数、処理時間を把握できるようになった。

Slide 24

Slide 24 text

事例①:ビジネスサイドの活用 ビジネスサイド ※アプリケーション開発者ではないが、  クレジットカードに精通している。 何かおかしい... こんなに時間はかからないはずだ

Slide 25

Slide 25 text

事例①:ビジネスサイドの活用 この処理に問題がありそうだな ... ログダッシュボードから Zipkinリンクへ移動 ビジネスサイド ※アプリケーション開発者ではないが、  クレジットカードに精通している。

Slide 26

Slide 26 text

事例①:ビジネスサイドの活用 ビジネスサイド (e.g. my BOSS) アプリケーション開発者 (e.g. me) ビジネスサイドの人にも分かるようになった 今すぐ調査します ※画像はイメージです このトランザクション (=Trace)の この処理(=Span)に問題がありそう。

Slide 27

Slide 27 text

事例①:ビジネスサイドの活用 ビジネスサイド ビジネス目線で条件を設定して 通知されるようにするね! Praeco (ElastAlert GUI)の導入 ・GUIでフィルターを作成して Slack通知を仕込める。 非エンジニアも抵抗なく設定できるようになった。

Slide 28

Slide 28 text

事例①:(補足)Praecoについて ・商用利用無料のオープンソースプロジェクト  https://github.com/ServerCentral/praeco ・開発も盛んに行われており、 2019/9/27にElastic Stack 7系に対応したv1.0がリリースされた。  https://discuss.elastic.co/t/praeco-a-gui-for-creating-alerts/153871  https://discuss.elastic.co/t/praeco-free-alerting-gui-for-elasticsearch-now-with-v7-support/196685 Praeco開発者はフォーラムで「 beyond the official alerting UI」と言っています。 Praecoの導入から利用までを書いた日本語ブログ記事もありました。 https://designetwork.daichi703n.com/entry/2019/03/24/Praeco-ElastAlert-GUI

Slide 29

Slide 29 text

事例②:埋もれていた傾向の把握

Slide 30

Slide 30 text

事例②:埋もれていた傾向の把握 1週間や1ヶ月の長い期間で見てみると、 既存社内システムへの通信が特定の時間帯だけ異常に遅い。

Slide 31

Slide 31 text

事例②:埋もれていた傾向の把握 対象の時間帯(10秒未満)の処理数が著しく減っている。 どうもアプリケーションがロックされてしまっているようだ。

Slide 32

Slide 32 text

事例②:埋もれていた傾向の把握 既存社内システムのDBに処理遅延があったことが発覚。 決済代行システムもタイムアウトや並列処理数の見直しを検討する機会になった。 対象の時間帯(10秒未満)の処理数が著しく減っている。 どうもトランザクションがロックされてしまっているようだ。

Slide 33

Slide 33 text

社内への取り組みの広がり 加盟店 X 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C 決済代行 システム 他システム 他システムにも可能な限り Elastic StackやZipkinを導入。 一貫してKibanaダッシュボードで状況を把握できるようになった。 関連するシステムが増えるとトレーシングの範囲が広がる。 システムの監視からサービス全体の監視へと関心が移っていき、 ビジネスサイドの方にも喜ばれるようになっていった。

Slide 34

Slide 34 text

加盟店 X 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C 決済代行 システム 決済代行システムのインターフェースに JSON形式の自由項目を追加した。 この自由項目をログに出力することで、 システムごとの業務項目でログを検索したり、 複数のトレースを紐付けることができるようになった。 他システム 社内への取り組みの広がり

Slide 35

Slide 35 text

加盟店 X 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C 決済代行 システム 既存社内ツール 新規社内ツール 他システム 社内への取り組みの広がり 業務項目もgrokフィルターで構造化した。 この業務項目を既存社内ツールへのリンクにすることで 既存社内ツールの活用促進や、 このリンクを前提とした新規ツールの開発につながった。

Slide 36

Slide 36 text

まとめ ● ログ/トレースデータの可視化を で行った。 ● 各種キーでリンクを張ることで、 誰にとっても使いやすいダッシュボードになった。 ● 他システムにも仕組みを導入することで、 社内での取り組みが広がった。

Slide 37

Slide 37 text

発表は以上です SBペイメントサービスは エンジニアを募集しています 興味がある方は @kujaku_note まで

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

関連資料① 2017/12/14 Elastic {ON} TOUR Tokyo 2017 決済サービスの監視を支える Elastic Stack (https://www.slideshare.net/JunyaSuzuki1/elastic-stack-84302320) ①決済機関ごとのトランザクション成功率を監視 ②機械学習で不正与信を検知

Slide 40

Slide 40 text

関連資料② Dev 2019/7/23 CloudNative Days Tokyo 2019 決済システム内製化への旅 SpringとPCFで作るクラウドネイティブなシステム開発 (https://www.slideshare.net/JunyaSuzuki1/springpcf-cndt2019-osdt2019-keynote) Ops 2019/7/10 Pivotal.IO 2019 決済システム内製化に向けたプラットフォーム構築 PCF・BOSHによるオブザーバブルプラットフォーム (https://www.slideshare.net/DaichiKimura3/pcfbosh-156082821)