Slide 1

Slide 1 text

Dive into MaintenanceTasks omotesando.rb#100, roppongirb#21 2024/08/01 @hatsu_38

Slide 2

Slide 2 text

ࣗݾ঺հ • Rubyྺ 5೥ = ΤϯδχΞྺ • SHE Inc. • React.js / TypeScript / GitHub Actions • Ruby͕Ұ൪޷͖

Slide 3

Slide 3 text

͓அΓɻ ίʔυͷղઆͱ͔ೖΕͨΒεϥΠυ͕ 81ຕʹͳͬͯ5෼ͰऴΘΔΘ͚͕ͳ͍ ͷͰޙ൒ۦ͚଍&୺ં͍͖ͬͯ·͢🏃

Slide 4

Slide 4 text

ٕज़ελοΫ • Backend: Ruby, Ruby on Rails, GraphQL, Sidekiq • Frontend: React.js, TypeScript, Next.js • CI: GitHub Actions • Infrastructure: Kubernetes

Slide 5

Slide 5 text

Initial commit͔Β7೥…

Slide 6

Slide 6 text

Rake taskͷ࣮ߦํ๏͸ 1. podʹkubectl exec … bashͰೖΔ 2. bundle exec rake … 3. ్தͰࣦഊͨ͠Β࢝Ί͔Β…

Slide 7

Slide 7 text

ຊ൪αʔόʔʹೖΔͷා͍🙅 Rake taskͷ࣮ߦํ๏͸ 1. podʹkubectl exec … bashͰೖΔ 2. bundle exec rake … 3. ్தͰࣦഊͨ͠Β࢝Ί͔Β…

Slide 8

Slide 8 text

ຊ൪αʔόʔͰखಈͰίϚϯυ࣮ߦ΋ා͍🙅 Rake taskͷ࣮ߦํ๏͸ 1. podʹkubectl exec … bashͰೖΔ 2. bundle exec rake … 3. ్தͰࣦഊͨ͠Β࢝Ί͔Β… ຊ൪αʔόʔʹೖΔͷා͍🙅

Slide 9

Slide 9 text

ຊ൪αʔόʔͰखಈͰίϚϯυ࣮ߦ΋ා͍🙅 Rake taskͷ࣮ߦํ๏͸ 1. podʹkubectl exec … bashͰೖΔ 2. bundle exec rake … 3. ్தͰࣦഊͨ͠Β࢝Ί͔Β… ຊ൪αʔόʔʹೖΔͷා͍🙅 ࢝Ί͔Β࣮ߦ͢Δͷ͕͔͔࣌ؒΔ🙅

Slide 10

Slide 10 text

Rake taskͷ࣮ߦํ๏͸ 1. podʹkubectl exec … bashͰೖΔ 2. bundle exec rake … 3. ్தͰࣦഊͨ͠Β࢝Ί͔Β… ຊ൪αʔόʔͰखಈͰίϚϯυ࣮ߦ΋ා͍🙅 ຊ൪αʔόʔʹೖΔͷා͍🙅 ࢝Ί͔Β࣮ߦ͢Δͷ͕͔͔࣌ؒΔ🙅

Slide 11

Slide 11 text

MaintenanceTasks࢖͍࢝Ίͨ🚀

Slide 12

Slide 12 text

MaintenanceTasks is Կ

Slide 13

Slide 13 text

MaintenanceTasks is Կ • UI্͔Β΋CLI͔Β΋JobΛ։࢝Ͱ͖Δ • UI্͔ΒJobʹ౉͍ͨ͠ύϥϝʔλͷઃఆ΋Ͱ͖Δ • ։࢝ͨ͠+PCΛதஅɾ࠶։ɾΩϟϯηϧͳͲ΋Ͱ͖Δ • Jobͷ࣮ߦཤྺ΍࣮ߦঢ়گ͕֬ೝͰ͖Δ

Slide 14

Slide 14 text

MaintenanceTasks is Կ • UI্͔Β΋CLI͔Β΋JobΛ։࢝Ͱ͖Δ • UI্͔ΒJobʹ౉͍ͨ͠ύϥϝʔλͷઃఆ΋Ͱ͖Δ • ։࢝ͨ͠+PCΛதஅɾ࠶։ɾΩϟϯηϧͳͲ΋Ͱ͖Δ • Jobͷ࣮ߦཤྺ΍࣮ߦঢ়گ͕֬ೝͰ͖Δ

