A 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C Hystrix Hystrix Hystrix アプリケーション構成(同期 加盟店 ➡ 決済機関) Tanzu Application Service システム間通信には Hystrix という Circuit Breakerを導入
加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C Hystrix Hystrix Hystrix Hystrix アプリケーション構成(同期 加盟店 ➡ 決済機関) Tanzu Application Service Circuit Breaker があれば 特定の決済機関で障害が発生しても
Receiver C Hystrix Hystrix Hystrix Hystrix Tanzu Application Service 加盟店 A 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C 非同期を実現するために RabbitMQ + Spring Cloud Stream を使用
Receiver C Hystrix Hystrix Hystrix Tanzu Application Service 加盟店 A 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C Hystrix 2年間の運用後 年に数回DLQ行きが発生 対象メッセージのケース毎に何をしなければいけないか 運用を固めていなかったため対応が煩雑に。 頻度が低いとはいえ再送の自動化対応等を事前にして おけばよかったと反省…
Receiver C Hystrix Hystrix Hystrix Tanzu Application Service 加盟店 A 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C Hystrix RabbitMQの運用は初だったが2年間トラブルゼロ ノードダウンやメッセージパブリッシュの停止等は全く発生せず安定して 稼働している。 2年間の運用後
加盟店 A 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C Tanzu Application Service Resilience4J Resilience4J Resilience4J Resilience4J CircuitBreaker 決済機関のシステムエラー率が100%の 状態で2分継続したらサーキットオープン
加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C Tanzu Application Service Resilience4J Resilience4J Resilience4J Resilience4J エラーしきい値がデフォルト50%だが弊社 は100%に設定 CircuitBreaker (Resilience4J)
加盟店 A 加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C Tanzu Application Service Resilience4J Resilience4J Resilience4J Resilience4J Bulkhead(並列処理数の制限) 同時接続数が設定値を超過したらリジェクト
加盟店 Y 加盟店 Z 決済機関 A 決済機関 B 決済機関 C Tanzu Application Service Resilience4J Resilience4J Resilience4J Resilience4J Bulkhead 同時接続数が設定値を超過したらリジェクト Bulkhead (Resilience4J)
Y 加盟店 Z 決済機関 A 決済機関 B Tanzu Application Service Service C 決済機関 C Service D 決済機関 D 外部ベンダさんの協力を得ながらサービスを横展開す ることができた。 自分達は新規技術や新方式を採用したアプリケーショ ンの検証/開発に注力することができた。