Slide 1

Slide 1 text

ඇಉظॲཧ࣮ߦج൫ Delayed୤ग़ → Solid Queue׬શҠߦ΁ͷཱྀ࿏ɻ ,BJHJPO3BJMT  খྛᠳฏ!TSPDLTUZMF

Slide 2

Slide 2 text

,0//*$)*8" *AN4IPIFJ,PCBZBTIJ!TSPDLTUZMF https://www.srockstyle.com/ github.com/srockstyle @srockstyle.com @srockstyle බࣈͰݺ͹ΕΔͱฦࣄͰ͖ͳ͍ମʹͳ͍ͬͯΔͷͰɺ ͠ΐʔ΁ʔ͞ΜPS͢Ζͬ͘͞ΜͬͯݺΜͰ͍ͩ͘͞ 4JUF3FMJBCJMJUZ&OHJOFFS JO1MBUGPSN&OHJOFFSJOH6OJUBU4UVEJTU

Slide 3

Slide 3 text

,0//*$)*8" *AN4IPIFJ,PCBZBTIJ!TSPDLTUZMF 4JUF3FMJBCJMJUZ&OHJOFFS JO1MBUGPSN&OHJOFFSJOH6OJUBU4UVEJTU

Slide 4

Slide 4 text

,0//*$)*8" *AN4IPIFJ,PCBZBTIJ!TSPDLTUZMF 4JUF3FMJBCJMJUZ&OHJOFFS JO1MBUGPSN&OHJOFFSJOH6OJUBU4UVEJTU &OHJOFFSIJTUPSZʙ

Slide 5

Slide 5 text

,0//*$)*8" *AN4IPIFJ,PCBZBTIJ!TSPDLTUZMF 4JUF3FMJBCJMJUZ&OHJOFFS JO1MBUGPSN&OHJOFFSJOH6OJUBU4UVEJTU Rails3ʙ &OHJOFFSIJTUPSZʙ

Slide 6

Slide 6 text

,0//*$)*8" *AN4IPIFJ,PCBZBTIJ!TSPDLTUZMF 4JUF3FMJBCJMJUZ&OHJOFFS JO1MBUGPSN&OHJOFFSJOH6OJUBU4UVEJTU Rails3ʙ Vine Linux 2.0ʙ Fedora Core 1ʙ &OHJOFFSIJTUPSZʙ

Slide 7

Slide 7 text

,0//*$)*8" *AN4IPIFJ,PCBZBTIJ!TSPDLTUZMF 4JUF3FMJBCJMJUZ&OHJOFFS JO1MBUGPSN&OHJOFFSJOH6OJUBU4UVEJTU Rails3ʙ Vine Linux 2.0ʙ Fedora Core 1ʙ &OHJOFFSIJTUPSZʙ Web2.0ʂ

Slide 8

Slide 8 text

Πϥετඳ͍ͨΓͯ͠·͢ ౦ํ1SPKFDU޷͖ͩͥ ࣾ಺ͷϓϨθϯࢿྉʹ࢖ͬͯಉ྅ʹυϠإ͢Δͷ͕झຯ

Slide 9

Slide 9 text

Delayed → Solid Queue׬શҠߦ΁ͷཱྀ࿏ɻ Kaigi on Rails 2025 September 27th ,2025 and all the things in between

Slide 10

Slide 10 text

https://note.com/studist/n/nb16a0b57bbdf https://studist.tech/delayed-job-to-solidqueue-migration-fd50ad239a07

Slide 11

Slide 11 text

ΞδΣϯμ w͸͡Ίʹɿ5FBDINF#J[ʹ͍ͭͯ w՝୊1BSUͦͷ wબఆ wઃܭͱ࣮૷ͦͯ͠Ҡߦ w՝୊1BSUͦͷ w·ͱΊ

Slide 12

Slide 12 text

w͸͡Ίʹɿ5FBDINF#J[ʹ͍ͭͯ w՝୊1BSUͦͷ wબఆ wઃܭͱ࣮૷ͦͯ͠Ҡߦ w՝୊1BSUͦͷ w·ͱΊ

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

ϦϦʔε೥Ҏ্ͷ3BJMTΞϓϦέʔγϣϯ

Slide 15

Slide 15 text

ϦϦʔε೥Ҏ্ͷ3BJMTΞϓϦέʔγϣϯ ೥ϦϦʔε3BJMT

Slide 16

Slide 16 text

ϦϦʔε೥Ҏ্ͷ3BJMTΞϓϦέʔγϣϯ ೥ϦϦʔε3BJMT ೥݄౰࣌3BJMT

Slide 17

Slide 17 text

8FC1PE %FMBZFE1PE ඇಉظॲཧͷ؆୯ͳ͓͞Β͍

Slide 18

Slide 18 text

8FC1PE %FMBZFE1PE ඇಉظॲཧͷ؆୯ͳ͓͞Β͍  Ϣʔβ͕ૢ࡞͢Δ

Slide 19

Slide 19 text

8FC1PE %FMBZFE1PE ඇಉظॲཧͷ؆୯ͳ͓͞Β͍  Ϣʔβ͕ૢ࡞͢Δ %#ʹॲཧ͕ΤϯΩϡʔ͞ΕΔ

Slide 20

Slide 20 text

8FC1PE %FMBZFE1PE ඇಉظॲཧͷ؆୯ͳ͓͞Β͍  Ϣʔβ͕ૢ࡞͢Δ %#ʹॲཧ͕ΤϯΩϡʔ͞ΕΔ ϢʔβʹϨεϙϯε͕ฦ͞ΕΔ

Slide 21

Slide 21 text

8FC1PE %FMBZFE1PE ඇಉظॲཧͷ؆୯ͳ͓͞Β͍  Ϣʔβ͕ૢ࡞͢Δ %#ʹॲཧ͕ΤϯΩϡʔ͞ΕΔ ϢʔβʹϨεϙϯε͕ฦ͞ΕΔ ඇಉظόοΫΤϯυ͕ॲཧ

Slide 22

Slide 22 text

8FC1PE %FMBZFE1PE ඇಉظॲཧͷ؆୯ͳ͓͞Β͍  Ϣʔβ͕ૢ࡞͢Δ %#ʹॲཧ͕ΤϯΩϡʔ͞ΕΔ ϢʔβʹϨεϙϯε͕ฦ͞ΕΔ ඇಉظόοΫΤϯυ͕ॲཧ ॲཧ݁ՌΛ%#ʹอଘͯ͠׬ྃ

Slide 23

Slide 23 text

ॏཁͳॲཧʹඇಉظॲཧ͕ଟ͍ ॳظϚχϡΞϧ࡞੒ $IBUCPUͰ$IBU։࢝ ϑΥϧμͷਓ਺ܭࢉ ֤छ৘ใߋ৽ޙϝʔϧૹ৴ ސ٬৘ใ࡟আॲཧ "*Λ࢖ͬͨࣗಈੜ੒ ಈըɾ1%'͔ΒϚχϡΞϧ࡞੒ ඇಉظॲཧج൫

Slide 24

Slide 24 text

w͸͡Ίʹɿ5FBDINF#J[ʹ͍ͭͯ w՝୊1BSUͦͷ wબఆ wઃܭͱ࣮૷ͦͯ͠Ҡߦ w՝୊1BSUͦͷ w·ͱΊ

Slide 25

Slide 25 text

ZFBSTBHP

Slide 26

Slide 26 text

%FMBZFE+PC%FMBZFE %#ΛΩϡʔͱ͢ΔඇಉظόοΫΤϯυ

Slide 27

Slide 27 text

՝୊ͱ΍Γ͍ͨ͜ͱ

Slide 28

Slide 28 text

՝୊ͱ΍Γ͍ͨ͜ͱ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ

Slide 29

Slide 29 text

՝୊ͱ΍Γ͍ͨ͜ͱ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ⬜ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠

Slide 30

Slide 30 text

՝୊ͱ΍Γ͍ͨ͜ͱ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ⬜ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ⬜ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠

Slide 31

Slide 31 text

՝୊ͱ΍Γ͍ͨ͜ͱ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ⬜ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ⬜ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ⬜ ϦιʔεΛ༗ޮ׆༻͍ͨ͠

Slide 32

Slide 32 text

՝୊ͱ΍Γ͍ͨ͜ͱ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ⬜ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ⬜ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ⬜ ϦιʔεΛ༗ޮ׆༻͍ͨ͠ ⬜ ༏ઌ౓Λఆٛͨ͠Β༏ઌ౓Λकͬͯ΄͍͠

Slide 33

Slide 33 text

՝୊ͱ΍Γ͍ͨ͜ͱ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ⬜ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ⬜ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ⬜ ϦιʔεΛ༗ޮ׆༻͍ͨ͠ ⬜ ༏ઌ౓Λఆٛͨ͠Β༏ઌ౓Λकͬͯ΄͍͠ ⬜ δϣϒ͝ͱʹΩϡʔͱ8PSLFSΛ෼͚͍ͨ

Slide 34

Slide 34 text

՝୊ͱ΍Γ͍ͨ͜ͱ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ⬜ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ⬜ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ⬜ ϦιʔεΛ༗ޮ׆༻͍ͨ͠ ⬜ ༏ઌ౓Λఆٛͨ͠Β༏ઌ౓Λकͬͯ΄͍͠ ⬜ δϣϒ͝ͱʹΩϡʔͱ8PSLFSΛ෼͚͍ͨ ⬜ ఆظ࣮ߦॲཧΛ·ͱΊ͍ͨ

Slide 35

Slide 35 text

՝୊ͱ΍Γ͍ͨ͜ͱ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ⬜ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ⬜ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ⬜ ϦιʔεΛ༗ޮ׆༻͍ͨ͠ ⬜ ༏ઌ౓Λఆٛͨ͠Β༏ઌ౓Λकͬͯ΄͍͠ ⬜ δϣϒ͝ͱʹΩϡʔͱ8PSLFSΛ෼͚͍ͨ ⬜ ఆظ࣮ߦॲཧΛ·ͱΊ͍ͨ ⬜ "DUJWF+PCʹҠߦ͍ͨ͠ʢ%FMBZFEઐ༻ͷॻ͖ํͱ"DUJWF+PCͷࠞࡏഇࢭʣ

Slide 36

Slide 36 text

՝୊ͱ΍Γ͍ͨ͜ͱ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ⬜ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ⬜ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ⬜ ϦιʔεΛ༗ޮ׆༻͍ͨ͠ ⬜ ༏ઌ౓Λఆٛͨ͠Β༏ઌ౓Λकͬͯ΄͍͠ ⬜ δϣϒ͝ͱʹΩϡʔͱ8PSLFSΛ෼͚͍ͨ ⬜ ఆظ࣮ߦॲཧΛ·ͱΊ͍ͨ ⬜ "DUJWF+PCʹҠߦ͍ͨ͠ʢ%FMBZFEઐ༻ͷॻ͖ํͱ"DUJWF+PCͷࠞࡏഇࢭʣ ⬜ Ͱ͖Δ͚ͩ3BJMT8BZʹ৐͍ͤͨ

Slide 37

Slide 37 text

՝୊ͱ΍Γ͍ͨ͜ͱ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ⬜ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ⬜ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ⬜ ϦιʔεΛ༗ޮ׆༻͍ͨ͠ ⬜ ༏ઌ౓Λఆٛͨ͠Β༏ઌ౓Λकͬͯ΄͍͠ ⬜ δϣϒ͝ͱʹΩϡʔͱ8PSLFSΛ෼͚͍ͨ ⬜ ఆظ࣮ߦॲཧΛ·ͱΊ͍ͨ ⬜ "DUJWF+PCʹҠߦ͍ͨ͠ʢ%FMBZFEઐ༻ͷॻ͖ํͱ"DUJWF+PCͷࠞࡏഇࢭʣ ⬜ Ͱ͖Δ͚ͩ3BJMT8BZʹ৐͍ͤͨ

Slide 38

Slide 38 text

ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊લఏ ඇಉظॲཧ͸ೋछྨଘࡏɻ

Slide 39

Slide 39 text

"δϣϒͱͯ͠௕࣌ؒͷॲཧΛͯ͠΋Β͏΋ͷ ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊લఏ ඇಉظॲཧ͸ೋछྨଘࡏɻ ྫɿॳճάϧʔϓ࡞੒ղ໿άϧʔϓ࡟আ

Slide 40

Slide 40 text

