巨大化したモノリスApplicationの安全なRubyバージョンアップ🚀

 巨大化したモノリスApplicationの安全なRubyバージョンアップ🚀

Meetup for Rails engineers -メドピア×リンカーズ×Classi開発事例-にて発表した資料です。
https://connpass.com/event/150554/

249622f78e3e37a63243582f14bd3d40?s=128

Takashi Miyahara

October 30, 2019
Tweet

Transcript

  1. ڊେԽͨ͠ϞϊϦε Applicationͷ҆શͳRuby όʔδϣϯΞοϓ Takashi, Miyahara MedPeer, Inc. DCP Division, Platform

    Development Group. 2019/10/30 Meetup for Rails engineers
  2. ࣗݾ঺հ Nameɿٶݪ ਸࢤ(@TakashiMiyahara) Jobɿҩࢣઐ༻ίϛϡχςΟαΠτ ʮMedPeerʯͷ։ൃ Hobbyɿࣗ࡞ΩʔϘʔυ One ThingɿॳొஃͰ͢ʂʂ

  3. ձࣾ঺հ

  4. ձࣾ঺հ

  5. ձࣾ঺հ

  6. ձࣾ঺հ

  7. None
  8. None
  9. ! όʔδϣϯΞοϓͷखॱ 1. ։ൃ؀ڥΛRuby2.6Խɺ֤छهड़Λमਖ਼ 2. ECSͷΠϝʔδΛϏϧυˍΞοϓϩʔυ 3. खݩɾCIʹͯಈ࡞֬ೝˍςετ 4. staging؀ڥʹ൓ө͠ɺಈ࡞ݕূ

    5. production؀ڥʹ൓ө
  10. ! όʔδϣϯΞοϓ։࢝ ๻ʮRubyͷόʔδϣϯΞοϓؤுΔͧͬ ! ʯ

  11. ! खݩɾCIʹͯಈ࡞֬ೝˍςετ ๻ʮϩʔΧϧɾCI؀ڥͰςετશ෦ύε͠ ͨͧʂ ! ʯ

  12. ! 8݄๭೔ CI͕ίέͨʂʂ

  13. None
  14. ! 8݄๭೔ ๻ʮͨ·ʹམͪΔςετ͔ͳʁʯ CIʮReceived 'killed' signalʯ ๻ʮ....ʯ

  15. ! 8݄๭೔

  16. None
  17. ! 8݄๭೔ ݪҼͷίʔυΛൃݟ

  18. ! Durationͷόά Range#stepʹ ActiveSupport::DurationΛ౉͍ͯ͠Δ ෦෼Ͱɺੑೳ͕਺ेഒʙ਺ඦഒʹѱԽ Rubyɿ2.6.3, 2.6.4, 2.6.5 Railsɿ5.2.3 ActiveSupportɿ5.2.3

  19. ! ࠶ݱͤ͞ΔͨΊͷ࠷খͷίʔυ

  20. ! Rubyຖͷ࣮ߦ଎౓ͷ֬ೝ Ruby 2.5.3 Ruby 2.6.3 2.1e-05 s 11.550944 s

    ๻ʮRuby 2.6Λ࢖͏ͱѹ౗తʹ஗͘ͳΔ ͳ͊...ʯ
  21. ! Range#stepͷݕূ

  22. None
  23. ! ࣮ߦ݁Ռ Ruby2.6ܥͱRails5.2ܥͷ૊Έ߹ΘͤͰ͸ɺ ύϑΥʔϚϯε͕ѹ౗తʹѱԽ͠·͢

  24. ! όάͷݪҼ Ruby 2.6͔Βrange.step(n)͕ Enumerator::ArithmeticSequenceΛ ฦ͢Α͏ʹͳͬͨ → ҙਤ͠ͳ͍σʔλߏ଄ʹมԽ → DurationͷՃࢉܭࢉྔ͕ϧʔϓؔ਺ʹ

    ରͯ͠ࢦ਺ؔ਺తʹ૿Ճ
  25. ! όάͷݱঢ় Rails6Ͱ͸मਖ਼͞Ε͍ͯΔΑ͏Ͱ͢

  26. ! όάͷमਖ਼ํ๏

  27. ! ௚ͬͨʂ

  28. None
  29. ! 9݄๭೔

  30. ! 9݄๭೔

  31. None
  32. ! 9݄๭೔ ๻ʮBatchαʔόʔΛ҆શʹ࠶ىಈ͠ͳ͍ ͱɺJobΛਖ਼࣮͘͠ߦͰ͖ͳ͍ͧ...ʯ

  33. ! Sidekiq Jobͷ҆શͳ࠶ىಈ 1. ࣮ߦதͷJobΛ͢΂࣮ͯߦ͖ͤ͞Δ 2. Sidekiqͷleaderϓϩηε্ཱ͕͕ͪΒͳ ͤ͘͞Δ 3. SidekiqͷleaderϓϩηεΛఀࢭ

    4. Masterϓϩηε͔ΒleaderϓϩηεΛى ಈ
  34. ! ಈ͍͍ͯΔJobΛ֬ೝ

  35. ! Sidekiqͷleaderϓϩηε্ཱ͕͕ͪΒͳ ͤ͘͞Δ

  36. ! Sidekiq Jobͷঢ়ଶΛ؂ࢹ

  37. ! SidekiqͷleaderϓϩηεΛఀࢭ

  38. ! SidekiqͷleaderϓϩηεΛఀࢭˠىಈ

  39. ! Sidekiqͷঢ়ଶΛ֬ೝ

  40. ! Batchαʔόʔͷ҆શͳ࠶ىಈ͕֬ೝͰ͖ ͨʂ

  41. None
  42. ! production؀ڥʹ൓ө

  43. ! medpeer.jpͷRubyόʔδϣϯΞοϓΛ࣮ ࢪʂ 2019೥10݄15೔ʢՐʣʹόʔδϣϯΞοϓ ׬ྃ

  44. None