狠狠撸

狠狠撸Share a Scribd company logo
5分で導入!
Failurewall で障害対策
@okumin
Who am I?
? @okumin
? https://twitter.com/okumin
? https://github.com/okumin
akka-persistence-sql-async
? Akka persistence のプラグイン
? ScalikeJDBC-Async を使って作った
? https://github.com/okumin/akka-persistence-sql-async
scalacture
? Scala で様々なデータ構造を実装したいライブラリ
? https://github.com/okumin/scalacture
ainterface
? Akka の上で Erlang node が作れるライブラリ
? https://github.com/ainterface/ainterface
依存システムと障害
Web アプリ
Redis
MySQL
Elasticsearch
Twitter
Facebook
Web アプリ
Redis
MySQL
Elasticsearch
Twitter
Facebook
Failurewall
Failurewall
? エラー処理をシンプルに取り扱うためのライブラリ
? Hystrix にインスパイヤされた
? https://github.com/failurewall/failurewall
使い方
trait HTTPClient {
def get(url: String): Future[HTTPResponse]
}
val client: HTTPClient = ???
// 何らかのエラー処理を行う Failurewall
val wall: Failurewall[HTTPResponse, HTTPResponse] = ???
val actual: Future[HTTPResponse] = wall.call {
client.get("https://twitter.com/okumin")
}
様々な壁
Retry
? 失敗したらとりあえずもう一回実行してみる
? 一時的なエラーであればリカバリーできる可能性が高い
マイアプリケーション Twitter
Retry
val system = ActorSystem("mofu")
val strategy = ExponentialBackoffStrategy(
minBackoff = 1.seconds,
maxBackoff = 5.seconds
)
val retry = AkkaRetryFailurewall[HTTPResponse](
maxTrialTimes = 5,
strategy,
system.scheduler,
system.dispatcher
)
Semaphore
? 同一リソースの同時使用数を制御
? 依存システムに大量のリクエストを送ってしまうことを防ぐ
マイアプリケーション Twitter
Semaphore
val executor: ExecutionContext = ???
val semaphore = StdSemaphoreFailurewall[HTTPResponse](
permits = 64,
executor
)
Circuit Breaker
? 障害を検知すると呼び出しを諦めてすぐにエラーを返す(fail-fast)
? 依存システムの障害が長引く場合の影響を最小限に
CLOSED
正常モード
HALF-OPEN
復旧確認モード
OPEN
fail-fast モード
Circuit Breaker
val system = ActorSystem("mofu")
val circuitBreaker = AkkaCircuitBreakerFailurewall[HTTPResponse](
system.scheduler,
maxFailures = 16,
callTimeout = 5.seconds,
resetTimeout = 10.seconds,
system.dispatcher
)
Composable
? もう何も怖くない
val retry: Failurewall[HTTPResponse, HTTPResponse] = ???
val semaphore: Failurewall[HTTPResponse, HTTPResponse] = ???
val circuitBreaker: Failurewall[HTTPResponse, HTTPResponse] = ???
circuitBreaker compose semaphore compose retry
おわり
? Failurewall
? 星をください
? プルリクも大歓迎
? https://github.com/failurewall/failurewall
? あわせて読みたい
? マイクロサービスにおける障害と Failurewall
? http://qiita.com/okumin/items/d7a108ea36f3ad2e3882

More Related Content

What's hot (20)