"δϣϒͱͯ͠௕࣌ؒͷॲཧΛͯ͠΋Β͏΋ͷ #ͱΓ͋͑ͣඇಉظʹ͢Δ͕ɺͳΔૣͰॲཧͯ͠ཉ͍͠΋ͷ ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊લఏ ඇಉظॲཧ͸ೋछྨଘࡏɻ ྫɿॳճάϧʔϓ࡞੒ղ໿άϧʔϓ࡟আ ྫɿશैۀһʹϝʔϧ௨஌$IBUCPUͷฦ৴"*ͰࣗಈϚχϡΞϧ࡞੒

Slide 41

Slide 41 text

"δϣϒͱͯ͠௕࣌ؒͷॲཧΛͯ͠΋Β͏΋ͷ #ͱΓ͋͑ͣඇಉظʹ͢Δ͕ɺͳΔૣͰॲཧͯ͠ཉ͍͠΋ͷ ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊લఏ ඇಉظॲཧ͸ೋछྨଘࡏɻ ྫɿॳճάϧʔϓ࡞੒ղ໿άϧʔϓ࡟আ ྫɿશैۀһʹϝʔϧ௨஌$IBUCPUͷฦ৴"*ͰࣗಈϚχϡΞϧ࡞੒

Slide 42

Slide 42 text

ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ ຊ԰ʢ8FCΞϓϦέʔγϣϯʣ

Slide 43

Slide 43 text

ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ ຊ԰ʢ8FCΞϓϦέʔγϣϯʣ ຊ͕ͨ͘͞ΜചΕΔ͔Β ళһʢॲཧϓϩηεʣΛਓ͔Βਓʹͨ͠Αʂ

Slide 44

Slide 44 text

ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ ຊ԰ʢ8FCΞϓϦέʔγϣϯʣ ຊ͕ͨ͘͞ΜചΕΔ͔Β ళһʢॲཧϓϩηεʣΛਓ͔Βਓʹͨ͠Αʂ ഒͩʂ ਓʹ͔ͨ͠Β͓٬͞ΜʢॲཧʣΛࡹ͘εϐʔυ΋

Slide 45

Slide 45 text

ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ ຊʢॲཧʣ͕ͨ͘͞ΜചΕΔʢೖΔʣ͔Β ళһʢॲཧϓϩηεʣΛਓ͔Βਓʹͨ͠ͷʹʜ

Slide 46

Slide 46 text

ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ ຊʢॲཧʣ͕ͨ͘͞ΜചΕΔʢೖΔʣ͔Β ళһʢॲཧϓϩηεʣΛਓ͔Βਓʹͨ͠ͷʹʜ ి୎͸Ұݸ͔͠Ͷ͑ͧʂʂʂ

Slide 47

Slide 47 text

ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ ຊʢॲཧʣ͕ͨ͘͞ΜചΕΔʢೖΔʣ͔Β ళһʢॲཧϓϩηεʣΛਓ͔Βਓʹͨ͠ͷʹʜ ਓʹͨ͠ͷʹ͓٬͞ΜΛࡹ͘εϐʔυ͕ʜ ి୎͸Ұݸ͔͠Ͷ͑ͧʂʂʂ

Slide 48

Slide 48 text

ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ ຊʢॲཧʣ͕ͨ͘͞ΜചΕΔʢೖΔʣ͔Β ళһʢॲཧϓϩηεʣΛਓ͔Βਓʹͨ͠ͷʹʜ ഒ͡ΌͶ͑ʂ ਓʹͨ͠ͷʹ͓٬͞ΜΛࡹ͘εϐʔυ͕ʜ ి୎͸Ұݸ͔͠Ͷ͑ͧʂʂʂ

Slide 49

Slide 49 text

%FMBZFE %# ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ δϣϒ͕͍ͬͺ͍͋ΔͷͰ͍ͬͺ͍ॲཧ͍ͨ͠

Slide 50

Slide 50 text

%FMBZFE %# %FMBZFE ॲཧ8PSLFSΛ૿΍͢ॲཧ͕΋ͬͱࡹ͚Δ͸ͣ %FMBZFE ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ δϣϒ͕͍ͬͺ͍͋ΔͷͰ͍ͬͺ͍ॲཧ͍ͨ͠

Slide 51

Slide 51 text

%FMBZFE %# %FMBZFE %FMBZFE ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ δϣϒ͕͍ͬͺ͍͋ΔͷͰ͍ͬͺ͍ॲཧ͍ͨ͠ ॲཧ࣮ߦʂ

Slide 52

Slide 52 text

%FMBZFE %# %FMBZFE ୆ͷ8PSLFS͕औಘத %FMBZFE ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ δϣϒ͕͍ͬͺ͍͋ΔͷͰ͍ͬͺ͍ॲཧ͍ͨ͠ ॲཧ࣮ߦʂ

Slide 53

Slide 53 text

%FMBZFE %# %FMBZFE %FMBZFE ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ δϣϒ͕͍ͬͺ͍͋ΔͷͰ͍ͬͺ͍ॲཧ͍ͨ͠ Y ॲཧ࣮ߦʂ ଞͷXPSLFS͸଴ͭɻ

Slide 54

Slide 54 text

+PC" Worker A Worker B +PC# +PC$ ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ +PC5BCMF

Slide 55

Slide 55 text

+PC" Worker A Worker B +PC# +PC$ ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ +PC5BCMF ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ

Slide 56

Slide 56 text

+PC" Worker A Worker B +PC# +PC$ ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ +PC5BCMF 45"3553"/4"$5*0/ 4&-&$5 '30.+0#48)&3&QSPDFTTFEOP'0361%"5&-*.*5 YYYYY $0..*5 ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ

Slide 57

Slide 57 text

+PC" Worker A Worker B +PC# +PC$ ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ +PC5BCMF 45"3553"/4"$5*0/ 4&-&$5 '30.+0#48)&3&QSPDFTTFEOP'0361%"5&-*.*5 YYYYY $0..*5 ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ ʮϩοΫ͞ΕͯΔ͔Βɺ଴͔ͭʜʜʯ ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ

Slide 58

Slide 58 text

+PC" Worker A Worker B +PC# +PC$ ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ +PC5BCMF 45"3553"/4"$5*0/ 4&-&$5 '30.+0#48)&3&QSPDFTTFEOP'0361%"5&-*.*5 YYYYY $0..*5 ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ ʮϩοΫ͞ΕͯΔ͔Βɺ଴͔ͭʜʜʯ ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ 5SBOTBDUJPO͕DPNNJU͞ΕΔ·Ͱ+PC#ΛͱΓʹ͍͔ͣɺ଴ͪXPSLFSʹͳΔ

Slide 59

Slide 59 text

+PC" Worker A Worker B +PC# +PC$ ઢܗతͳεέʔϧΞ΢τෆՄೳ໰୊ +PC5BCMF 45"3553"/4"$5*0/ 4&-&$5 '30.+0#48)&3&QSPDFTTFEOP'0361%"5&-*.*5 YYYYY $0..*5 ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ ʮϩοΫ͞ΕͯΔ͔Βɺ଴͔ͭʜʜʯ ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ 5SBOTBDUJPO͕DPNNJU͞ΕΔ·Ͱ+PC#ΛͱΓʹ͍͔ͣɺ଴ͪXPSLFSʹͳΔ 8PSLFSΛ૿΍ͯ͠΋ɺδϣϒͷॲཧ଎౓͕៉ྷʹഒʹͳͬͯ͘Εͳ͍

Slide 60

Slide 60 text

w͸͡Ίʹɿ5FBDINF#J[ʹ͍ͭͯ w՝୊1BSUͦͷ wબఆ wઃܭͱ࣮૷ wҠߦ w՝୊1BSUͦͷ w·ͱΊ

Slide 61

Slide 61 text

ݱঢ়

Slide 62

Slide 62 text

ݱঢ় ඇಉظॲཧ "DUJWF+PCΛ࢖ͬͯΔ΋ͷ

Slide 63

Slide 63 text

ݱঢ় ඇಉظॲཧ "DUJWF+PCΛ࢖ͬͯΔ΋ͷ $MBTT/BNFEFMBZFYFDͱ͍ͬͨEFMBZϝιουΛ࢖ͬͯΔ΋ͷ

Slide 64

Slide 64 text

ݱঢ় ඇಉظॲཧ "DUJWF+PCΛ࢖ͬͯΔ΋ͷ $MBTT/BNFEFMBZFYFDͱ͍ͬͨEFMBZϝιουΛ࢖ͬͯΔ΋ͷ ఆظॲཧ؅ཧ 8IFOFWFSσϓϩΠ࣌ʹDSPOUBC࡞੒

Slide 65

Slide 65 text

ݱঢ় ඇಉظॲཧ "DUJWF+PCΛ࢖ͬͯΔ΋ͷ $MBTT/BNFEFMBZFYFDͱ͍ͬͨEFMBZϝιουΛ࢖ͬͯΔ΋ͷ ఆظॲཧ؅ཧ 8IFOFWFSσϓϩΠ࣌ʹDSPOUBC࡞੒ δϣϒͷΩϡʔ %#JO.Z42-

Slide 66

Slide 66 text

ݱঢ় ඇಉظॲཧ "DUJWF+PCΛ࢖ͬͯΔ΋ͷ $MBTT/BNFEFMBZFYFDͱ͍ͬͨEFMBZϝιουΛ࢖ͬͯΔ΋ͷ ఆظॲཧ؅ཧ 8IFOFWFSσϓϩΠ࣌ʹDSPOUBC࡞੒ δϣϒͷΩϡʔ %#JO.Z42- 43&νʔϜͰ߹ҙͨ͠ํ਑ ӡ༻ର৅͸૿΍͞ͳ͍ӡ༻ର৅͸ۃྗݮΒ͢

Slide 67

Slide 67 text

4JEFLJR74 4PMJE2VFVF

Slide 68

Slide 68 text

ൺֱ؍఺ͷҰྫ

Slide 69

Slide 69 text

ൺֱ؍఺ͷҰྫ ⬜ ઢܗεέʔϧΞ΢τՄೳ

Slide 70

Slide 70 text

ൺֱ؍఺ͷҰྫ ⬜ ⬜ ৽͍͠"84Ϧιʔε͕ෆཁ ઢܗεέʔϧΞ΢τՄೳ

Slide 71

Slide 71 text

ൺֱ؍఺ͷҰྫ ⬜ ༻్ʹԠͯ͡ෳ਺ͷΩϡʔ؅ཧ͕Ͱ͖Δ͜ͱ ⬜ ৽͍͠"84Ϧιʔε͕ෆཁ ⬜ ઢܗεέʔϧΞ΢τՄೳ

Slide 72

Slide 72 text

ൺֱ؍఺ͷҰྫ ⬜ ༻్ʹԠͯ͡ෳ਺ͷΩϡʔ؅ཧ͕Ͱ͖Δ͜ͱ ⬜ ৽͍͠"84Ϧιʔε͕ෆཁ ⬜ ઢܗεέʔϧΞ΢τՄೳ ⬜ %#ϩοΫͰύϑΥʔϚϯεྼԽ͠ͳ͍

Slide 73

Slide 73 text

ൺֱ؍఺ͷҰྫ ⬜ ༻్ʹԠͯ͡ෳ਺ͷΩϡʔ؅ཧ͕Ͱ͖Δ͜ͱ ⬜ ৽͍͠"84Ϧιʔε͕ෆཁ ⬜ ઢܗεέʔϧΞ΢τՄೳ ⬜ %#ϩοΫͰύϑΥʔϚϯεྼԽ͠ͳ͍ ⬜ δϣϒͷτϥϯβΫγϣϯ಺ݺͼग़͠ରԠ

Slide 74

Slide 74 text

ൺֱ؍఺ͷҰྫ ⬜ ༻్ʹԠͯ͡ෳ਺ͷΩϡʔ؅ཧ͕Ͱ͖Δ͜ͱ ⬜ ৽͍͠"84Ϧιʔε͕ෆཁ ⬜ ઢܗεέʔϧΞ΢τՄೳ ⬜ %#ϩοΫͰύϑΥʔϚϯεྼԽ͠ͳ͍ ⬜ 3BJMTͱͷ਌࿨ੑ ⬜ δϣϒͷτϥϯβΫγϣϯ಺ݺͼग़͠ରԠ

Slide 75

Slide 75 text