Slide 15

Slide 15 text

• UI্͔Β΋CLI͔Β΋JobΛ։࢝Ͱ͖Δ • UI্͔ΒJobʹ౉͍ͨ͠ύϥϝʔλͷઃఆ΋Ͱ͖Δ • ։࢝ͨ͠+PCΛதஅɾ࠶։ɾΩϟϯηϧͳͲ΋Ͱ͖Δ • Jobͷ࣮ߦཤྺ΍࣮ߦঢ়گ͕֬ೝͰ͖Δ MaintenanceTasks is Կ

Slide 16

Slide 16 text

• UI্͔Β΋CLI͔Β΋JobΛ։࢝Ͱ͖Δ • UI্͔ΒJobʹ౉͍ͨ͠ύϥϝʔλͷઃఆ΋Ͱ͖Δ • ։࢝ͨ͠+PCΛதஅɾ࠶։ɾΩϟϯηϧͳͲ΋Ͱ͖Δ • Jobͷ࣮ߦཤྺ΍࣮ߦঢ়گ͕֬ೝͰ͖Δ MaintenanceTasks is Կ

Slide 17

Slide 17 text

• UI্͔Β΋CLI͔Β΋JobΛ։࢝Ͱ͖Δ • UI্͔ΒJobʹ౉͍ͨ͠ύϥϝʔλͷઃఆ΋Ͱ͖Δ • ։࢝ͨ͠+PCΛதஅɾ࠶։ɾΩϟϯηϧͳͲ΋Ͱ͖Δ • Jobͷ࣮ߦཤྺ΍࣮ߦঢ়گ͕֬ೝͰ͖Δ MaintenanceTasks is Կ

Slide 18

Slide 18 text

MaintenanceTasksͷ࢖͍ํ

Slide 19

Slide 19 text

MaintenanceTasksͷ࢖͍ํ Collectionʹॲཧ͍ͨ͠σʔλΛఆٛ(ActiveRecord::Relation ΍ CSV)

Slide 20

Slide 20 text

MaintenanceTasksͷ࢖͍ํ processʹ֤σʔλͷॲཧ͢Δ಺༰Λఆٛ Collectionʹॲཧ͍ͨ͠σʔλΛఆٛ(ActiveRecord::Relation ΍ CSV)

Slide 21

Slide 21 text

MaintenanceTasksͷ࢖͍ํ bin/rails generate maintenance_tasks:install

Slide 22

Slide 22 text

MaintenanceTasksͷ࢖͍ํ ͲͷTaskΛ࣮ߦ͍ͯ͠Δ͔ ։࢝࣌ࠁ ऴྃ࣌ࠁ ࣮ߦ࣌ؒ ࣮ߦ݅਺ ࣮ߦ(༧ఆ)݅਺ SecureRandom .uuid ࠶։৔ॴͷIndex(ID) ࣮ߦεςʔλε(Enum) enqueued / running / succeeded / cancelling / cancelled / interrupted / pausing / paused / errored bin/rails generate maintenance_tasks:install ΤϥʔͷClass ΤϥʔMessage Backtrace

Slide 23

Slide 23 text

ɾαʔόʔʹೖΒͣʹJobΛ࣮ߦͰ͖Δ✨ ɾMaintenanceTaskͳΒ్தͰ࠶։Ͱ͖Δ✨

Slide 24

Slide 24 text

ศརʂ✨

Slide 25

Slide 25 text

MaintenanceTasks࣮ߦʂ🚀

Slide 26

Slide 26 text

JobʹΤϥʔൃੜʂ💥

Slide 27

Slide 27 text

్த͔Β࠶։✨

Slide 28

Slide 28 text

Ͳ͏΍࣮ͬͯ૷͞ΕͯΔ͔ݟͯΈΔ🔍 MaintenanceTasks & JobIteration

Slide 29

Slide 29 text