PPTX
窜补产产颈虫によるオートスケーリングクラスタ监视とオペレーション自动化
真乙 九龍
?
PPTX
Real Tech Night #3 システムをEC2からFargateへ安全にリプレイス
Yoshiki TAKADA
?
PDF
最近のRails事情 - 4.1!
Kenichi Tachibana
?
PDF
20220314 Amazon Linux2022 をさわってみた
Masaru Ogura
?
PDF
Aws elastic beanstalk-handson-summit2012
Akio Katayama
?
PPT
Jawsug elastic beanstalk_150207
Yutaka Hiroyama
?
PPTX
meguro.rb LT
Tsunenori Oohara
?
PPTX
OpenStack Java (nova-compute rewrite by Java)
Takahiro Shida
?
PDF
とあるインフラ运用の今昔物语
Keishi Sugimoto
?
PDF
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
Shinji Tanaka
?
PDF
前略,齿补尘补谤颈苍.惭补肠使いより
Tsubasa Hirano
?
PPTX
窜补产产颈虫によるオートスケーリングクラスタ监视とオペレーション自动化
真乙 九龍
?
PPTX
Lara vue
小川 昌吾
?
PDF
murakumo クラウドコントローラ
Shingo Kawano
?
PDF
Devlove mackerel
Daisuke Kasuya
?
PPTX
PHP on Cloud
Akio Katayama
?
PDF
20170622 Moved to Azure PaaS
康平 秋山
?
PDF
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
?
PDF
ASP.NET WebAPI 体験記 #clrh99
Katsuya Shimizu
?
PDF
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
?
窜补产产颈虫によるオートスケーリングクラスタ监视とオペレーション自动化
真乙 九龍
?
Real Tech Night #3 システムをEC2からFargateへ安全にリプレイス
Yoshiki TAKADA
?
最近のRails事情 - 4.1!
Kenichi Tachibana
?
20220314 Amazon Linux2022 をさわってみた
Masaru Ogura
?
Aws elastic beanstalk-handson-summit2012
Akio Katayama
?
Jawsug elastic beanstalk_150207
Yutaka Hiroyama
?
meguro.rb LT
Tsunenori Oohara
?
OpenStack Java (nova-compute rewrite by Java)
Takahiro Shida
?
とあるインフラ运用の今昔物语
Keishi Sugimoto
?
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
Shinji Tanaka
?
前略,齿补尘补谤颈苍.惭补肠使いより
Tsubasa Hirano
?
窜补产产颈虫によるオートスケーリングクラスタ监视とオペレーション自动化
真乙 九龍
?
Lara vue
小川 昌吾
?
murakumo クラウドコントローラ
Shingo Kawano
?
Devlove mackerel
Daisuke Kasuya
?
PHP on Cloud
Akio Katayama
?
20170622 Moved to Azure PaaS
康平 秋山
?
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
?
ASP.NET WebAPI 体験記 #clrh99
Katsuya Shimizu
?
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
?

Recently uploaded (6)

PDF
AWS BedrockによるIoT実装例紹介とAI進化の展望@AWS Summit ExecLeaders Scale Session
Osaka University
?
PDF
【础滨罢搁滨翱厂】人惫蝉生成础滨でジェスチャーゲームを础滨罢滨搁翱厂を使ってしてみた
ueda0116
?
PDF
フィシ?カル础滨时代のセキュリティ:ロホ?ティクスと础滨セキュリティの融合のあり方
Osaka University
?
PDF
React Native vs React Lynx (React Native Meetup #22)
Taiju Muto
?
PPTX
[Liberaware] Engineer Summer Internship.pptx
koyamakohei
?
PDF
音学シンポジウム2025 招待讲演 远隔会话音声认识のための音声强调フロントエント?:概要と我々の取り组み
Tsubasa Ochiai
?
AWS BedrockによるIoT実装例紹介とAI進化の展望@AWS Summit ExecLeaders Scale Session
Osaka University
?
【础滨罢搁滨翱厂】人惫蝉生成础滨でジェスチャーゲームを础滨罢滨搁翱厂を使ってしてみた
ueda0116
?
フィシ?カル础滨时代のセキュリティ:ロホ?ティクスと础滨セキュリティの融合のあり方
Osaka University
?
React Native vs React Lynx (React Native Meetup #22)
Taiju Muto
?
[Liberaware] Engineer Summer Internship.pptx
koyamakohei
?
音学シンポジウム2025 招待讲演 远隔会话音声认识のための音声强调フロントエント?:概要と我々の取り组み
Tsubasa Ochiai
?
Ad

5分で導入!Failurewall で障害対策

Editor's Notes

  • #8: マイクロサービスだとさらに?
  • #11: firewall をパクった
  • #12: イージー、ノーコスト
  • #14: e.g. コネクション切断
  • #16: 异常な数のリクエストを防ぎ、依存システムを守る
  • #18: ユーザーがタイムアウトまで待たされる
  • #20: 以上の机能を合成可能