ൺֱ؍఺ͷҰྫ ⬜ ༻్ʹԠͯ͡ෳ਺ͷΩϡʔ؅ཧ͕Ͱ͖Δ͜ͱ ⬜ ৽͍͠"84Ϧιʔε͕ෆཁ ⬜ ઢܗεέʔϧΞ΢τՄೳ ⬜ %#ϩοΫͰύϑΥʔϚϯεྼԽ͠ͳ͍ ⬜ 3BJMTͱͷ਌࿨ੑ ⬜ ఆظ࣮ߦॲཧج൫͕͋Δ ⬜ δϣϒͷτϥϯβΫγϣϯ಺ݺͼग़͠ରԠ

Slide 76

Slide 76 text

ൺֱ؍఺ͷҰྫ ⬜ ༻్ʹԠͯ͡ෳ਺ͷΩϡʔ؅ཧ͕Ͱ͖Δ͜ͱ ⬜ ৽͍͠"84Ϧιʔε͕ෆཁ ⬜ ઢܗεέʔϧΞ΢τՄೳ ⬜ %#ϩοΫͰύϑΥʔϚϯεྼԽ͠ͳ͍ ⬜ 3BJMTͱͷ਌࿨ੑ ⬜ ఆظ࣮ߦॲཧج൫͕͋Δ ⬜ ⬜ ແ՝ۚͰ࢖͍͍ͨ δϣϒͷτϥϯβΫγϣϯ಺ݺͼग़͠ରԠ

Slide 77

Slide 77 text

Sidekiq Pro ༻్ʹԠͯ͡ෳ਺ͷΩϡʔ؅ཧ͕Մೳ ৽͍͠"84Ϧιʔε͕ෆཁ ઢܗεέʔϧΞ΢τՄೳ %#ϩοΫͰύϑΥʔϚϯεྼԽ͠ͳ͍ 3BJMTͱͷ਌࿨ੑ ఆظ࣮ߦॲཧج൫͕͋Δ ແ՝ۚͰ࢖͍͍ͨ ✅ ✅ ✅ ✅ ✅ ⬜ ⬜ ⬜ δϣϒͷτϥϯβΫγϣϯ಺ݺͼग़͠ରԠ

Slide 78

Slide 78 text

Sidekiq Proͷ͍͍ͱ͜Ζ

Slide 79

Slide 79 text

Sidekiq Proͷ͍͍ͱ͜Ζ ✅ ΊͬͪΌڧྗ#BUDIFTػೳ

Slide 80

Slide 80 text

Sidekiq Proͷ͍͍ͱ͜Ζ ✅ ΊͬͪΌڧྗ#BUDIFTػೳ ͨ͘͞Μͷδϣϒ·ͱΊ࣮ߦͰɺେྔσʔλ΋҆શɾ҆৺ॲཧ

Slide 81

Slide 81 text

Sidekiq Proͷ͍͍ͱ͜Ζ ✅ δϣϒ͕ࣦഊͯ͠΋৺഑ෆཁʂ ✅ ΊͬͪΌڧྗ#BUDIFTػೳ ͨ͘͞Μͷδϣϒ·ͱΊ࣮ߦͰɺେྔσʔλ΋҆શɾ҆৺ॲཧ

Slide 82

Slide 82 text

Sidekiq Proͷ͍͍ͱ͜Ζ ✅ δϣϒ͕ࣦഊͯ͠΋৺഑ෆཁʂ ✅ ΊͬͪΌڧྗ#BUDIFTػೳ ͨ͘͞Μͷδϣϒ·ͱΊ࣮ߦͰɺେྔσʔλ΋҆શɾ҆৺ॲཧ ෳ਺ͷδϣϒΛҰͭͷτϥϯβΫγϣϯͱͯ͠ѻ͑Δ+PC'BJMVSFT δϣϒ͕ࣦഊͨ࣌͠ʹࣗಈతʹϦτϥΠ͢Δ3FMJBCMF2VFVFT ࣦഊͯ͠΋҆৺ઃܭͩͥʂ

Slide 83

Slide 83 text

Sidekiq Proͷ͍͍ͱ͜Ζ ✅ δϣϒ͕ࣦഊͯ͠΋৺഑ෆཁʂ ✅ ࠷ڧͷεέδϡʔϦϯάػೳ ✅ ΊͬͪΌڧྗ#BUDIFTػೳ ͨ͘͞Μͷδϣϒ·ͱΊ࣮ߦͰɺେྔσʔλ΋҆શɾ҆৺ॲཧ ෳ਺ͷδϣϒΛҰͭͷτϥϯβΫγϣϯͱͯ͠ѻ͑Δ+PC'BJMVSFT δϣϒ͕ࣦഊͨ࣌͠ʹࣗಈతʹϦτϥΠ͢Δ3FMJBCMF2VFVFT ࣦഊͯ͠΋҆৺ઃܭͩͥʂ

Slide 84

Slide 84 text

Sidekiq Proͷ͍͍ͱ͜Ζ ✅ δϣϒ͕ࣦഊͯ͠΋৺഑ෆཁʂ ✅ ࠷ڧͷεέδϡʔϦϯάػೳ ✅ ΊͬͪΌڧྗ#BUDIFTػೳ ͨ͘͞Μͷδϣϒ·ͱΊ࣮ߦͰɺେྔσʔλ΋҆શɾ҆৺ॲཧ ෳ਺ͷδϣϒΛҰͭͷτϥϯβΫγϣϯͱͯ͠ѻ͑Δ+PC'BJMVSFT δϣϒ͕ࣦഊͨ࣌͠ʹࣗಈతʹϦτϥΠ͢Δ3FMJBCMF2VFVFT ࣦഊͯ͠΋҆৺ઃܭͩͥʂ δϣϒͷ࣮ߦॱংΛࡉ੍͔͘ޚͰ͖Δ6OJRVF+PCT ಛఆͷ࣌ؒ·Ͱδϣϒͷ࣮ߦΛ஗ΒͤΔ4DIFEVMFE+PCT

Slide 85

Slide 85 text

ࣗࣾࣄ৘Λ;·͑ͨ4JEFLJR1SPͷධՁ

Slide 86

Slide 86 text

ࣗࣾࣄ৘Λ;·͑ͨ4JEFLJR1SPͷධՁ ৽͍͠"84Ϧιʔε͕ඞཁ ⬜

Slide 87

Slide 87 text

ࣗࣾࣄ৘Λ;·͑ͨ4JEFLJR1SPͷධՁ ৽͍͠"84Ϧιʔε͕ඞཁ 7BMLFZPS3FEJT͕ඞཁ ⬜

Slide 88

Slide 88 text

ࣗࣾࣄ৘Λ;·͑ͨ4JEFLJR1SPͷධՁ ৽͍͠"84Ϧιʔε͕ඞཁ ൿΊͨΔྗΛ׬ᘳʹ࢖͍͜ͳ͢ʹ͸େྔʹ͋Δ"DUJWF+PCόονͷॻ͖׵͕͍͑Δ 7BMLFZPS3FEJT͕ඞཁ ⬜ ⬜

Slide 89

Slide 89 text

ࣗࣾࣄ৘Λ;·͑ͨ4JEFLJR1SPͷධՁ ৽͍͠"84Ϧιʔε͕ඞཁ ൿΊͨΔྗΛ׬ᘳʹ࢖͍͜ͳ͢ʹ͸େྔʹ͋Δ"DUJWF+PCόονͷॻ͖׵͕͍͑Δ 7BMLFZPS3FEJT͕ඞཁ "DUJWF+PCͩͱશͯͷػೳΛ࢖͍͖Εͳ͍ ⬜ ⬜

Slide 90

Slide 90 text

ࣗࣾࣄ৘Λ;·͑ͨ4JEFLJR1SPͷධՁ ৽͍͠"84Ϧιʔε͕ඞཁ ൿΊͨΔྗΛ׬ᘳʹ࢖͍͜ͳ͢ʹ͸େྔʹ͋Δ"DUJWF+PCόονͷॻ͖׵͕͍͑Δ ͓ۚʂ 7BMLFZPS3FEJT͕ඞཁ "DUJWF+PCͩͱશͯͷػೳΛ࢖͍͖Εͳ͍ ⬜ ⬜ ⬜

Slide 91

Slide 91 text

ࣗࣾࣄ৘Λ;·͑ͨ4JEFLJR1SPͷධՁ ৽͍͠"84Ϧιʔε͕ඞཁ ൿΊͨΔྗΛ׬ᘳʹ࢖͍͜ͳ͢ʹ͸େྔʹ͋Δ"DUJWF+PCόονͷॻ͖׵͕͍͑Δ ͓ۚʂ 7BMLFZPS3FEJT͕ඞཁ "DUJWF+PCͩͱશͯͷػೳΛ࢖͍͖Εͳ͍ ༗ྉʂ ⬜ ⬜ ⬜

Slide 92

Slide 92 text

SolidQueue ༻్ʹԠͯ͡ෳ਺ͷΩϡʔ؅ཧ͕Մೳ ৽͍͠"84Ϧιʔε͕ෆཁ ઢܗεέʔϧΞ΢τՄೳ %#ϩοΫͰύϑΥʔϚϯεྼԽ͠ͳ͍ 3BJMTͱͷ਌࿨ੑ ఆظ࣮ߦॲཧج൫͕͋Δ δϣϒͷτϥϯβΫγϣϯ಺ݺͼग़͠ରԠ ແ՝ۚͰ࢖͍͍ͨ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅

Slide 93

Slide 93 text

Solid Queueͷ͍͍ͱ͜Ζ

Slide 94

Slide 94 text

Solid Queueͷ͍͍ͱ͜Ζ ઢܗεέʔϧΞ΢τେಘҙ

Slide 95

Slide 95 text

Solid Queueͷ͍͍ͱ͜Ζ ઢܗεέʔϧΞ΢τେಘҙ δϣϒΛ࣮ߦ͢Δ8PSLFSΛ૿΍ͤ͹૿΍͢΄ͲύϑΥʔϚϯε্͕͕Δɻ δϣϒऔಘͷ࢓૊Έ͕ϩοΫΛ࠷খݶ͢ΔΑ͏ͳ҆৺ઃܭ

Slide 96

Slide 96 text

Solid Queueͷ͍͍ͱ͜Ζ ઢܗεέʔϧΞ΢τେಘҙ δϣϒΛ࣮ߦ͢Δ8PSLFSΛ૿΍ͤ͹૿΍͢΄ͲύϑΥʔϚϯε্͕͕Δɻ δϣϒऔಘͷ࢓૊Έ͕ϩοΫΛ࠷খݶ͢ΔΑ͏ͳ҆৺ઃܭ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ⬜ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ⬜ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ⬜ ϦιʔεΛ༗ޮ׆༻͍ͨ͠

Slide 97

Slide 97 text

Solid Queueͷ͍͍ͱ͜Ζ ઢܗεέʔϧΞ΢τେಘҙ δϣϒΛ࣮ߦ͢Δ8PSLFSΛ૿΍ͤ͹૿΍͢΄ͲύϑΥʔϚϯε্͕͕Δɻ δϣϒऔಘͷ࢓૊Έ͕ϩοΫΛ࠷খݶ͢ΔΑ͏ͳ҆৺ઃܭ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ✅ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ϦιʔεΛ༗ޮ׆༻͍ͨ͠ ✅ ✅

Slide 98

Slide 98 text

Solid Queueͷ͍͍ͱ͜Ζ ઢܗεέʔϧΞ΢τେಘҙ δϣϒΛ࣮ߦ͢Δ8PSLFSΛ૿΍ͤ͹૿΍͢΄ͲύϑΥʔϚϯε্͕͕Δɻ δϣϒऔಘͷ࢓૊Έ͕ϩοΫΛ࠷খݶ͢ΔΑ͏ͳ҆৺ઃܭ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ✅ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ϦιʔεΛ༗ޮ׆༻͍ͨ͠ ✅ ✅ ✅

Slide 99

Slide 99 text

Solid Queueͷ͍͍ͱ͜Ζ

Slide 100

Slide 100 text

Solid Queueͷ͍͍ͱ͜Ζ ӡ༻ɾΠϯϑϥετϥΫνϟͷޮ཰Խ ✅

Slide 101

Slide 101 text

Solid Queueͷ͍͍ͱ͜Ζ ӡ༻ɾΠϯϑϥετϥΫνϟͷޮ཰Խ طଘͷ"VSPSBΠϯελϯεʹ৽͘͠DSFBUFEBUBCBTF͢Δ͚ͩ ৽͍͠ΠϯϑϥϦιʔε͕ෆཁ ✅

