Your SlideShare is downloading. ×
0
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Rubyで作った"mission critical"システムについて

921

Published on

2011/07/16 (土) @練馬文化センター

2011/07/16 (土) @練馬文化センター

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
921
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Rubyで作った“mission critical”
    システムについて
    江森 真由美
  • 2. PROFILE
    Mayumi Emori
    (@emorima)
    KCS Carrot Corp.
    Asakusarb
  • 3. PROFILE
    2004
  • 4. PROFILE
    Ruby
  • 5. PROFILE
    2004
  • 6. PROFILE
    CGIKit
  • 7. PROFILE
    2005
  • 8. PROFILE
    Ruby
    on
    Rails
  • 9. PROFILE
    Ruby歴 7years
    First RubyKaigi
    for me
    (超初心者)
  • 10. Today’s point
    not
    webservice
    (framework)
  • 11. Today’s point
    mission
    critical
  • 12. Today’s point
    daemonprocess
  • 13. Today’s point
    Ruby
  • 14. Today’s point
    mission
    critical ?
  • 15. mission critical
    24時間365日、止まらないことを要求される基幹業務、あるいは、そのような業務遂行のために使用されるコンピュータシステムのこと。(中略)
    このような業務に使用されるシステムには、極めて高い信頼性や耐障害性、障害発生時に被害を最小に食い止める様々な機能、万全のサポート体制などが必要となる。
             (IT用語辞典 e-Wordsより)
  • 16. mission critical
    24 hours
    365 days
    cannot stop!
  • 17. mission critical
    high
    reliability
    (高信頼性)
  • 18. mission critical
  • 19. mission critical
    なにこれ?
  • 20. mission critical

  • 21. what
    system?
  • 22. 100
    threads
    What system?
  • 23. 100
    processes
    What system?
  • 24. 10,000
    threads
    What system?
  • 25. UDP
    Socket
    What system?
  • 26. what
    for?
  • 27. collect data
    from
    sensors
    on realtime
    What for?
  • 28. Last night,
    You were protected
    by Ruby
  • 29. 始まり
    beginning
  • 30. Beginning
    2004
    Prototype
    Ruby 1.6.8
  • 31. Beginning
    10,000 threads
    ちゃんと
    起動しなかった
    cannot execute
  • 32. Beginning
    Why?
  • 33. Beginning
    ディスクリプタ上限を
    超えていた
    Over filedescriptor limit
  • 34. Beginning
    timeout
    10,000 TimeoutError
    もっさり
    slow in action
  • 35. Beginning
    Thread
    いつの間にか?刺さる
    thread stuck
  • 36. Beginning
    何とか
    しなければ
    ならない
    (must resolve the problem)
  • 37. classThreadWatch
    definitialize(timer)
    @update_time = nil
    @alive_timer = timer
    @mutex = Mutex.new
    end
    defupdate
    @mutex.synchronizedo
    @update_time = Time.now
    end
    end
    def valid?
    @mutex.synchronizedo
    returnfalseif!@update_time.nil? &&
    (Time.now - @update_time) > @alive_timer)
    end
    true
    end
    end
  • 38. defself.thread_main(idx, watch)
    loop do
    watch.update
    #スレッド処理
    end
    end
    defself.main(argv)
    th_infos = Hash.new
    foriin0…100
    w = ThreadWatch.new(600)
    th = Thread.new(i, w) do |idx, watch|
    thread_main(idx, watch)
    end
    th_infos[i] =[th, w]
    end
    check_threads(th_infos)
    end
  • 39. defself.check_threads(th_infos)
    loop do
    th_infos.eachdo |i, info|
    th, w = info
    f_restart = false
    caseth.status
    when“run”, “sleep”
    f_restart = true unless w.valid?
    else
    f_restart = true
    end
    iff_restart
    th.kill
    th.join
    th = Thread.new(i, w) do |idx, watch|
    thread_main(idx, watch)
    end
    th_infos[i] = [th, w]
    end
    end
    end
    end
  • 40. Beginning
    Over file descriptor limit
    root user
    timeout
    select()
    thread stuck
    own monitoring function.
  • 41. 本番
    renewal
  • 42. renewal
    2009
  • 43. renewal
    speed
    大量データの計算処理
    性能要件を満たすため
    C言語で開発
  • 44. renewal
    process count
  • 45. renewal
    over
    230
    processes
  • 46. Ifyou developed in C
  • 47. fun
    inRuby
  • 48. “Rubyすげぇ”
    (Great! Ruby)
  • 49. Benefits of developing in Ruby
    Yes! This is Ruby(1)
    直観的 (intuitive)
    容易(easy)
    Thread
    UDP/TCP Socket etc.
  • 50. Benefits of developing in Ruby
    Yes! This is Ruby(2)
    useful methods
    yield
    instance_eval etc.
  • 51. Benefits of developing in Ruby
    Test is fun.
     (テストは楽に楽しく)
    UDP/TCP Socket
    無限Loop
  • 52. think about...
  • 53. コード量が少なく、
    変更も容易
    異常ケースもテストで
    余裕でカバー
    ThreadもSocket通信も簡単に実装
  • 54. Ruby
    for
    大規模システム
  • 55. But...
  • 56. Expectations or Hope in Ruby
    speed
    (速度)
  • 57. Expectations or Hope in Ruby
    high
    reliability
    (高信頼性)
  • 58. まとめ
    (summary)
  • 59. Today’s Summary
    Web Service
    以外でも
    Ruby活躍!
  • 60. Thank you
    for your attention.
    ご清聴ありがとうございました
  • 61. Thank you
    for your attention.
    ご清聴ありがとうございました
  • 62. Rubyで作った“mission critical”
    システムについて
    江森 真由美

×