MaintenanceTaskͷςʔϒϧ ͲͷTaskΛ࣮ߦ͍ͯ͠Δ͔ ։࢝࣌ࠁ ऴྃ࣌ࠁ ࣮ߦ࣌ؒ ࣮ߦ݅਺ ࣮ߦ(༧ఆ)݅਺ SecureRandom .uuid ࠶։৔ॴͷIndex(ID) ࣮ߦεςʔλε(Enum) enqueued / running / succeeded / cancelling / cancelled / interrupted / pausing / paused / errored bin/rails generate maintenance_tasks:install ΤϥʔͷClass ΤϥʔMessage Backtrace

Slide 30

Slide 30 text

CursorͷอଘλΠϛϯάΛ୳͢🔬

Slide 31

Slide 31 text

Job͕Enqueue͞ΕΔ·ͰΛ ௥ͬͯΈΔ🏃

Slide 32

Slide 32 text

Job͕enqueue͞ΕΔ·Ͱ(ͬ͘͟Γ) RunϘλϯ show.html.erb Runner.run(*) RunsController#create 1. DBʹRunϨίʔυ࡞੒ 2. Jobͷenqueue Runner#run

Slide 33

Slide 33 text

show.html.erb

Slide 34

Slide 34 text

show.html.erb

Slide 35

Slide 35 text

show.html.erb MaintenanceTasks::RunsController#create

Slide 36

Slide 36 text

MaintenanceTasks::RunsController#create

Slide 37

Slide 37 text

MaintenanceTasks::RunsController#create MaintenanceTasks::Runnerͷݺͼग़͠

Slide 38

Slide 38 text

MaintenanceTasks::Runner#run

Slide 39

Slide 39 text

MaintenanceTasks::Runner#run MaintenanceTasks::Run modelͷnew

Slide 40

Slide 40 text

MaintenanceTasks::Runner#run MaintenanceTasks::Run modelͷnew MaintenanceTasks::TaskJob.new(run) = ActiveJob::Base.new(run)

Slide 41

Slide 41 text

MaintenanceTasks::Runner#run MaintenanceTasks::Run modelͷnew MaintenanceTasks::TaskJob.new(run) = ActiveJob::Base.new(run) MaintenanceTasks::Run modelͷstatusΛenqueuedʹมߋͯ͠อଘ

Slide 42

Slide 42 text

MaintenanceTasks::Runner#run MaintenanceTasks::Run modelͷnew MaintenanceTasks::TaskJob.new(run) = ActiveJob::Base.new(run) enqueue͢Δ MaintenanceTasks::Run modelͷstatusΛenqueuedʹมߋͯ͠อଘ

Slide 43

Slide 43 text

MaintenanceTasks::Runner#run MaintenanceTasks::Run modelͷnew MaintenanceTasks::TaskJob.new(run) = ActiveJob::Base.new(run) enqueue͢Δ MaintenanceTasks::Run modelͷstatusΛenqueuedʹมߋͯ͠อଘ Job͕enqueue͞Εͨʂ

Slide 44

Slide 44 text

Enqueue͞Εͨ͋ͱͷྲྀΕΛݟΔ🔍

Slide 45

Slide 45 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ

Slide 46

Slide 46 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D ActiveJobͰఆٛ͞Ε͍ͯΔCallback ActiveJobͰఆٛ͞Ε͍ͯΔCallback

Slide 47

Slide 47 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D job-iteration gem͕ఆ͍ٛͯ͠ΔCallback sidekiq v7.3ʹ΋sidekiq-iteration gemͰࣅͨϝιου͕௥Ճ͞Εͨ

Slide 48

Slide 48 text

ͦΕͧΕͷStepͰ ΍ͬͯΔ͜ͱΛௐࠪ🛠

Slide 49

Slide 49 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTasks::RunͷσʔλΛrunningεςʔλεʹมߋ 2. perform͕࣮ߦ͞ΕΔ

Slide 50

Slide 50 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1 1. MaintenanceTasks::RunͷσʔλΛrunningεςʔλεʹมߋ 2. perform͕࣮ߦ͞ΕΔ

Slide 51

Slide 51 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTasks::RunͷσʔλΛrunningεςʔλεʹมߋ 2. perform͕࣮ߦ͞ΕΔ 1 1

