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

サーキットブレーカーを導入しようとしている話

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 サーキットブレーカーを導入しようとしている話

第2回 Nikotama.rb登壇資料です

Avatar for yusuke miyazaki

yusuke miyazaki

June 18, 2019
Tweet

More Decks by yusuke miyazaki

Other Decks in Technology

Transcript

  1. Re:valua t ion https://fril.jp/ L ead & Delight User F

    irst Ownership Fail Smart αʔΩοτϒϨʔΧʔΛಋೖ͠Α͏ͱ͍ͯ͠Δ࿩
  2.   αʔΩοτϒϨʔΧʔͷಋೖʙ(FNͷίΞ෦෼ def run if open? # ϩάग़ྗͳͲ else

    begin response = execution_timer.time(service, notifier, 'execution_time') do yield end success! # HALF-OPENͩͬͨ৔߹ɺCLOSEDʹ͢Δ rescue response = nil failure! # HALF_OPENͩͬͨ৔߹ɺOPENʹ / CLOSEDͩͬͨ৔߹ɺ৚݅ʹΑͬͯOPENʹ End end response end def http_get circuit.run do Zephyr.new('http://example.com').get('/api/messages') end end ˞͔ͳΓ؆ૉԽ͍ͯ͠·͢ɻࢀߟɿ(JU)VCͷ֘౰Օॴ
  3.   αʔΩοτϒϨʔΧʔͷಋೖʙ'BSBEBZͱ૊Έ߹Θ࣮ͤͨ૷ํ๏ require 'faraday' require 'circuitbox/faraday_middleware' conn = Faraday.new(:url

    => "http://example.com") do |c| c.use Circuitbox::FaradayMiddleware end response = conn.get("/api") if response.success? # success else # failure or open circuit end ˞3&"%.&͔Βͷൈਮ ˞'BSBEBZ͸ɺศརͳ)551ΫϥΠΞϯτϥΠϒϥϦʢ3VCZ,BJHJͰ΋঺հ͞Ε͍ͯ·ͨ͠ʣ
  4.   ิ଍ w ԿճΤϥʔͨ͠Β01&/ʹͳΔ͔ɺͳͲ͸ΧελϚΠ ζͰ͖Δ w σϑΥϧτ͸ɺ௚ۙϦΫΤετͰճҎ্Τϥʔ ͍ͯͨ͠Βɺ෼ؒ01&/ͱͳΔ w

    DJSDVJUCPYͷTUPSBHF Կճࣦഊ͔ͨ͠ͱ͔ ͸ɺ .POFUBͱ͍͏γϯϓϧͳLFZWBMVFTUPSFΛඪ४Ͱ ࢖༻͍ͯ͠Δ