%JHEBHΛࣄͰͬͯΈͯྑ͔ͬͨ͜ͱɺϋϚͬͨ͜ͱ8PSLqPX&OHJOFT/JHIUVASILY,Inc. Ԙ㟒݈߂
View Slide
Ԙ㟒݈߂w ʹ7"4*-:ʹ৽ଔೖࣾw ීஈͷ͓ࣄ3BJMTͰXFC"1*࡞ͬͨΓɺ4PMSͷϝϯςͨ͠Γ 5BCMFBV#JH2VFSZͰμογϡϘʔυ࡞ͬͨΓw %JHEBHྺ·ͩिؒ͘Β͍7"4*-: *ODTPGUXBSFFOHJOFFS
*20/Ҏ্ͷϑΝογϣϯ&$αΠτ͔Βྦྷܭ ສΛ͑ΔΛܝࡌ݄ؒສਓҎ্͕ར༻͢Δຊ࠷େڃͷϑΝογϣϯαΠτ
w ͱ͋ΔҊ݅ͰΫϩʔϥʔΛ࡞Γ·ͨ͠w αΠτͷใΛΫϩʔϧ͠ɺ ͦΕΒͷใΛϚʔδͨ͠ޙʹ4ʹอଘͲΜͳͷΛ࡞ͬͨͷ͔
%"(Ͱॻ͘ͱ͜Μͳײ͡$SBXM$SBXM$SBXM/.FSHF 6QMPBEɾɾɾ
DSPOͰཧ͍ͯͨ͠ࠒ0 0 * * * crawl-1 0 0 * * * crawl-20 0 * * * crawl-N# crawl処理は30分以内に終わるはず0 30 * * * merge # merge処理は10分以内に終わるはず0 40 * * * upload
DSPOͰཧ͍ͯͨ͠ࠒ0 0 * * * crawl-1 0 0 * * * crawl-20 0 * * * crawl-N# crawl処理は30分以内に終わるはず0 30 * * * merge # merge処理は10分以内に終わるはず0 40 * * * upload͠ɺҎʹऴΘΒͳ͔ͬͨΒʁ
DSPOͰཧ͍ͯͨ͠ࠒ0 0 * * * crawl-1 0 0 * * * crawl-20 0 * * * crawl-N# crawl処理は30分以内に終わるはず0 30 * * * merge # merge処理は10分以内に終わるはず0 40 * * * upload͜ͷॲཧ͕ࣦഊͨ͠Βɺ͜ΕҎ߱ͷॲཧετοϓ͢Δ͖ʁ
DSPOͰཧ͍ͯͨ͠ࠒ0 0 * * * crawl-1 0 0 * * * crawl-20 0 * * * crawl-N# crawl処理は30分以内に終わるはず0 30 * * * merge # merge処理は10分以内に終わるはず0 40 * * * uploadॲཧ͕ࣦഊͨ࣌͠ʹϦτϥΠ͍ͨ͠
DSPOͰཧ͍ͯͨ͠ࠒ0 0 * * * crawl-1 0 0 * * * crawl-20 0 * * * crawl-N# crawl処理は30分以内に終わるはず0 30 * * * merge # merge処理は10分以内に終わるはず0 40 * * * upload্ྲྀͷॲཧ͕ϦτϥΠͨ࣌͠ʹɺॲཧͷ։࢝࣌ࠁΛΒ͍ͤͨ
DSPOͰཧ͍ͯͨ͠ࠒ0 0 * * * crawl-1 0 0 * * * crawl-20 0 * * * crawl-N# crawl処理は30分以内に終わるはず0 30 * * * merge # merge処理は10分以内に終わるはず0 40 * * * uploadΤϥʔ͕ى͖ͨΒ௨͕ཉ͍͠
ͭΒ͍
w લड़ͨ͠ʮͭΒ͞ʯΛղফ͢ΔͨΊʹಋೖw %JHEBHಋೖͷཧ༝w ৴པͱ࣮ͷ5SFBTVSF%BUB044w "JSqPX-VJHJͱൺΔͱઃఆ͕γϯϓϧw Ϟάϥ͕νϟʔϛϯά%JHEBHಋೖ
͔͜͜Βຊ%JHEBHΛಋೖͯ͠Α͔ͬͨ͜ͱˍ%JHEBHͷಋೖͰϋϚͬͨ͜ͱ
w "JSqPX-VJHJͱൺΔͱࣗ༝͕͍ ˢͦͦߴ͍ࣗ༝ෆཁΑ͔ͬͨ͜ͱઃఆϑΝΠϧ͕γϯϓϧtimezone: UTC+setup:echo>: start ${session_time}+disp_current_date:echo>: ${moment(session_time).utc().format('YYYY-MM-DD HH:mm:ss Z')}+repeat:for_each>:order: [first, second, third]animal: [dog, cat]_do:echo>: ${order} ${animal}_parallel: true+teardown:echo>: finish ${session_time}
w %JHEBHαʔόʔʹ%PDLFS͚ͩΛΠϯετʔϧw ΞϓϦέʔγϣϯͷ࣮ߦڥίϯςφʹด͡ࠐΊw %JHEBHαʔόʔͷߏ͕γϯϓϧʹͳΔΑ͔ͬͨ͜ͱ%PDLFSαϙʔτ
w /tmp/digdag-tempdir* ͕λεΫຖʹੜ͞ΕΔw ଞͷλεΫ͔ΒͷӨڹΛ࠷খԽͰ͖Δw ˞%JHEBHTFSWFSݶఆΑ͔ͬͨ͜ͱҰ࣌σΟϨΫτϦͰλεΫΛ࣮ߦ
w QZΦϖϨʔλʔQZUIPOίϚϯυΛݺͼग़͢w 6CVOUVͰQZUIPOίϚϯυͰ1ZUIPO͕ɺQZUIPOίϚϯυͰ1ZUIPO͕࣮ߦ͞ΕΔw ͍͔ͨͬͨͷ1ZUIPOͷํw ղܾࡦw 1ZUIPOͷ%PDLFSΠϝʔδΛ༻ϋϚͬͨ͜ͱ1ZUIPOͷόʔδϣϯ
w ղܾࡦw 4ʹҰ࣌ϑΝΠϧΛஔ͍ͯड͚͠Λ͢ΔϋϚͬͨ͜ͱҰ࣌ϑΝΠϧͷड͚͠_export:docker:image: python:3.6.1+crawl:_parallel: true+crawl1:sh>: crawl.sh > temp_result_1.json+crawl2:sh>: crawl.sh > temp_result_2.json+merge:sh>: merge.sh temp_result1.json temp_result2.json&3303ϑΝΠϧ͕ݟ͔ͭΒͳ͍
w υΩϡϝϯτʹॻ͔Ε͍ͯͳ͍ػೳ͕͋ͬͨΓw TFSWFSϞʔυͱTDIFEVMFSϞʔυͷ͍͚ͷج४w ϓϥάΠϯϚωʔδϟ embulk gemతͳ͜Ε͔Βʹظ
w %JHEBHศརw DSPOӡ༻ͷʮͭΒ͞ʯΛղফͯ͘͠ΕΔϞάϥw ·ͩࢼͨ͜͠ͱ͕ͳ͍ਓɺҎԼͷίϚϯυΛ࣮ߦͯ͠Πϯετʔϧ• $ curl -o ~/bin/digdag --create-dirs \ -L "https://dl.digdag.io/digdag-latest" $ chmod +x ~/bin/digdag $ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc·ͱΊ