Slide 52

Slide 52 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTasks::RunͷσʔλΛrunningεςʔλεʹมߋ 2. perform͕࣮ߦ͞ΕΔ 1 1 2

Slide 53

Slide 53 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTasks::RunͷσʔλΛrunningεςʔλεʹมߋ 2. perform͕࣮ߦ͞ΕΔ 1 1 2 2

Slide 54

Slide 54 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTasks::RunͷσʔλΛrunningεςʔλεʹมߋ 2. perform͕࣮ߦ͞ΕΔ 1 1 2 2 ର৅σʔλͷ഑ྻ࡞੒

Slide 55

Slide 55 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTasks::RunͷσʔλΛrunningεςʔλεʹมߋ 2. perform͕࣮ߦ͞ΕΔ 1 1 2 2 1ͭ1ͭσʔλΛॲཧ(Processϝιουͷ࣮ߦ) ର৅σʔλͷ഑ྻ࡞੒

Slide 56

Slide 56 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTasks::RunͷσʔλΛrunningεςʔλεʹมߋ 2. perform͕࣮ߦ͞ΕΔ 1 1 2 2 shutdown callbackͷ࣮ߦ ର৅σʔλͷ഑ྻ࡞੒ 1ͭ1ͭσʔλΛॲཧ(Processϝιουͷ࣮ߦ)

Slide 57

Slide 57 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTasks::RunͷσʔλΛrunningεςʔλεʹมߋ 2. perform͕࣮ߦ͞ΕΔ 1 1 2 2 shutdown callbackͷ࣮ߦ complete callbackͷ࣮ߦ ର৅σʔλͷ഑ྻ࡞੒ 1ͭ1ͭσʔλΛॲཧ(Processϝιουͷ࣮ߦ)

Slide 58

Slide 58 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. ॲཧ͢΂͖σʔλͷ഑ྻΛ࡞੒ 2. on_startϝιου࣮ߦ 3. RunϞσϧͷσʔλͷ։࢝࣌ࠁͱॲཧ༧ఆ݅਺Λߋ৽ 1. update!(started_at: Time.now, tick_total: count)

Slide 59

Slide 59 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. ॲཧ͢΂͖σʔλͷ഑ྻΛ࡞੒ 2. on_startϝιου࣮ߦ 3. RunϞσϧͷσʔλͷ։࢝࣌ࠁͱॲཧ༧ఆ݅਺Λߋ৽ 1. update!(started_at: Time.now, tick_total: count) 3

Slide 60

Slide 60 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. ॲཧ͢΂͖σʔλͷ഑ྻΛ࡞੒ 2. on_startϝιου࣮ߦ 3. RunϞσϧͷσʔλͷ։࢝࣌ࠁͱॲཧ༧ఆ݅਺Λߋ৽ 1. update!(started_at: Time.now, tick_total: count) 3 3

Slide 61

Slide 61 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTaskʹࣗ෼Ͱॻ͍ͨdef process͕࣮ߦ͞ΕΔ 2. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽

Slide 62

Slide 62 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTaskʹࣗ෼Ͱॻ͍ͨdef process͕࣮ߦ͞ΕΔ 2. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽ 1

Slide 63

Slide 63 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTaskʹࣗ෼Ͱॻ͍ͨdef process͕࣮ߦ͞ΕΔ 2. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽ 1 1

Slide 64

Slide 64 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. MaintenanceTaskʹࣗ෼Ͱॻ͍ͨdef process͕࣮ߦ͞ΕΔ 2. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽ 1 1 2

Slide 65

Slide 65 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D 1. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽ 2. cursorͷૠೖ 3. ΤϥʔͷClass΍Backtrace΍ErrorϝοηʔδΛrunσʔλʹอଘ

Slide 66

Slide 66 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D 1 1. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽ 2. cursorͷૠೖ 3. ΤϥʔͷClass΍Backtrace΍ErrorϝοηʔδΛrunσʔλʹอଘ

Slide 67

Slide 67 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D 1. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽ 2. cursorͷૠೖ 3. ΤϥʔͷClass΍Backtrace΍ErrorϝοηʔδΛrunσʔλʹอଘ 1 2

