Upgrade to Pro — share decks privately, control downloads, hide ads and more …

決済トランザクションの監視におけるElastic Stackの活用 ~アプリケーションロギング/トレーシングの可視化~ / Elastic Stack for monitoring payment transactions

E228752b0ba3d85d485083c7fc6c3622?s=47 hainet
October 04, 2019

決済トランザクションの監視におけるElastic Stackの活用 ~アプリケーションロギング/トレーシングの可視化~ / Elastic Stack for monitoring payment transactions

E228752b0ba3d85d485083c7fc6c3622?s=128

hainet

October 04, 2019
Tweet

Transcript

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

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

    ・決済代行システム開発 ・運用改善
  3. ソフトバンク携帯ユーザー向けの 「ソフトバンクカード」のカード発行・ 運営をしています。 ソフトバンクカードは、 Visa加盟店 で利用できるプリペイドカードです。 ご利用金額に応じて Tポイントが貯 まります。 カード発行業務

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

    決済代行 EC運営事業者さま向けにオンライン決済 事業を運営しています。豊富な決済手段 をまとめてご提供しています。 カード加盟店業務 Visa、Mastercard、UnionPay(銀聯)のメン バーシップライセンスを保有しており、各ブラ ンドのアクワイアラー(クレジットカード加盟 店契約会社)としての加盟店審査や管理事 業、端末決済サービスを提供しています。 ソフトバンクと共同で、ソフトバンク 携帯ユーザー向けの通話料合算 請求「ソフトバンクまとめて支払い」 の開発・運営をしています。 キャリア決済 EC/ネット店舗 実店舗/訪問販売 ペイメントサービスの事業内容
  5. 加盟店 決済機関 通販サイト ゲーム 教育 不動産 その他 電子書籍/動画 決済サービス 全て一本化

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

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

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

    チケット クレジット 携帯キャリア決済 コンビニ支払い プリペイドカード 口座振替 ポイント支払い アカウント連携決済 当社 当社 加盟店システムと決済機関システムの間に位置す る自社だけでは完結しない Webシステム API型 決済代行サービス
  9. 今日お話すること • ログ/トレースデータを 可視化したダッシュボード • ダッシュボードの活用事例 • 社内への取り組みの広がり

  10. 決済代行 システム 加盟店 X 加盟店 Y 加盟店 Z 決済機関 A

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

    決済機関 C 決済代行システムの構成 アプリケーションログは標準出力へ。 プラットフォームがsyslogで送信し、 Logstash経由してElasticsearchへ格納される。 決済代行 システム
  12. App A 加盟店 決済機関 分散トレーシングZipkinの導入 App B App C リクエスト単位に一意となる

    ID(=トレースID)を自動で発行し、ログに付与する。 決済代行システムではトランザクション単位に発行される。 ログドキュメントのトレース IDを grokフィルターで構造化する。 ログを送信 Kibanaで「適当なログ」から トランザクション単位で ログを釣り上げられるようになった。 トレースIDで検索
  13. Trace/SpanとZipkinダッシュボード Trace Span 決済代行 システム Zipkinダッシュボード:/traces/{trace-id} トレースデータ を送信 バックエンドにElasticsearchを採用 Span単位でドキュメントが格納される。

    Span(=処理) Name Service(=アプリケーション) Name 処理の順序と 処理時間を可視化 サンプリングレート 100% 保持期間180日 Spanはアプリケーションの実装で任意に追加できる。 HTTPリクエストだけでなく SQLやメソッドも可視化できる。
  14. ①アプリケーションログの可視化

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

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

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

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

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

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

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

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

  23. 活用イメージ Slack通知から Kibanaリンクへ移動 対象のログからトレース IDを特定 トレースIDで関連ログを絞り込む ログダッシュボードから Zipkinリンクへ移動 処理を特定 通知からリンクを辿っていくだけ(スマホでOK)で、

    事象の概要や件数、処理時間を把握できるようになった。
  24. 事例①:ビジネスサイドの活用 ビジネスサイド ※アプリケーション開発者ではないが、  クレジットカードに精通している。 何かおかしい... こんなに時間はかからないはずだ

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

  26. 事例①:ビジネスサイドの活用 ビジネスサイド (e.g. my BOSS) アプリケーション開発者 (e.g. me) ビジネスサイドの人にも分かるようになった 今すぐ調査します

    ※画像はイメージです このトランザクション (=Trace)の この処理(=Span)に問題がありそう。
  27. 事例①:ビジネスサイドの活用 ビジネスサイド ビジネス目線で条件を設定して 通知されるようにするね! Praeco (ElastAlert GUI)の導入 ・GUIでフィルターを作成して Slack通知を仕込める。 非エンジニアも抵抗なく設定できるようになった。

  28. 事例①:(補足)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
  29. 事例②:埋もれていた傾向の把握

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

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

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

  33. 社内への取り組みの広がり 加盟店 X 加盟店 Y 加盟店 Z 決済機関 A 決済機関

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

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

    決済機関 C 決済代行 システム 既存社内ツール 新規社内ツール 他システム 社内への取り組みの広がり 業務項目もgrokフィルターで構造化した。 この業務項目を既存社内ツールへのリンクにすることで 既存社内ツールの活用促進や、 このリンクを前提とした新規ツールの開発につながった。
  36. まとめ • ログ/トレースデータの可視化を で行った。 • 各種キーでリンクを張ることで、 誰にとっても使いやすいダッシュボードになった。 • 他システムにも仕組みを導入することで、 社内での取り組みが広がった。

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

  38. None
  39. 関連資料① 2017/12/14 Elastic {ON} TOUR Tokyo 2017 決済サービスの監視を支える Elastic Stack

    (https://www.slideshare.net/JunyaSuzuki1/elastic-stack-84302320) ①決済機関ごとのトランザクション成功率を監視 ②機械学習で不正与信を検知
  40. 関連資料② 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)