Slide 102

Slide 102 text

Solid Queueͷ͍͍ͱ͜Ζ ӡ༻ɾΠϯϑϥετϥΫνϟͷޮ཰Խ طଘͷ"VSPSBΠϯελϯεʹ৽͘͠DSFBUFEBUBCBTF͢Δ͚ͩ ৽͍͠ΠϯϑϥϦιʔε͕ෆཁ ✅ ࣋ͪ෺͕૿͑ͳ͍

Slide 103

Slide 103 text

Solid Queueͷ͍͍ͱ͜Ζ

Slide 104

Slide 104 text

Solid Queueͷ͍͍ͱ͜Ζ "DUJWF+PCόοΫΤϯυͩͥ

Slide 105

Slide 105 text

Solid Queueͷ͍͍ͱ͜Ζ "DUJWF+PCόοΫΤϯυͩͥ 3BJMTνʔϜ͕։ൃ͍ͯ͠ΔඇಉظόοΫΤϯυʂ

Slide 106

Slide 106 text

Solid Queueͷ͍͍ͱ͜Ζ "DUJWF+PCόοΫΤϯυͩͥ 3BJMTνʔϜ͕։ൃ͍ͯ͠ΔඇಉظόοΫΤϯυʂ ✅

Slide 107

Slide 107 text

Solid Queueͷ෺଍Γͳ͍ͱ͜Ζ

Slide 108

Slide 108 text

Solid Queueͷ෺଍Γͳ͍ͱ͜Ζ ؂ࢹػೳ͕ͳ͍Μͩͥ ⬜

Slide 109

Slide 109 text

Solid Queueͷ෺଍Γͳ͍ͱ͜Ζ ؂ࢹػೳ͕ͳ͍Μͩͥ ࣗલͰͳΜͱ͔͠ΖελΠϧ ⬜

Slide 110

Slide 110 text

ͱΓ͋͑ͣݟͨײ͡΍Γ͍ͨ͜ͱશ෦ղܾͯ͘͠Εͦ͏ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ϦιʔεΛ༗ޮ׆༻͍ͨ͠ ༏ઌ౓Λఆٛͨ͠Β༏ઌ౓Λकͬͯ΄͍͠ δϣϒ͝ͱʹΩϡʔͱ8PSLFSΛ෼͚͍ͨ ఆظ࣮ߦॲཧΛ·ͱΊ͍ͨ "DUJWF+PCʹҠߦ͍ͨ͠ʢ%FMBZFEઐ༻ͷॻ͖ํͱ"DUJWF+PCͷࠞࡏഇࢭʣ Ͱ͖Δ͚ͩ3BJMTඪ४ػೳʹد͍ͤͨ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅

Slide 111

Slide 111 text

4PMJE2VFVFͷ಺෦࣮૷ͷཧղ

Slide 112

Slide 112 text

Ͳ͏ͯ͠ඞཁ 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ

Slide 113

Slide 113 text

Ͳ͏ͯ͠ඞཁ 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ ؂ࢹ ύϑΥʔϚϯεɾνϡʔχϯά ো֐ରԠͱτϥϒϧγϡʔςΟϯά

Slide 114

Slide 114 text

Ͳ͏ͯ͠ඞཁ 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ ؂ࢹ ύϑΥʔϚϯεɾνϡʔχϯά ো֐ରԠͱτϥϒϧγϡʔςΟϯά %#ߏ੒Λ೺Ѳ͠ɺΫΤϦΛ౤͛ͯϝτϦΫεऔಘ͢Δ

Slide 115

Slide 115 text

Ͳ͏ͯ͠ඞཁ 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ ؂ࢹ ύϑΥʔϚϯεɾνϡʔχϯά ো֐ରԠͱτϥϒϧγϡʔςΟϯά %#ߏ੒Λ೺Ѳ͠ɺΫΤϦΛ౤͛ͯϝτϦΫεऔಘ͢Δ δϣϒͷॲཧ͢ΔϑϩʔΛཧղ͠ϫʔΧʔϓϩηε਺ͳͲͷௐઅ

Slide 116

Slide 116 text

Ͳ͏ͯ͠ඞཁ 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ ؂ࢹ ύϑΥʔϚϯεɾνϡʔχϯά ো֐ରԠͱτϥϒϧγϡʔςΟϯά %#ߏ੒Λ೺Ѳ͠ɺΫΤϦΛ౤͛ͯϝτϦΫεऔಘ͢Δ δϣϒͷॲཧ͢ΔϑϩʔΛཧղ͠ϫʔΧʔϓϩηε਺ͳͲͷௐઅ %#ߏ੒ͱδϣϒॲཧϑϩʔΛཧղ͠τϥϒϧΛະવʹ๷͍ͩΓ ൃੜ࣌ʹૉૣ͘ରԠͰ͖ΔΑ͏ʹ͓ͯ͘͠

Slide 117

Slide 117 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution શମਤʢؒʹ৭ʑ͋Δ͚Ͳओཁͳ΋ͷ͚ͩʣ

Slide 118

Slide 118 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution શମਤʢؒʹ৭ʑ͋Δ͚Ͳओཁͳ΋ͷ͚ͩʣ δϣϒ͕ΤϯΩϡʔ͞ΕΔͱೖΔςʔϒϧ

Slide 119

Slide 119 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution શମਤʢؒʹ৭ʑ͋Δ͚Ͳओཁͳ΋ͷ͚ͩʣ δϣϒ͕εέδϡʔϦϯά͞ΕΔͱ ೖΔςʔϒϧ

Slide 120

Slide 120 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution શମਤʢؒʹ৭ʑ͋Δ͚Ͳओཁͳ΋ͷ͚ͩʣ ࣮ߦ४උ0,ʹͳΔͱ ೖΔςʔϒϧ

Slide 121

Slide 121 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution શମਤʢؒʹ৭ʑ͋Δ͚Ͳओཁͳ΋ͷ͚ͩʣ ࣮ߦதʹͳΔͱ ೖΔςʔϒϧ

Slide 122

Slide 122 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution શମਤʢؒʹ৭ʑ͋Δ͚Ͳओཁͳ΋ͷ͚ͩʣ δϣϒ͕ࣦഊ͢Δͱ ೖΔςʔϒϧ

Slide 123

Slide 123 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ࣍ͷ࣮ߦ࣌ࠁ͕ܾ·͍ͬͯΔδϣϒͷ৔߹ scheduled_at

Slide 124

Slide 124 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ࣍ͷ࣮ߦ࣌ࠁ͕ܾ·͍ͬͯΔδϣϒͷ৔߹ scheduled_at

Slide 125

Slide 125 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ࣍ͷ࣮ߦ࣌ࠁ͕ܾ·͍ͬͯΔδϣϒͷ৔߹ scheduled_at

Slide 126

Slide 126 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ࣍ͷ࣮ߦ࣌ࠁ͕ܾ·͍ͬͯΔδϣϒͷ৔߹ scheduled_at

Slide 127

Slide 127 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ࣍ͷ࣮ߦ࣌ࠁ͕ܾ·͍ͬͯΔδϣϒͷ৔߹ scheduled_at

Slide 128

Slide 128 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ࣍ͷ࣮ߦ࣌ࠁ͕ܾ·͍ͬͯΔδϣϒͷ৔߹ scheduled_at

Slide 129

Slide 129 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ͙࣮͢ߦ͍ͨ͠δϣϒͷ৔߹

Slide 130

Slide 130 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ͙࣮͢ߦ͍ͨ͠δϣϒͷ৔߹

Slide 131

Slide 131 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ͙࣮͢ߦ͍ͨ͠δϣϒͷ৔߹

Slide 132

Slide 132 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ͙࣮͢ߦ͍ͨ͠δϣϒͷ৔߹

Slide 133

Slide 133 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ͙࣮͢ߦ͍ͨ͠δϣϒͷ৔߹

Slide 134

Slide 134 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution

Slide 135

Slide 135 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ؂ࢹ࣌͸ͦΕͧΕͷςʔϒϧΛ಄ʹೖΕͯΫΤϦΛॻ͘

Slide 136

Slide 136 text

job ready_execution 4PMJE2VFVFͷ಺෦࣮૷ͷཧղ scheduled_execution claimed_execution failed_execution ؂ࢹ࣌͸ͦΕͧΕͷςʔϒϧΛ಄ʹೖΕͯΫΤϦΛॻ͘ τϥϒϧ࣌͸Ͳ͜ʹ࣮ߦͨ͠δϣϒͷσʔλ͕ೖ͍ͬͯΔ͔Ͱݱঢ়͕Θ͔Δ

Slide 137

Slide 137 text

4PMJE2VFVFͰղܾ͢ΔઢܗεέʔϧΞ΢τ

Slide 138

Slide 138 text

+PC" Worker A Worker B +PC# +PC$ 4PMJE2VFVFͰղܾ͢ΔઢܗεέʔϧΞ΢τ +PC5BCMF

Slide 139

Slide 139 text

+PC" Worker A Worker B +PC# +PC$ 4PMJE2VFVFͰղܾ͢ΔઢܗεέʔϧΞ΢τ +PC5BCMF ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ

Slide 140

Slide 140 text

+PC" Worker A Worker B +PC# +PC$ 4PMJE2VFVFͰղܾ͢ΔઢܗεέʔϧΞ΢τ +PC5BCMF ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ 45"3553"/4"$5*0/ 4&-&$5 '30.KPCT@UBCMF'0361%"5&4,*1-0$,&%-*.*5  $0..*5

Slide 141

Slide 141 text

+PC" Worker A Worker B +PC# +PC$ 4PMJE2VFVFͰղܾ͢ΔઢܗεέʔϧΞ΢τ +PC5BCMF ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ 45"3553"/4"$5*0/ 4&-&$5 '30.KPCT@UBCMF'0361%"5&4,*1-0$,&%-*.*5  $0..*5

Slide 142

Slide 142 text

+PC" Worker A Worker B +PC# +PC$ 4PMJE2VFVFͰղܾ͢ΔઢܗεέʔϧΞ΢τ +PC5BCMF ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂʯ ʮۭ͍ͯΔδϣϒΛͭϩοΫͯ͠ɺԶʹ͘Εʂ ͨͩ͠ɺ୭͔͕ϩοΫ͍ͯ͠ΔδϣϒͳΒແࢹ͍͍ͯͥ͠ʂʯ 45"3553"/4"$5*0/ 4&-&$5 '30.KPCT@UBCMF'0361%"5&4,*1-0$,&%-*.*5  $0..*5

Slide 143

Slide 143 text

4PMJE2VFVFͷઢܗతͳεέʔϧΞ΢τ ຊʢॲཧʣ͕ͨ͘͞ΜചΕΔʢೖΔʣ͔Β ళһʢॲཧϓϩηεʣΛਓ͔Βਓʹͨ͠

Slide 144

Slide 144 text

4PMJE2VFVFͷઢܗతͳεέʔϧΞ΢τ ຊʢॲཧʣ͕ͨ͘͞ΜചΕΔʢೖΔʣ͔Β ళһʢॲཧϓϩηεʣΛਓ͔Βਓʹͨ͠ ి୎Λೋͭ༻ҙͯ͠ɺ͓٬͞Μ͸ ۭ͍͍ͯΔํʹߦͬͯ΋Β͏Α

Slide 145

Slide 145 text

4PMJE2VFVFͷઢܗతͳεέʔϧΞ΢τ ຊʢॲཧʣ͕ͨ͘͞ΜചΕΔʢೖΔʣ͔Β ళһʢॲཧϓϩηεʣΛਓ͔Βਓʹͨ͠ ଴ͪ࣌ؒϩοΫ͞Εͳ͍ͷͰ͓٬͞ΜΛࡹ͘εϐʔυ͕ʜ ి୎Λೋͭ༻ҙͯ͠ɺ͓٬͞Μ͸ ۭ͍͍ͯΔํʹߦͬͯ΋Β͏Α

Slide 146

Slide 146 text

4PMJE2VFVFͷઢܗతͳεέʔϧΞ΢τ ຊʢॲཧʣ͕ͨ͘͞ΜചΕΔʢೖΔʣ͔Β ళһʢॲཧϓϩηεʣΛਓ͔Βਓʹͨ͠ ഒͩͥʂ ଴ͪ࣌ؒϩοΫ͞Εͳ͍ͷͰ͓٬͞ΜΛࡹ͘εϐʔυ͕ʜ ి୎Λೋͭ༻ҙͯ͠ɺ͓٬͞Μ͸ ۭ͍͍ͯΔํʹߦͬͯ΋Β͏Α

