Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Railsバージョンを倍にしたサービスのそれまでとそれから / Till and from t...

Linkers Tech
October 23, 2021

Railsバージョンを倍にしたサービスのそれまでとそれから / Till and from that time of a web service whose rails version was doubled #kaigionrails

Kaigi on Rails 2021にて、Shu OGAWARA(@expajp )が発表したスライドです。

https://kaigionrails.org/2021/
https://kaigionrails.org/2021/talks/expajp/

Linkers Tech

October 23, 2021
Tweet

More Decks by Linkers Tech

Other Decks in Technology

Transcript

  1. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  "HFOEB  ΋͘͡ • ࣗݾ঺հ • ϦϯΧʔζͷ঺հ •

    ͳͥϦϯΧʔζ͸3BJMTͷ·· ͩͬͨͷ͔ʁ • ϦϑΝΫλϦϯά1+։࢝ͷܦҢ • ϦϑΝΫλϦϯάͷਐΊํ • 3BJMTΞοϓάϨʔυ
  2. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  • େྔͷੜ42- • ͦΕ͕ίϯτϩʔϥʹॻ͔Ε͍ͯΔ • Ϗϡʔʹ΋ϩδοΫ͕͋Δ • ͦͷϩδοΫͰϩʔϧ͝ͱʹશ͘ผ಺༰ͷ

    දࣔΛ͍ͤͯ͞Δ • ͦͷϩʔϧͷೝՄ͸ಠ࣮ࣗ૷ • ςετ͸ॻ͔Ε͍ͯͳ͍  ˞ݱࡏ͸౰࣌ͷ͜͏͍ͬͨίʔυ͸࢒͍ͬͯ·ͤΜɺ೦ͷͨΊ
  3. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  ·ͱΊɿ͍͔ʹٕͯ͠ज़తෛ࠴͕ੵΈ্͕ͬͯ͠·͔ͬͨ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ૑ۀظ͸։ൃ༏ઌ ࠷௿ݶͷ҆શੑ Λ୲อͯ͠ɺ 1.'ୡ੒Λ໨ඪʹ 2 ަ௨੔ཧ͕ඞཁ ʹͳͬͨ։ൃཁ๬ ਓ͕૿͑Δͱ ཁ๬ͷ൓өʹ΋ ମ੍͕ඞཁʹ 3
  4. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  ܦӦਞʹཧղ͕͋Δ͜ͱɺઆ໌͢Δ͜ͱ͕ॏཁ • ۜͷ஄ؙ͸ͳ͍ • Ұൠ࿦ͱͯ͠ɺܦӦ൑அ͕ͳ͍ͱ େن໛ͳϦϑΝΫλϦϯά͸೉͍͠ • ࠓճ͸ܦӦਞ΋ήʔϜνΣϯδͷ

    ඞཁੑΛೝ͍ࣝͯͨ͠ • Կ౓΋આ໌ͯ͠ཧղΛಘΔɺ ৴༻ͯ͠΋Β͏ • ͜ͷέʔεͰ͸ɺ$50Ͱ͋Δ4͞Μͷ ਓฑͱ࿹લ΁ͷ৴པ΋͋ͬͨͰ͠ΐ͏ 
  5. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β   CFGPSF BGUFS ίϯτϩʔϥ਺   ΞΫγϣϯ਺ 

      Ϟσϧ਺   3VCZͷߦ਺     &3#ͷߦ਺     ςετΧόϨοδ ʢߦ਺ʣ  ʢ ʣ  ʢ ʣ
  6. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β   CFGPSF BGUFS ίϯτϩʔϥ਺   ΞΫγϣϯ਺ 

      Ϟσϧ਺   3VCZͷߦ਺     &3#ͷߦ਺     ςετΧόϨοδ ʢߦ਺ʣ  ʢ ʣ  ʢ ʣ
  7. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β   ιϑτ΢ΣΞ͕ มߋ͞ΕΔ มߋ͕ࢢ৔ʹ ӨڹΛ༩͑Δ Ϗδωε؀ڥ͕ มԽ͢Δ ϏδωεϞσϧ͕

    ௠෗Խ͢Δ ϏδωεϞσϧΛ มߋ͢Δ ιϑτ΢ΣΞ͕ ࢖͍ʹ͘͘ͳΔ ࣾձ৘੎΍๏཯ɺ ࣾ಺ͷมԽ΋ؚΉ
  8. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β   ιϑτ΢ΣΞ͕ มߋ͞ΕΔ มߋ͕ࢢ৔ʹ ӨڹΛ༩͑Δ Ϗδωε؀ڥ͕ มԽ͢Δ ϏδωεϞσϧ͕

    ௠෗Խ͢Δ ϏδωεϞσϧΛ มߋ͢Δ ιϑτ΢ΣΞ͕ ࢖͍ʹ͘͘ͳΔ ࣾձ৘੎΍๏཯ɺ ࣾ಺ͷมԽ΋ؚΉ ιϑτ΢ΣΞʹ͸ৗ࣌มߋ͕ඞཁ
  9. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  ιϑτ΢ΣΞͱϏδωεͷมԽͰੜ·ΕΔ΋ͷ • ෆཁʹͳͬͨػೳ • Ϗδωε͕มԽ͢ΔҎ্͸ඞͣੜ·ΕΔ • ߟྀෆ଍ͷίʔυ •

    ਓ͕ॻ͘Ҏ্͸ඞͣੜ·ΕΔ • ͢΂ͯͷมߋΛ༧૝ͨ͠ίʔυ͸ॻ͚ͳ͍  ͍ͣΕ΋ɺ ίʔυͷมߋΛ ೉͘͢͠Δ
  10. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  վΊٕͯज़తෛ࠴͕ੵΈ্͕ͬͨཧ༝Λ;Γ͔͑Δ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ૑ۀظ͸։ൃ༏ઌ ࠷௿ݶͷ҆શੑ Λ୲อͯ͠ɺ 1.'ୡ੒Λ໨ඪʹ 2 ަ௨੔ཧ͕ඞཁ ʹͳͬͨ։ൃཁ๬ ਓ͕૿͑Δͱ ཁ๬ͷ൓өʹ΋ ମ੍͕ඞཁʹ 3
  11. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  վΊٕͯज़తෛ࠴͕ੵΈ্͕ͬͨཧ༝Λ;Γ͔͑Δ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ૑ۀظ͸։ൃ༏ઌ ࠷௿ݶͷ҆શੑ Λ୲อͯ͠ɺ 1.'ୡ੒Λ໨ඪʹ 2 ަ௨੔ཧ͕ඞཁ ʹͳͬͨ։ൃཁ๬ ਓ͕૿͑Δͱ ཁ๬ͷ൓өʹ΋ ମ੍͕ඞཁʹ 3 ղܾ ࣾ಺ʹ͸ ΤϯδχΞ͕͍Δ
  12. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  վΊٕͯज़తෛ࠴͕ੵΈ্͕ͬͨཧ༝Λ;Γ͔͑Δ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ૑ۀظ͸։ൃ༏ઌ ࠷௿ݶͷ҆શੑ Λ୲อͯ͠ɺ 1.'ୡ੒Λ໨ඪʹ 2 ަ௨੔ཧ͕ඞཁ ʹͳͬͨ։ൃཁ๬ ਓ͕૿͑Δͱ ཁ๬ͷ൓өʹ΋ ମ੍͕ඞཁʹ 3 ൒෼ະղܾ ܹ͍͠มߋ͸ ݮ͕ͬͨ։ൃ͢Δ ಺༰͸ଟ͍ ղܾ ࣾ಺ʹ͸ ΤϯδχΞ͕͍Δ
  13. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  վΊٕͯज़తෛ࠴͕ੵΈ্͕ͬͨཧ༝Λ;Γ͔͑Δ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ૑ۀظ͸։ൃ༏ઌ ࠷௿ݶͷ҆શੑ Λ୲อͯ͠ɺ 1.'ୡ੒Λ໨ඪʹ 2 ަ௨੔ཧ͕ඞཁ ʹͳͬͨ։ൃཁ๬ ਓ͕૿͑Δͱ ཁ๬ͷ൓өʹ΋ ମ੍͕ඞཁʹ 3 ղܾ ൒෼ະղܾ ܹ͍͠มߋ͸ ݮ͕ͬͨ։ൃ͢Δ ಺༰͸ଟ͍ ະղܾ ަ௨੔ཧ͢Δਓ͸ ·͍ͩͳ͍ ࣾ಺ʹ͸ ΤϯδχΞ͕͍Δ
  14. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  վΊٕͯज़తෛ࠴͕ੵΈ্͕ͬͨཧ༝Λ;Γ͔͑Δ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ަ௨੔ཧ͕ඞཁ ʹͳͬͨ։ൃཁ๬ ਓ͕૿͑Δͱ ཁ๬ͷ൓өʹ΋ ମ੍͕ඞཁʹ 3 ղܾ ൒෼ະղܾ ܹ͍͠มߋ͸ ݮ͕ͬͨ։ൃ͢Δ ಺༰͸ଟ͍ ະղܾ ަ௨੔ཧ͢Δਓ͸ ·͍ͩͳ͍ ίʔυෛ࠴͕ཷ·Δ ࣾ಺ʹ͸ ΤϯδχΞ͕͍Δ
  15. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  վΊٕͯज़తෛ࠴͕ੵΈ্͕ͬͨཧ༝Λ;Γ͔͑Δ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ղܾ ൒෼ະղܾ ܹ͍͠มߋ͸ ݮ͕ͬͨ։ൃ͢Δ ಺༰͸ଟ͍ ະղܾ ަ௨੔ཧ͢Δਓ͸ ·͍ͩͳ͍ ίʔυෛ࠴͕ཷ·Δ ༨෼ͳػೳෛ࠴Λ࡞Δ ػೳෛ࠴͕ཷ·Δ ࣾ಺ʹ͸ ΤϯδχΞ͕͍Δ
  16. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  ͜ͷਓ͕ϓϩμΫτΦʔφʔ 10 ʹब೚ • 1#-Λਫ਼ࠪ͠ɺ༏ઌॱҐΛ͚ͭΔਓ • ىථ͢Δͱ͖͸͜ͷਓΛ௨͢ •

    ґཔ༻νϟοτ͸ഇࢭ • ػೳͷ୨Է͕͞ΕΔΑ͏ʹͳͬͨ • ൃදऀ͕໦͜ΓͷδϨϯϚ͔Βղ์ 
  17. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  ੔஍λεΫͷ͘͠Έ  ᶃීஈͷ։ൃதʹهೖ ٕज़తෛ࠴ʹؾ෇͍ͨΒ ઐ༻εϓϨουγʔτʹ هೖ ೔िͦΕҎ্ Ͱ޻਺Λهೖ

    ᶄఆظతʹશһͰ֬ೝ ىථऀ͕಺༰Λઆ໌ λεΫ͝ͱʹ౤ථͯ͠ɺ ༏ઌॱҐ෇͚ͨ͠Γ ٫Լͨ͠Γ͢Δ શһͰ໰୊ҙࣝΛڞ༗ ࡶ͗͢Δ಺༰ΛϦδΣΫτ
  18. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  ੔஍λεΫͷ͘͠Έ  ᶃීஈͷ։ൃதʹهೖ ٕज़తෛ࠴ʹؾ෇͍ͨΒ ઐ༻εϓϨουγʔτʹ هೖ ೔िͦΕҎ্ Ͱ޻਺Λهೖ

    ᶄఆظతʹશһͰ֬ೝ ىථऀ͕಺༰Λઆ໌ λεΫ͝ͱʹ౤ථͯ͠ɺ ༏ઌॱҐ෇͚ͨ͠Γ ٫Լͨ͠Γ͢Δ ᶅʮ1೔ʯ͸݄1ͷ੔஍೔ͰऔΓ૊Ή શһ͕੔஍λεΫΛ΍Δ ʮ੔஍೔ʯΛઃఆ ༏ઌॱҐ෇͚͞Εͨ όοΫϩάͷ্͔ΒऔΔ
  19. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  ੔஍λεΫͷ͘͠Έ  ᶃීஈͷ։ൃதʹهೖ ٕज़తෛ࠴ʹؾ෇͍ͨΒ ઐ༻εϓϨουγʔτʹ هೖ ೔िͦΕҎ্ Ͱ޻਺Λهೖ

    ᶄఆظతʹશһͰ֬ೝ ىථऀ͕಺༰Λઆ໌ λεΫ͝ͱʹ౤ථͯ͠ɺ ༏ઌॱҐ෇͚ͨ͠Γ ٫Լͨ͠Γ͢Δ ᶅʮ1೔ʯ͸݄1ͷ੔஍೔ͰऔΓ૊Ή શһ͕੔஍λεΫΛ΍Δ ʮ੔஍೔ʯΛઃఆ ༏ઌॱҐ෇͚͞Εͨ όοΫϩάͷ্͔ΒऔΔ ᶆʮ1िʯ͸εϓϦϯτʹࠞͥࠐΉ εϓϦϯτʹݸ͚ͩ ੔஍λεΫΛࠞͥࠐΉ ௨ৗͷ։ൃλεΫಉ༷ʹ ݟੵ࣮ͯ͠૷
  20. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  Έͨͼٕज़తෛ࠴͕ੵΈ্͕ͬͨཧ༝Λ;Γ͔͑Δ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ૑ۀظ͸։ൃ༏ઌ ࠷௿ݶͷ҆શੑ Λ୲อͯ͠ɺ 1.'ୡ੒Λ໨ඪʹ 2 ަ௨੔ཧ͕ඞཁ ʹͳͬͨ։ൃཁ๬ ਓ͕૿͑Δͱ ཁ๬ͷ൓өʹ΋ ମ੍͕ඞཁʹ 3 ղܾ ࣾ಺ʹ͸ ΤϯδχΞ͕͍Δ ൒෼ະղܾ ܹ͍͠มߋ͸ ݮ͕ͬͨ։ൃ͢Δ ಺༰͸ଟ͍ ະղܾ ަ௨੔ཧ͢Δਓ͸ ·͍ͩͳ͍
  21. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  Έͨͼٕज़తෛ࠴͕ੵΈ্͕ͬͨཧ༝Λ;Γ͔͑Δ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ղܾ ൒෼ະղܾ ܹ͍͠มߋ͸ ݮ͕ͬͨ։ൃ͢Δ ಺༰͸ଟ͍ ະղܾ ަ௨੔ཧ͢Δਓ͸ ·͍ͩͳ͍ ίʔυෛ࠴͕ཷ·Δ ༨෼ͳػೳෛ࠴Λ࡞Δ ػೳෛ࠴͕ཷ·Δ ࣾ಺ʹ͸ ΤϯδχΞ͕͍Δ
  22. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  Έͨͼٕज़తෛ࠴͕ੵΈ্͕ͬͨཧ༝Λ;Γ͔͑Δ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ղܾ ະղܾ ަ௨੔ཧ͢Δਓ͸ ·͍ͩͳ͍ ίʔυෛ࠴͕ཷ·Δ ༨෼ͳػೳෛ࠴Λ࡞Δ ػೳෛ࠴͕ཷ·Δ ࣾ಺ʹ͸ ΤϯδχΞ͕͍Δ ղܾ ʮ੔஍λεΫʯͰ ։ൃΛଓ͚ͭͭ ٕज़తෛ࠴Λղফ
  23. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  Έͨͼٕज़తෛ࠴͕ੵΈ্͕ͬͨཧ༝Λ;Γ͔͑Δ  ૑ۀ࣌ʹ ΤϯδχΞෆࡏ γεςϜͷٕज़త ඼࣭ΛνΣοΫ Ͱ͖ͳ͔ͬͨ 1

    ղܾ ίʔυෛ࠴͕ཷ·Δ ༨෼ͳػೳෛ࠴Λ࡞Δ ػೳෛ࠴͕ཷ·Δ ࣾ಺ʹ͸ ΤϯδχΞ͕͍Δ ղܾ ʮ੔஍λεΫʯͰ ։ൃΛଓ͚ͭͭ ٕज़తෛ࠴Λղফ ղܾ 10͕ཁ๬ΛऔΓ ·ͱΊɺ1#-Ͱ ༏ઌॱҐ෇͚
  24. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β   ιϑτ΢ΣΞ͕ มߋ͞ΕΔ มߋ͕ࢢ৔ʹ ӨڹΛ༩͑Δ Ϗδωε؀ڥ͕ มԽ͢Δ ϏδωεϞσϧ͕

    ௠෗Խ͢Δ ϏδωεϞσϧΛ มߋ͢Δ ιϑτ΢ΣΞ͕ ࢖͍ʹ͘͘ͳΔ ࣾձ৘੎΍๏཯ɺ ࣾ಺ͷมԽ΋ؚΉ
  25. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  ͍͞͝ʹ • ح੻తͳཁૉ͕͔Έ߹ͬͨ݁ՌͳͷͰɺ શମͰͷ࠶ݱੑ͸ඇৗʹ௿͍ͱࢥ͍·͢ • ͔͠͠ɺݸʑʹ͸࠶ݱੑ͕࣋ͨͤΒΕΔ͸ͣͰ͢ • .7$ͥΜͿભٶ

    • ը໘͝ͱʹ࢓༷Λ֬ఆͤ͞Δ • ϓϩμΫτόοΫϩάͷઃஔ • ੔஍λεΫͷӡ༻ • ʢଞʹ΋͋ΔͷͰɺ2"Ͱ͓㘤͖͍ͩ͘͞ʣ 
  26. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  ँࣙ • ୀ৬ࡁΈʹ΋͔͔ΘΒͣɺ ΠϯλϏϡʔʹԠͯͩͬͨ͘͡͞ݩ$504͞Μ • ౰࣌ͷ࿩Λฉ͔ͤͯԼͬͨ͞ ݩϦϑΝΫλϦϯά1+ઐ೚ͷ*͞Μ •

    ͜ͷ࿩Λൃ৴͢ΔͨΊຉ૸ͯ͘͠Ε্ͨ࢘ • ͜ͷ࿩Λൃ৴͢Δ͜ͱΛ0,ͯ͘͠ΕͨܦӦਞ • ϨϏϡʔٕͯͩͬͨ͘͠͞ज़ސ໰ͷ͓ೋਓͱɺ Ұॹʹಇ͘ϝϯόʔͨͪɺͦͯ͠༑ਓͨͪ  ຊ౰ʹ͋Γ͕ͱ͏͍͟͝·ͨ͠
  27. 3BJMTόʔδϣϯΛഒʹͨ͠αʔϏεͷͦΕ·ͰͱͦΕ͔Β  ૉࡐ • IVNBOQJDUPHSBN • IUUQTQJDUPHSBNDPN • *$000/.0/0 •

    IUUQTJDPPPONPOPDPN • 4MJEFT • IUUQTTMJEFTDPN • 8JLJNFEJB$PNNPOT • IUUQTDPNNPOTXJLJNFEJBPSH