Slide 68

Slide 68 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D 1 3 1. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽ 2. cursorͷૠೖ 3. ΤϥʔͷClass΍Backtrace΍ErrorϝοηʔδΛrunσʔλʹอଘ 2

Slide 69

Slide 69 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D 1 3 3 1. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽ 2. cursorͷૠೖ 3. ΤϥʔͷClass΍Backtrace΍ErrorϝοηʔδΛrunσʔλʹอଘ 2

Slide 70

Slide 70 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. εςʔλεʹcancelled / paused / interrupted ͱcursorૠೖ(อଘ͸·ͩ) 2. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽

Slide 71

Slide 71 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1 1. εςʔλεʹcancelled / paused / interruptedͷૠೖ(อଘ͸·ͩ) 2. Cursorૠೖ(อଘ͸·ͩ) 3. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽

Slide 72

Slide 72 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1 1 1. εςʔλεʹcancelled / paused / interruptedͷૠೖ(อଘ͸·ͩ) 2. Cursorૠೖ(อଘ͸·ͩ) 3. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽

Slide 73

Slide 73 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1. εςʔλεʹcancelled / paused / interruptedͷૠೖ(อଘ͸·ͩ) 2. Cursorૠೖ(อଘ͸·ͩ) 3. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽ 1 1 2

Slide 74

Slide 74 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D 1 1 3 2 1. εςʔλεʹcancelled / paused / interruptedͷૠೖ(อଘ͸·ͩ) 2. Cursorૠೖ(อଘ͸·ͩ) 3. ݱࡏͷॲཧ݅਺ͱܦա࣌ؒΛߋ৽

Slide 75

Slide 75 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D 1. statusʹsucceededΛɺended_atʹTime.nowʹૠೖ(อଘ͸·ͩ)

Slide 76

Slide 76 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D 1. statusʹsucceededΛɺended_atʹTime.nowʹૠೖ(อଘ͸·ͩ) 1

Slide 77

Slide 77 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D 1. ૠೖ͍ͯͨ͠cursor΍status΍ended_atΛอଘ

Slide 78

Slide 78 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D 1. ૠೖ͍ͯͨ͠cursor΍status΍ended_atΛอଘ 1

Slide 79

Slide 79 text

Enqueue͞Εͨ͋ͱͷྲྀΕ(ͬ͘͟Γ) 1. before_perform: Perform͕ݺ͹ΕΔલʹ࣮ߦ͞ΕΔɻ 2. on_start: Perform͞Εͨ௚ޙʹ࣮ߦ͞ΕΔɻ 3. each_iteration: ActiveRecord::RelationΛҰͭͣͭॲཧ͢Δɻ 1. on_error: StandardErrorͰݺ͹ΕΔ 4. on_shutdown: ॲཧ͕ऴΘͬͨͱ͖ɻதஅ͞Εͨͱ͖ʹ࣮ߦ͞ΕΔɻ 5. on_complete: on_shutdownͷޙɻ࠶౓enqueueͷඞཁ͕ͳ͍ͱ͖ɻ 6. after_perform: Perform͕ऴΘͬͨ௚ޙʹ࣮ߦ͞ΕΔɻ D D 1. ૠೖ͍ͯͨ͠cursor΍status΍ended_atΛอଘ 1 1

Slide 80

Slide 80 text

on_error ΍after_performͰ ࠶։৔ॴΛه࿥͍ͯͨ͠✨ (Ωϟϯηϧ΍தஅͨ͠ͱ͖΋ಉ͡)

Slide 81

Slide 81 text

·ͱΊ • MaintenanceTasks͸ศར • UI্ͰJob࣮ߦͰ͖Δ͠ɺجຊతʹ͸్தͰதஅɾ࠶։Ͱ͖Δ • SIGKILLͷ࣌͸࠶։Ͱ͖ͳ͍ɻSIGTERMͱ͔ͳΒ࠶։Ͱ͖Δ • Sidekiq v7.3Ͱ΋ࣅͨΑ͏ͳػೳ͕ೖͬͨ • RunsςʔϒϧͰ͸ͳ͘ɺredisͰ؅ཧͯ͠Δ