Slide 147

Slide 147 text

w͸͡Ίʹɿ5FBDINF#J[ʹ͍ͭͯ w՝୊1BSUͦͷ wબఆ wઃܭͱ࣮૷ͦͯ͠Ҡߦ w՝୊1BSUͦͷ w·ͱΊ

Slide 148

Slide 148 text

Ҡߦखॱ %FMBZFEݻ༗ϝιουͷ๾໓ "DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ⬜ ⬜ ⬜ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ ⬜ ⬜ HFNVOJOTUBMMEFMBZFE ⬜

Slide 149

Slide 149 text

"DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ⬜ ⬜ ⬜ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ ⬜ ⬜ HFNVOJOTUBMMEFMBZFE ⬜ %FMBZFEݻ༗ϝιουͷ๾໓ Ҡߦखॱ

Slide 150

Slide 150 text

".delay" Method TestClass.delay.send_mail( user_id: user.id)

Slide 151

Slide 151 text

".delay" Method TestClass.delay.send_mail( user_id: user.id)

Slide 152

Slide 152 text

".delay" Method TestClass.delay.send_mail delayed_jobs Table TestClass.delay.send_mail( user_id: user.id)

Slide 153

Slide 153 text

".delay" Method TestClass.delay.send_mail delayed_jobs Table TestClass.delay.send_mail( user_id: user.id)

Slide 154

Slide 154 text

".delay" Method TestClass.delay.send_mail delayed_jobs Table TestClass.delay.send_mail( user_id: user.id)

Slide 155

Slide 155 text

".delay" Method TestClass.delay.send_mail delayed_jobs Table ॲཧ։࢝ʂ(P TestClass.delay.send_mail( user_id: user.id)

Slide 156

Slide 156 text

TestClass.delay.send_mail( user_id: user.id) ".delay" Method

Slide 157

Slide 157 text

TestClass.delay.send_mail( user_id: user.id) ".delay" Method Pros •γϯϓϧͰ෼͔Γ΍͍͢ɺ௚ײత •ActiveRecordͷϞσϧͱ૬ੑ͕ྑ͍

Slide 158

Slide 158 text

TestClass.delay.send_mail( user_id: user.id) ".delay" Method Pros •γϯϓϧͰ෼͔Γ΍͍͢ɺ௚ײత •ActiveRecordͷϞσϧͱ૬ੑ͕ྑ͍ Cons •Ωϡʔࢦఆ͕ෆՄ •༏ઌ౓Λࡉ͔͘ࢦఆ͕೉͍͠ •%FMBZFEʹґଘͨ͠ॻ͖ํʹͳͬͯ͠·͏

Slide 159

Slide 159 text

TestClass.delay.send_mail( user_id: user.id) ".delay" Method Pros •γϯϓϧͰ෼͔Γ΍͍͢ɺ௚ײత •ActiveRecordͷϞσϧͱ૬ੑ͕ྑ͍ Cons •Ωϡʔࢦఆ͕ෆՄ •༏ઌ౓Λࡉ͔͘ࢦఆ͕೉͍͠ •%FMBZFEʹґଘͨ͠ॻ͖ํʹͳͬͯ͠·͏ Delayedからのがれられない……

Slide 160

Slide 160 text

"DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ ⬜ ⬜ ⬜ HFNVOJOTUBMMEFMBZFE ⬜ ✅ ⬜ %FMBZFEݻ༗ϝιουͷ๾໓ Ҡߦखॱ

Slide 161

Slide 161 text

ActiveJobͰ໌ࣔతʹDelayedࢦఆ TestClass.delay.send_mail( user_id: user.id )

Slide 162

Slide 162 text

ActiveJobͰ໌ࣔతʹDelayedࢦఆ class TestClassJob < ApplicationJob self.queue_adapter = :delayed queue_as :mail def perform(user_id:) # ~~~~~ end end TestClass.delay.send_mail( user_id: user.id )

Slide 163

Slide 163 text

ActiveJobͰ໌ࣔతʹDelayedࢦఆ class TestClassJob < ApplicationJob self.queue_adapter = :delayed queue_as :mail def perform(user_id:) # ~~~~~ end end TestClass.delay.send_mail( user_id: user.id )

Slide 164

Slide 164 text

ActiveJobͰ໌ࣔతʹDelayedࢦఆ class TestClassJob < ApplicationJob self.queue_adapter = :delayed queue_as :mail def perform(user_id:) # ~~~~~ end end 4PMJE2VFVFΛJOTUBMMͯ͠΋%FMBZFEͰಈ࡞ TestClass.delay.send_mail( user_id: user.id )

Slide 165

Slide 165 text

ActiveJobͰ໌ࣔతʹDelayedࢦఆ class TestClassJob < ApplicationJob self.queue_adapter = :delayed queue_as :mail def perform(user_id:) # ~~~~~ end end 4PMJE2VFVFΛJOTUBMMͯ͠΋%FMBZFEͰಈ࡞ Ҡߦத4PMJE2VFVFؔ࿈ͷ13ΛϚʔδͯ͠΋ ՔಇதγεςϜʹ͸Өڹͳ͠ʂ TestClass.delay.send_mail( user_id: user.id )

Slide 166

Slide 166 text

"DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ ⬜ ⬜ ⬜ HFNVOJOTUBMMEFMBZFE ⬜ ✅ ✅ %FMBZFEݻ༗ϝιουͷ๾໓ Ҡߦखॱ

Slide 167

Slide 167 text

Solid Queue Con fi guration production: dispatchers: - polling_interval: 1 batch_size: 500 workers: - queues: "default" threads: 2 processes: 5 polling_interval: 5 - queues: "mail" threads: 2 processes: 5 polling_interval: 1 config/solid_queue/queue_config.yml Dispatcher TPMJE@RVFVF@KPCT TPMJE@RVFVF@SFBEZ@FYFDVUJPOT worker:default worker: mail

Slide 168

Slide 168 text

Solid Queue Con fi guration production: dispatchers: - polling_interval: 1 batch_size: 500 workers: - queues: "default" threads: 2 processes: 5 polling_interval: 5 - queues: "mail" threads: 2 processes: 5 polling_interval: 1 config/solid_queue/queue_config.yml Dispatcher TPMJE@RVFVF@KPCT TPMJE@RVFVF@SFBEZ@FYFDVUJPOT worker:default worker: mail

Slide 169

Slide 169 text

Solid Queue Con fi guration production: dispatchers: - polling_interval: 1 batch_size: 500 workers: - queues: "default" threads: 2 processes: 5 polling_interval: 5 - queues: "mail" threads: 2 processes: 5 polling_interval: 1 config/solid_queue/queue_config.yml Dispatcher TPMJE@RVFVF@KPCT TPMJE@RVFVF@SFBEZ@FYFDVUJPOT worker:default worker: mail

Slide 170

Slide 170 text

Solid Queue Con fi guration production: dispatchers: - polling_interval: 1 batch_size: 500 workers: - queues: "default" threads: 2 processes: 5 polling_interval: 5 - queues: "mail" threads: 2 processes: 5 polling_interval: 1 config/solid_queue/queue_config.yml Dispatcher TPMJE@RVFVF@KPCT TPMJE@RVFVF@SFBEZ@FYFDVUJPOT worker:default worker: mail

Slide 171

Slide 171 text

Solid Queue Con fi guration:2 production: dispatchers: - polling_interval: 1 batch_size: 500 workers: - queues: "default" threads: 2 processes: 5 polling_interval: 5 - queues: "mail" threads: 2 processes: 5 polling_interval: 1 config/solid_queue/queue_config.yml

Slide 172

Slide 172 text

Solid Queue Con fi guration:2 ௨ৗͷδϣϒ production: dispatchers: - polling_interval: 1 batch_size: 500 workers: - queues: "default" threads: 2 processes: 5 polling_interval: 5 - queues: "mail" threads: 2 processes: 5 polling_interval: 1 config/solid_queue/queue_config.yml

Slide 173

Slide 173 text

Solid Queue Con fi guration:2 ௨ৗͷδϣϒ ϝʔϧૹ৴༻ production: dispatchers: - polling_interval: 1 batch_size: 500 workers: - queues: "default" threads: 2 processes: 5 polling_interval: 5 - queues: "mail" threads: 2 processes: 5 polling_interval: 1 config/solid_queue/queue_config.yml

Slide 174

Slide 174 text

con fi g.solid_queue.use_skip_locked = true con fi g.solid_queue.shutdown_timeout = 600.seconds con fi g.solid_queue.silence_polling = true con fi g.solid_queue.preserve_ fi nished_jobs = false Solid Queue Configuration3 con fi g/initializers/solid_queue.rb

Slide 175

Slide 175 text

con fi g.solid_queue.use_skip_locked = true con fi g.solid_queue.shutdown_timeout = 600.seconds con fi g.solid_queue.silence_polling = true con fi g.solid_queue.preserve_ fi nished_jobs = false Solid Queue Configuration3 61%"5&4,*1-0$,&%Λ࢖͏ con fi g/initializers/solid_queue.rb

Slide 176

Slide 176 text

con fi g.solid_queue.use_skip_locked = true con fi g.solid_queue.shutdown_timeout = 600.seconds con fi g.solid_queue.silence_polling = true con fi g.solid_queue.preserve_ fi nished_jobs = false Solid Queue Configuration3 61%"5&4,*1-0$,&%Λ࢖͏ ϓϩηεʹ5&3.γάφϧૹ৴ޙϓϩηεऴྃ·Ͱͷ࣌ؒʢ෼ʣ con fi g/initializers/solid_queue.rb

Slide 177

Slide 177 text

con fi g.solid_queue.use_skip_locked = true con fi g.solid_queue.shutdown_timeout = 600.seconds con fi g.solid_queue.silence_polling = true con fi g.solid_queue.preserve_ fi nished_jobs = false Solid Queue Configuration3 61%"5&4,*1-0$,&%Λ࢖͏ ϓϩηεʹ5&3.γάφϧૹ৴ޙϓϩηεऴྃ·Ͱͷ࣌ؒʢ෼ʣ ϫʔΧʔͱσΟεύονϟΛϙʔϦϯά͢Δͱ͖ͷ"DUJWF3FDPSEϩάΛ཈੍͢Δ con fi g/initializers/solid_queue.rb

Slide 178

Slide 178 text

con fi g.solid_queue.use_skip_locked = true con fi g.solid_queue.shutdown_timeout = 600.seconds con fi g.solid_queue.silence_polling = true con fi g.solid_queue.preserve_ fi nished_jobs = false Solid Queue Configuration3 61%"5&4,*1-0$,&%Λ࢖͏ ϓϩηεʹ5&3.γάφϧૹ৴ޙϓϩηεऴྃ·Ͱͷ࣌ؒʢ෼ʣ ϫʔΧʔͱσΟεύονϟΛϙʔϦϯά͢Δͱ͖ͷ"DUJWF3FDPSEϩάΛ཈੍͢Δ ׬ྃͨ͠δϣϒΛςʔϒϧʹ࢒͞ͳ͍ con fi g/initializers/solid_queue.rb

Slide 179

Slide 179 text

8FC1PE %FMBZFE1PE Infrastructure(Before) EKS main DB

Slide 180

Slide 180 text

8FC1PE 4PMJE2VFVF .BJO Solid Queue Infrastructure(After) main DB Queue DB EKS

Slide 181

Slide 181 text

EFMBZϝιουͷ๾໓ "DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ ⬜ ⬜ HFNVOJOTUBMMEFMBZFE ⬜ ✅ ✅ ✅ Ҡߦखॱ

Slide 182

Slide 182 text

Migration Requirements EFMBZϝιουͷ๾໓ "DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ ⬜ ⬜ HFNVOJOTUBMMEFMBZFE ⬜ ✅ ✅ ✅

Slide 183

Slide 183 text

؂ࢹ͢Δͧʂ EFMBZFEฤ • delayed.job.count - δϣϒͷ૯਺ • delayed.job.future_count -ະདྷʹ࣮ߦ͞ΕΔδϣϒͷ਺ • delayed.job.working_count - ݱࡏॲཧதͷδϣϒ਺ • delayed.job.workable_count - ॲཧ଴ͪͷδϣϒ • delayed.job.erroring_count - ࣮ߦʹࣦഊͨ͠δϣϒʢࣦഊճ਺͕ճҎ্ʣ • delayed.job.failed_count - ࠷ऴతʹࣦഊͨ͠δϣϒʢ΋͏ϦτϥΠͰ͖ͳ͍ʣ • delayed.job.max_lock_age - ͣͬͱϩοΫ͞Εଓ͚͍ͯΔδϣϒ • delayed.job.max_age - ࠷΋ݹ͍δϣϒͷܦա࣌ؒ • %FMBZFEͷػೳͱͯ͠ ఏڙ͞ΕͯΔΜͩͥʂ

Slide 184

Slide 184 text

؂ࢹ͢Δͧʂ 4PMJE2VFVFฤ • job.count - δϣϒͷ૯਺ • job.future_count -ະདྷʹ࣮ߦ͞ΕΔδϣϒͷ਺ • job.working_count - ݱࡏॲཧதͷδϣϒ਺ • job.workable_count - ॲཧ଴ͪͷδϣϒ • job.erroring_count - ࣮ߦʹࣦഊͨ͠δϣϒʢࣦഊճ਺͕ճҎ্ʣ • job.failed_count - ࠷ऴతʹࣦഊͨ͠δϣϒʢ΋͏ϦτϥΠͰ͖ͳ͍ʣ • job.max_lock_age - ͣͬͱϩοΫ͞Εଓ͚͍ͯΔδϣϒ • job.max_age - ࠷΋ݹ͍δϣϒͷܦա࣌ؒ •

Slide 185

Slide 185 text

؂ࢹ͢Δͧʂ 4PMJE2VFVFฤ • job.count - δϣϒͷ૯਺ • job.future_count -ະདྷʹ࣮ߦ͞ΕΔδϣϒͷ਺ • job.working_count - ݱࡏॲཧதͷδϣϒ਺ • job.workable_count - ॲཧ଴ͪͷδϣϒ • job.erroring_count - ࣮ߦʹࣦഊͨ͠δϣϒʢࣦഊճ਺͕ճҎ্ʣ • job.failed_count - ࠷ऴతʹࣦഊͨ͠δϣϒʢ΋͏ϦτϥΠͰ͖ͳ͍ʣ • job.max_lock_age - ͣͬͱϩοΫ͞Εଓ͚͍ͯΔδϣϒ • job.max_age - ࠷΋ݹ͍δϣϒͷܦա࣌ؒ • 4PMJE2VFVFͷػೳͱͯ͠ ఏڙ͞Ε͍ͯͳ͍ͥʂ

Slide 186

Slide 186 text

؂ࢹ͢Δͧʂ 4PMJE2VFVFฤ ࣗલ࣮૷͠·ͨ͠ʂ

Slide 187

Slide 187 text

؂ࢹ͢Δͧʂ 4PMJE2VFVFฤ ࣗલ࣮૷͠·ͨ͠ʂ

Slide 188

Slide 188 text

؂ࢹ͢Δͧʂ 4PMJE2VFVFฤ

Slide 189

Slide 189 text

ϝτϦΫε໊ ղઆ future_count কདྷ࣮ߦ͞ΕΔδϣϒͷ਺ɻಛఆͷ࣌ࠁʹ࣮ߦ͕εέδϡ ʔϧ͞Ε͍ͯΔδϣϒͷ߹ܭ workable_count ॲཧ଴ͪͷδϣϒͷ਺ɻϫʔΧʔʹ͍ͭͰ΋࣮ߦͯ͠΋Β ͑Δঢ়ଶͷδϣϒͷ߹ܭ working_count ݱࡏॲཧதͷδϣϒͷ਺ɻϫʔΧʔ͕ࠓ·͞ʹಈ͔͍ͯ͠ Δδϣϒͷ߹ܭ retry_count ࠶࣮ߦΛ଴͍ͬͯΔδϣϒͷ਺ɻҰ౓ࣦഊͯ͠ɺϦτϥΠ ॲཧ͕ઃఆ͞Ε͍ͯΔδϣϒͷ߹ܭ ؂ࢹ͢Δͧʂ 4PMJE2VFVFฤ Ωϡʔͷঢ়ଶϝτϦΫε

Slide 190

Slide 190 text

ϝτϦΫε໊ ղઆ future_count কདྷ࣮ߦ͞ΕΔδϣϒͷ਺ɻಛఆͷ࣌ࠁʹ࣮ߦ͕εέδϡ ʔϧ͞Ε͍ͯΔδϣϒͷ߹ܭ workable_count ॲཧ଴ͪͷδϣϒͷ਺ɻϫʔΧʔʹ͍ͭͰ΋࣮ߦͯ͠΋Β ͑Δঢ়ଶͷδϣϒͷ߹ܭ working_count ݱࡏॲཧதͷδϣϒͷ਺ɻϫʔΧʔ͕ࠓ·͞ʹಈ͔͍ͯ͠ Δδϣϒͷ߹ܭ retry_count ࠶࣮ߦΛ଴͍ͬͯΔδϣϒͷ਺ɻҰ౓ࣦഊͯ͠ɺϦτϥΠ ॲཧ͕ઃఆ͞Ε͍ͯΔδϣϒͷ߹ܭ ؂ࢹ͢Δͧʂ 4PMJE2VFVFฤ ϝτϦΫε໊ ղઆ throughput_rate ௚ۙ෼ؒʹॲཧ͕׬ྃͨ͠δϣϒͷ਺ max_age ࠷௕଴ػ࣌ؒɻ࠷΋௕͘଴͍ͬͯΔδϣϒͷܦա࣌ؒ median_wait_time ଴ػ࣌ؒͷதԝ஋ max_lock_age ࠷௕࣮ߦɻ average_lock_age ฏۉ࣮ߦ࣌ؒɻ࣮ߦதͷδϣϒͷฏۉతͳॲཧ࣌ؒ Ωϡʔͷঢ়ଶϝτϦΫε ύϑΥʔϚϯεϝτϦΫε

Slide 191

Slide 191 text

ϝτϦΫε໊ ղઆ future_count কདྷ࣮ߦ͞ΕΔδϣϒͷ਺ɻಛఆͷ࣌ࠁʹ࣮ߦ͕εέδϡ ʔϧ͞Ε͍ͯΔδϣϒͷ߹ܭ workable_count ॲཧ଴ͪͷδϣϒͷ਺ɻϫʔΧʔʹ͍ͭͰ΋࣮ߦͯ͠΋Β ͑Δঢ়ଶͷδϣϒͷ߹ܭ working_count ݱࡏॲཧதͷδϣϒͷ਺ɻϫʔΧʔ͕ࠓ·͞ʹಈ͔͍ͯ͠ Δδϣϒͷ߹ܭ retry_count ࠶࣮ߦΛ଴͍ͬͯΔδϣϒͷ਺ɻҰ౓ࣦഊͯ͠ɺϦτϥΠ ॲཧ͕ઃఆ͞Ε͍ͯΔδϣϒͷ߹ܭ ؂ࢹ͢Δͧʂ 4PMJE2VFVFฤ ϝτϦΫε໊ ղઆ throughput_rate ௚ۙ෼ؒʹॲཧ͕׬ྃͨ͠δϣϒͷ਺ max_age ࠷௕଴ػ࣌ؒɻ࠷΋௕͘଴͍ͬͯΔδϣϒͷܦա࣌ؒ median_wait_time ଴ػ࣌ؒͷதԝ஋ max_lock_age ࠷௕࣮ߦɻ average_lock_age ฏۉ࣮ߦ࣌ؒɻ࣮ߦதͷδϣϒͷฏۉతͳॲཧ࣌ؒ Ωϡʔͷঢ়ଶϝτϦΫε ύϑΥʔϚϯεϝτϦΫε ϝτϦΫε໊ ղઆ erroring_count Τϥʔ෇͖Ͱࣦഊͨ͠δϣϒͷ਺ɻΤϥʔϝοηʔδ͕෇͍͍ͯΔ ࣦഊδϣϒͷ߹ܭɻ failed_count ௚ۙ1࣌ؒͰࣦഊͨ͠δϣϒͷ૯਺ɻΤϥʔͷ༗ແΛ໰Θͣɺࣦഊ͠ ͨδϣϒͷ߹ܭɻ stale_jobs_count ఀ଺͍ͯ͠Δδϣϒͷ਺ɻ௕࣌ؒʢ1࣌ؒҎ্ʣ࣮ߦதͷδϣϒͰɺ σουϩοΫ΍ແݶϧʔϓͷՄೳੑɻ error_rate Τϥʔ཰ɻ௚ۙ1࣌ؒͷશδϣϒͷ͏ͪɺΤϥʔͰࣦഊׂͨ͠߹ɻ worker_utilization ϫʔΧʔͷ࢖༻཰ɻׂΓ౰ͯΒΕͨϫʔΧʔ͕ͲΕ͚ͩಇ͍͍ͯΔ ͔ͷׂ߹ɻ alert_age_percent Ξϥʔτᮢ஋ൺ཰ͩɻ༏ઌ౓Λߟྀͨ͠଴ػ͕࣌ؒɺࣄલʹઃఆ͠ ͨᮢ஋ʹͲΕ͚͍͍ͩۙͮͯΔ͔Λׂࣔ͢߹ɻ ΤϥʔΞϥʔτϝτϦΫε

Slide 192

Slide 192 text

No content

Slide 193

Slide 193 text

Migration Requirements EFMBZϝιουͷ๾໓ "DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ ⬜ HFNVOJOTUBMMEFMBZFE ⬜ ✅ ✅ ✅ ✅

Slide 194

Slide 194 text

Delayed -> SolidQueue!

Slide 195

Slide 195 text

Delayed -> SolidQueue! class TestClassJob < ApplicationJob self.queue_adapter = :delayed queue_as :mail def perform(user_id:) # ~~~~~ end end

Slide 196

Slide 196 text

Delayed -> SolidQueue! class TestClassJob < ApplicationJob self.queue_adapter = :delayed queue_as :mail def perform(user_id:) # ~~~~~ end end class TestClassJob < ApplicationJob self.queue_adapter = :solid_queue queue_as :mail def perform(user_id:) # ~~~~~ end end

Slide 197

Slide 197 text

Delayed -> SolidQueue! EFMBZFETPMJE@RVFVFʹมߋʂ class TestClassJob < ApplicationJob self.queue_adapter = :delayed queue_as :mail def perform(user_id:) # ~~~~~ end end class TestClassJob < ApplicationJob self.queue_adapter = :solid_queue queue_as :mail def perform(user_id:) # ~~~~~ end end

Slide 198

Slide 198 text

Delayed -> SolidQueue! EFMBZFETPMJE@RVFVFʹมߋʂ Y+PCT$PVOU class TestClassJob < ApplicationJob self.queue_adapter = :delayed queue_as :mail def perform(user_id:) # ~~~~~ end end class TestClassJob < ApplicationJob self.queue_adapter = :solid_queue queue_as :mail def perform(user_id:) # ~~~~~ end end

Slide 199

Slide 199 text

No content

Slide 200

Slide 200 text

׬શҠߦ࡞ۀʂEPOF

Slide 201

Slide 201 text

׬શҠߦ࡞ۀʂEPOF ΍͔ͬͨʁ

Slide 202

Slide 202 text

Migration Requirements EFMBZϝιουͷ๾໓ "DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ HFNVOJOTUBMMEFMBZFE ⬜ ✅ ✅ ✅ ✅ ⬜ Ͱ͖ͯͳ͍ͥʂ

Slide 203

Slide 203 text

w͸͡Ίʹɿ5FBDINF#J[ʹ͍ͭͯ w՝୊1BSUʢҠߦલʣ wબఆ wઃܭͱ࣮૷ wҠߦ w՝୊1BSU Ҡߦޙ  w·ͱΊ

Slide 204

Slide 204 text

FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUޮ͍ͯͳ͍໰୊

Slide 205

Slide 205 text

೥ϦϦʔε3BJMT೥݄౰࣌3BJMT enqueue_after_transaction_commitઃఆ͞Εͯͳ͘ͳ͍ʁ

Slide 206

Slide 206 text

FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUͱ͸

Slide 207

Slide 207 text

FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUͱ͸ %#ͷτϥϯβΫγϣϯ੔߹ੑΛ༗ޮʹͰ͖ΔΦϓγϣϯɻ

Slide 208

Slide 208 text

FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUͱ͸ %#ͷτϥϯβΫγϣϯ੔߹ੑΛ༗ޮʹͰ͖ΔΦϓγϣϯɻ class ApplicationJob < ActiveJob::Base self.enqueue_after_transaction_commit = true end

Slide 209

Slide 209 text

enqueue_after_transaction_commit͸3BJMT͔Β ༻్ʹԠͯ͡ෳ਺ͷΩϡʔ؅ཧ͕Մೳ ৽͍͠"84Ϧιʔε͕ෆཁ ઢܗεέʔϧΞ΢τՄೳ %#ϩοΫͰύϑΥʔϚϯεྼԽ͠ͳ͍ 3BJMTͱͷ਌࿨ੑ ఆظ࣮ߦॲཧج൫͕͋Δ τϥϯβΫγϣϯ಺ݺͼग़͠ରԠ ແ՝ۚͰ࢖͍͍ͨ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅

Slide 210

Slide 210 text

೥ϦϦʔε3BJMT೥݄౰࣌3BJMT enqueue_after_transaction_commit....ʁ

Slide 211

Slide 211 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊

Slide 212

Slide 212 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ ϢʔβΛ%#ʹอଘʢະίϛοτʣ

Slide 213

Slide 213 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ ϢʔβΛ%#ʹอଘʢະίϛοτʣ δϣϒΛΩϡʔʹೖΕΔ

Slide 214

Slide 214 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ ϢʔβΛ%#ʹอଘʢະίϛοτʣ δϣϒΛΩϡʔʹೖΕΔ δϣϒ͸Ϣʔβ͕࡞੒ࡁΈલఏͰ࣮ߦ

Slide 215

Slide 215 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ ϢʔβΛ%#ʹอଘʢະίϛοτʣ δϣϒΛΩϡʔʹೖΕΔ δϣϒ͸Ϣʔβ͕࡞੒ࡁΈલఏͰ࣮ߦ ݺͼग़͠ݩϝιουͰྫ֎ൃੜ

Slide 216

Slide 216 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ ϢʔβΛ%#ʹอଘʢະίϛοτʣ δϣϒΛΩϡʔʹೖΕΔ δϣϒ͸Ϣʔβ͕࡞੒ࡁΈલఏͰ࣮ߦ ݺͼग़͠ݩϝιουͰྫ֎ൃੜ VTFS͕ͳ͍ͷʹ ॲཧ࣮ߦ͞ΕΔʂʂ

Slide 217

Slide 217 text

8FC1PE %FMBZFE1PE τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ EKS main DB

Slide 218

Slide 218 text

8FC1PE %FMBZFE1PE τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ EKS main DB 8FCʹΞΫηε͕͋Δ

Slide 219

Slide 219 text

8FC1PE %FMBZFE1PE τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ EKS main DB 8FCʹΞΫηε͕͋Δ τϥϯβΫγϣϯ։࢝ˍϢʔβ࡞੒

Slide 220

Slide 220 text

8FC1PE %FMBZFE1PE τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ EKS main DB 8FCʹΞΫηε͕͋Δ τϥϯβΫγϣϯ։࢝ˍϢʔβ࡞੒ δϣϒΛΤϯΩϡʔʢະίϛοτʣ

Slide 221

Slide 221 text

8FC1PE %FMBZFE1PE τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ EKS main DB 8FCʹΞΫηε͕͋Δ τϥϯβΫγϣϯ։࢝ˍϢʔβ࡞੒ δϣϒΛΤϯΩϡʔʢະίϛοτʣ ίϛοτ͠ͳ͍ݶΓXPSLFS͸ δϣϒΛऔಘෆՄೳ Y

Slide 222

Slide 222 text

8FC1PE 4PMJE2VFVF .BJO main DB Queue DB EKS τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊

Slide 223

Slide 223 text

8FC1PE 4PMJE2VFVF .BJO main DB Queue DB EKS τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ 8FCʹΞΫηε͕͋Δ

Slide 224

Slide 224 text

8FC1PE 4PMJE2VFVF .BJO main DB Queue DB EKS τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ 8FCʹΞΫηε͕͋Δ τϥϯβΫγϣϯ։࢝

Slide 225

Slide 225 text

8FC1PE 4PMJE2VFVF .BJO main DB Queue DB EKS τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ 8FCʹΞΫηε͕͋Δ τϥϯβΫγϣϯ։࢝ ॲཧͷ%#อଘॲཧʢະίϛοτʣ

Slide 226

Slide 226 text

8FC1PE 4PMJE2VFVF .BJO main DB Queue DB EKS τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ 8FCʹΞΫηε͕͋Δ τϥϯβΫγϣϯ։࢝ ॲཧͷ%#อଘॲཧʢະίϛοτʣ Ωϡʔ%#ʹΩϡʔ͕͸͍Δ

Slide 227

Slide 227 text

8FC1PE 4PMJE2VFVF .BJO main DB Queue DB EKS τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ 8FCʹΞΫηε͕͋Δ τϥϯβΫγϣϯ։࢝ ॲཧͷ%#อଘॲཧʢະίϛοτʣ Ωϡʔ%#ʹΩϡʔ͕͸͍Δ 8PSLFS͕औಘʹߦ͘

Slide 228

Slide 228 text

8FC1PE 4PMJE2VFVF .BJO main DB Queue DB EKS τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ 8FCʹΞΫηε͕͋Δ τϥϯβΫγϣϯ։࢝ ॲཧͷ%#อଘॲཧʢະίϛοτʣ Ωϡʔ%#ʹΩϡʔ͕͸͍Δ NBJO%#ͷίϛοτঢ়گ͸2VFVF%#͸஌ͬͨ͜ͱͰ͸ͳ͍ 8PSLFS͕औಘʹߦ͘

Slide 229

Slide 229 text

8FC1PE 4PMJE2VFVF .BJO main DB Queue DB EKS τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ 8FCʹΞΫηε͕͋Δ τϥϯβΫγϣϯ։࢝ ॲཧͷ%#อଘॲཧʢະίϛοτʣ Ωϡʔ%#ʹΩϡʔ͕͸͍Δ NBJO%#ͷίϛοτঢ়گ͸2VFVF%#͸஌ͬͨ͜ͱͰ͸ͳ͍ 8PSLFS͕औಘʹߦ͘ ίϛοτલʹδϣϒ͕࣮ߦ͞ΕΔ

Slide 230

Slide 230 text

ղܾ๏τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊

Slide 231

Slide 231 text

ղܾ๏τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUΛ࢖͑ΔΑ͏ʹ͢Δʂ

Slide 232

Slide 232 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end ղܾ๏τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUΛ࢖͑ΔΑ͏ʹ͢Δʂ

Slide 233

Slide 233 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end ղܾ๏τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ ϢʔβΛ%#ʹอଘʢະίϛοτʣ FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUΛ࢖͑ΔΑ͏ʹ͢Δʂ

Slide 234

Slide 234 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end ղܾ๏τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ ϢʔβΛ%#ʹอଘʢະίϛοτʣ ඇಉظॲཧ͕Α͹ΕΔ ʢΤϯΩϡʔ͞Εͳ͍ʣ FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUΛ࢖͑ΔΑ͏ʹ͢Δʂ

Slide 235

Slide 235 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end ղܾ๏τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ ϢʔβΛ%#ʹอଘʢະίϛοτʣ ඇಉظॲཧ͕Α͹ΕΔ ʢΤϯΩϡʔ͞Εͳ͍ʣ FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUΛ࢖͑ΔΑ͏ʹ͢Δʂ ݺͼग़͠ݩϝιουͰྫ֎ൃੜ

Slide 236

Slide 236 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end ղܾ๏τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ ϢʔβΛ%#ʹอଘʢະίϛοτʣ ඇಉظॲཧ͕Α͹ΕΔ ʢΤϯΩϡʔ͞Εͳ͍ʣ FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUΛ࢖͑ΔΑ͏ʹ͢Δʂ Ϣʔβ͸อଘ͞Εͳ͍ ʢ%#ʹίϛοτ͞Εͳ͍ʣ ݺͼग़͠ݩϝιουͰྫ֎ൃੜ

Slide 237

Slide 237 text

ActiveRecord::Base.transaction do user = User.create!(name: "৽͍͠Ϣʔβʔ") WelcomeEmailJob.perform_later(user.id) raise "Something went wrong!" end ղܾ๏τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ ϢʔβΛ%#ʹอଘʢະίϛοτʣ ඇಉظॲཧ͕Α͹ΕΔ ʢΤϯΩϡʔ͞Εͳ͍ʣ FORVFVF@BGUFS@USBOTBDUJPO@DPNNJUΛ࢖͑ΔΑ͏ʹ͢Δʂ Ϣʔβ͸อଘ͞Εͳ͍ ʢ%#ʹίϛοτ͞Εͳ͍ʣ ੒ޭ͠ͳ͔ͬͨͷͰ ࠷ऴతʹ΋ΤϯΩϡʔ͞Εͳ͍ʂ ݺͼग़͠ݩϝιουͰྫ֎ൃੜ

Slide 238

Slide 238 text

τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊

Slide 239

Slide 239 text

τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ 5FBDINF#J[ʹ͸͋Δͷ͔ʁ

Slide 240

Slide 240 text

τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ CFGPSF@YYYBGUFS@YYYYʹॻ͔Εͨ΋ͷ 5FBDINF#J[ʹ͸͋Δͷ͔ʁ

Slide 241

Slide 241 text

τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ CFGPSF@YYYBGUFS@YYYYʹॻ͔Εͨ΋ͷ ໌ࣔతʹUSBOTBDUJPOͰғ·Εͨ΋ͷ 5FBDINF#J[ʹ͸͋Δͷ͔ʁ

Slide 242

Slide 242 text

τϥϯβΫγϣϯ಺෦ʹॻ͔Εͨδϣϒ໰୊ CFGPSF@YYYBGUFS@YYYYʹॻ͔Εͨ΋ͷ 3BJMT͋͛Δ͔ʂʂ ໌ࣔతʹUSBOTBDUJPOͰғ·Εͨ΋ͷ 5FBDINF#J[ʹ͸͋Δͷ͔ʁ

Slide 243

Slide 243 text

͋͛·ͨ͠ʂ

Slide 244

Slide 244 text

5SBOTBDUJPO׬ྃલʹ ΤϯΩϡʔͤͯ͞ ࣮ߦͯ͠ཉ͍͠৔߹͸Ͳ͏͢Δͷʁ

Slide 245

Slide 245 text

5SBOTBDUJPO׬ྃલʹ ΤϯΩϡʔͤͯ͞ ࣮ߦͯ͠ཉ͍͠৔߹͸Ͳ͏͢Δͷʁ ઃܭΛݟ௚ͯ͠

Slide 246

Slide 246 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊

Slide 247

Slide 247 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊

Slide 248

Slide 248 text

4PMJE2VFVFϦϦʔε͔Β਺೔ޙ 4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ॏ͘ͳ͍ʁ

Slide 249

Slide 249 text

4PMJE2VFVFϦϦʔε͔Β਺೔ޙ 4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ॏ͘ͳ͍ʁ ͱ͍͏͔ΞΫηε͢Δͱॏ͘ͳ͍ʁ

Slide 250

Slide 250 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸%#ͷߴෛՙ

Slide 251

Slide 251 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸%#ͷߴෛՙ

Slide 252

Slide 252 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸%#ͷߴෛՙ

Slide 253

Slide 253 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸

Slide 254

Slide 254 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸

Slide 255

Slide 255 text

4PMJE2VFVF %# 4PMJE2VFVF 4PMJE2VFVF 4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ 2VFVF%#

Slide 256

Slide 256 text

4PMJE2VFVF %# 4PMJE2VFVF 4PMJE2VFVF 4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸ॏྔڃδϣϒ͕େྔʹฒྻ࣮ߦ͞ΕΔΑ͏ʹͳͬͨ͜ͱ 2VFVF%#

Slide 257

Slide 257 text

4PMJE2VFVF %# 4PMJE2VFVF 4PMJE2VFVF ͍͢͝ΫΤϦͷδϣϒ͕͍ͬͺ͍͖ͨͷͰॲཧͨ͠Ζ͔ 4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸ॏྔڃδϣϒ͕େྔʹฒྻ࣮ߦ͞ΕΔΑ͏ʹͳͬͨ͜ͱ 2VFVF%#

Slide 258

Slide 258 text

4PMJE2VFVF %# 4PMJE2VFVF ॲཧ8PSLFSͱϓϩηε΋্͕Γ4PMJE2VFVFॲཧ଎౓͸%FMBZFEͷഒ΍ʂ 4PMJE2VFVF ͍͢͝ΫΤϦͷδϣϒ͕͍ͬͺ͍͖ͨͷͰॲཧͨ͠Ζ͔ 4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸ॏྔڃδϣϒ͕େྔʹฒྻ࣮ߦ͞ΕΔΑ͏ʹͳͬͨ͜ͱ 2VFVF%#

Slide 259

Slide 259 text

4PMJE2VFVF %# 4PMJE2VFVF 4PMJE2VFVF ͍͢͝ΫΤϦͷδϣϒ͕͍ͬͺ͍͖ͨͷͰॲཧͨ͠Ζ͔ ॲཧ࣮ߦʂ 4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸ॏྔڃδϣϒ͕େྔʹฒྻ࣮ߦ͞ΕΔΑ͏ʹͳͬͨ͜ͱ 2VFVF%#

Slide 260

Slide 260 text

4PMJE2VFVF %# 4PMJE2VFVF 4PMJE2VFVF ͍͢͝ΫΤϦͷδϣϒ͕͍ͬͺ͍͖ͨͷͰॲཧͨ͠Ζ͔ ॲཧ࣮ߦʂ ܹॏΫΤϦେྔ࣮ߦʂ 4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸ॏྔڃδϣϒ͕େྔʹฒྻ࣮ߦ͞ΕΔΑ͏ʹͳͬͨ͜ͱ 2VFVF%#

Slide 261

Slide 261 text

4PMJE2VFVF %# 4PMJE2VFVF 4PMJE2VFVF ͍͢͝ΫΤϦͷδϣϒ͕͍ͬͺ͍͖ͨͷͰॲཧͨ͠Ζ͔ ॲཧ࣮ߦʂ ܹॏΫΤϦେྔ࣮ߦʂ 4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ݪҼ͸ॏྔڃδϣϒ͕େྔʹฒྻ࣮ߦ͞ΕΔΑ͏ʹͳͬͨ͜ͱ ϝΠϯͷ%#͕աෛՙ 2VFVF%#

Slide 262

Slide 262 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊

Slide 263

Slide 263 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ෮چ༏ઌͷͨΊɺॏ͍΍ͭઐ༻8PSLFSઐ༻ΩϡʔΛ࡞ͬͨ γϯάϧϓϩηεγϯάϧεϨουͷྲྀΕ͖ͯͯ΋ฒྻ͠ͳ͍༻

Slide 264

Slide 264 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ෮چ༏ઌͷͨΊɺॏ͍΍ͭઐ༻8PSLFSઐ༻ΩϡʔΛ࡞ͬͨ γϯάϧϓϩηεγϯάϧεϨουͷྲྀΕ͖ͯͯ΋ฒྻ͠ͳ͍༻ 4PMJE2VFVFͷ͍͍ͱ͜ΖΛશ෦௵ͨ͠ରԠΛ͠·ͨ͠

Slide 265

Slide 265 text

4PMJE2VFVF଎͗ͯ͢աෛՙʹͳͬͨ໰୊ ෮چ༏ઌͷͨΊɺॏ͍΍ͭઐ༻8PSLFSઐ༻ΩϡʔΛ࡞ͬͨ γϯάϧϓϩηεγϯάϧεϨουͷྲྀΕ͖ͯͯ΋ฒྻ͠ͳ͍༻ 4PMJE2VFVFͷ͍͍ͱ͜ΖΛશ෦௵ͨ͠ରԠΛ͠·ͨ͠ 3PTB͞Μ͝ΊΜͳ͍͞

Slide 266

Slide 266 text

Migration Requirements EFMBZϝιουͷ๾໓ "DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ HFNVOJOTUBMMEFMBZFE ⬜ ✅ ✅ ✅ ✅ ✅

Slide 267

Slide 267 text

%BUBEPH%FMBZFE؂ࢹμογϡϘʔυ

Slide 268

Slide 268 text

%BUBEPH%FMBZFE؂ࢹμογϡϘʔυ

Slide 269

Slide 269 text

%BUBEPH%FMBZFE؂ࢹμογϡϘʔυ /P &ORVFVF

Slide 270

Slide 270 text

No content

Slide 271

Slide 271 text

No content

Slide 272

Slide 272 text

ZFBSTBHP

Slide 273

Slide 273 text

Migration Requirements EFMBZϝιουͷ๾໓ "DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ HFNVOJOTUBMMEFMBZFE ✅ ✅ ✅ ✅ ✅ ✅

Slide 274

Slide 274 text

Migration Requirements EFMBZϝιουͷ๾໓ "DUJWF+PCͰ໌ࣔతʹ%FMBZFEΛࢦఆ 4PMJE2VFVFઃఆ ؂ࢹ 4PMJE2VFVFΛར༻͢ΔΑ͏ʹશ+PCΛมߋ HFNVOJOTUBMMEFMBZFE ✅ ✅ ✅ ✅ ✅ ✅ ׬ྃͩͥʂ🚀

Slide 275

Slide 275 text

݁Ռʂ ύϑΥʔϚϯεͱεέʔϥϏϦςΟͷ޲্ ॊೈͳδϣϒ؅ཧͱ༏ઌ੍ޚ ։ൃͱӡ༻ͷޮ཰Խ ៉ྷʹઢܗʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹ͍ͨ͠ ॲཧͰ͖Δδϣϒͷ਺Λ૿΍͍ͨ͠ ϦιʔεΛ༗ޮ׆༻͍ͨ͠ ༏ઌ౓Λఆٛͨ͠Β༏ઌ౓Λकͬͯ΄͍͠ δϣϒ͝ͱʹΩϡʔͱ8PSLFSΛ෼͚͍ͨ ఆظ࣮ߦॲཧΛ·ͱΊ͍ͨ "DUJWF+PCʹҠߦ͍ͨ͠ʢ%FMBZFEઐ༻ͷॻ͖ํͱ"DUJWF+PCͷࠞࡏഇࢭʣ Ͱ͖Δ͚ͩ3BJMT8BZʹ৐͍ͤͨ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ⬜ ʢˡ͜Ε͸ࠓ೥΍Δ༧ఆʂʂʣ

Slide 276

Slide 276 text

w͸͡Ίʹɿ5FBDINF#J[ʹ͍ͭͯ wҠߦલͷ՝୊ wબఆ wઃܭͱ࣮૷ wҠߦޙͷ՝୊ w·ͱΊ

Slide 277

Slide 277 text

࣮૷͚ͩ͸ଟ෼ָ $MBVEF$PEF࢖͑͹΋ͬͱૣ͔ͬʢུʣ

Slide 278

Slide 278 text

"*Ͱޮ཰ͷΑ͍ΤϯδχΞϦϯά͕Ͱ͖Δݱ୅͔ͩΒͦ͜

Slide 279

Slide 279 text

4PMJE2VFVFͷ಺෦࣮૷Λཧղ͢Δ͜ͱ 4PMJE2VFVFʹ߹ΘͤͨઃܭdϦϦʔεܭը͕௒େࣄ "*Ͱޮ཰ͷΑ͍ΤϯδχΞϦϯά͕Ͱ͖Δݱ୅͔ͩΒͦ͜

Slide 280

Slide 280 text

4PMJE2VFVFͷ಺෦࣮૷Λཧղ͢Δ͜ͱ 4PMJE2VFVFʹ߹ΘͤͨઃܭdϦϦʔεܭը͕௒େࣄ %FMBZFEʹ͋ͬͯ4PMJE2VFVFʹͳ͍΋ͷ͸͋Δ͔ "*Ͱޮ཰ͷΑ͍ΤϯδχΞϦϯά͕Ͱ͖Δݱ୅͔ͩΒͦ͜

Slide 281

Slide 281 text

4PMJE2VFVFͷ಺෦࣮૷Λཧղ͢Δ͜ͱ 4PMJE2VFVFʹ߹ΘͤͨઃܭdϦϦʔεܭը͕௒େࣄ %FMBZFEʹ͋ͬͯ4PMJE2VFVFʹͳ͍΋ͷ͸͋Δ͔ 4PMJE2VFVFʹมߋ͢Δ͜ͱͰӨڹ͋ΔػೳɾνʔϜ͸Ͳ͔͜ "*Ͱޮ཰ͷΑ͍ΤϯδχΞϦϯά͕Ͱ͖Δݱ୅͔ͩΒͦ͜

Slide 282

Slide 282 text

4PMJE2VFVFͷ಺෦࣮૷Λཧղ͢Δ͜ͱ 4PMJE2VFVFʹ߹ΘͤͨઃܭdϦϦʔεܭը͕௒େࣄ %FMBZFEʹ͋ͬͯ4PMJE2VFVFʹͳ͍΋ͷ͸͋Δ͔ 4PMJE2VFVFʹมߋ͢Δ͜ͱͰӨڹ͋ΔػೳɾνʔϜ͸Ͳ͔͜ ݱঢ়ͷ՝୊ΛղܾͰ͖Δ΋ͷ͔Ͳ͏͔ "*Ͱޮ཰ͷΑ͍ΤϯδχΞϦϯά͕Ͱ͖Δݱ୅͔ͩΒͦ͜

Slide 283

Slide 283 text

4PMJE2VFVFͷ಺෦࣮૷Λཧղ͢Δ͜ͱ 4PMJE2VFVFʹ߹ΘͤͨઃܭdϦϦʔεܭը͕௒େࣄ %FMBZFEʹ͋ͬͯ4PMJE2VFVFʹͳ͍΋ͷ͸͋Δ͔ 4PMJE2VFVFʹมߋ͢Δ͜ͱͰӨڹ͋ΔػೳɾνʔϜ͸Ͳ͔͜ ݱঢ়ͷ՝୊ΛղܾͰ͖Δ΋ͷ͔Ͳ͏͔ ؂ࢹͷܭը͢Δ "*Ͱޮ཰ͷΑ͍ΤϯδχΞϦϯά͕Ͱ͖Δݱ୅͔ͩΒͦ͜

Slide 284

Slide 284 text

4PMJE2VFVFͷ಺෦࣮૷Λཧղ͢Δ͜ͱ 4PMJE2VFVFʹ߹ΘͤͨઃܭdϦϦʔεܭը͕௒େࣄ %FMBZFEʹ͋ͬͯ4PMJE2VFVFʹͳ͍΋ͷ͸͋Δ͔ 4PMJE2VFVFʹมߋ͢Δ͜ͱͰӨڹ͋ΔػೳɾνʔϜ͸Ͳ͔͜ ݱঢ়ͷ՝୊ΛղܾͰ͖Δ΋ͷ͔Ͳ͏͔ ؂ࢹͷܭը͢Δ ো֐Λى͜͞ͳ͍Α͏ʹஈ֊తͳϦϦʔεܭըΛ͢Δ "*Ͱޮ཰ͷΑ͍ΤϯδχΞϦϯά͕Ͱ͖Δݱ୅͔ͩΒͦ͜

Slide 285

Slide 285 text

࠷ޙʹฐࣾ&.ΑΓ ʮશͯͷٕज़తෛ࠴ͱݺ͹ΕΔ΋ͷ͸ ͦͷ࣌ͷશྗͰ͋Δ͜ͱ͸ؒҧ͍ͳ͍͠ɺ ͦ͏৴ͯ͡લਐ͍͖͍ͯͨ͠ʯ

Slide 286

Slide 286 text

0OF.PSF5IJOH

Slide 287

Slide 287 text

࢓ࣄ୳͍ͯ͠Δͦ͜ͷ܅ʂ

Slide 288

Slide 288 text

https://open.talentio.com/r/1/c/studist-recruit/pages/29489 ࢓ࣄ୳͍ͯ͠Δͦ͜ͷ܅ʂ ελσΟετͷ43&͸܅Λ଴ͬͯΔͥʂ

Slide 289

Slide 289 text

ࢲͨͪͷཱྀ࿏͸ ଓ͘Μͩͥʂ

Slide 290

Slide 290 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ࢲͨͪͷཱྀ࿏͸ ଓ͘Μͩͥʂ