Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Digdagを仕事で使ってみて良かったこと、ハマったこと / Using Digdag in production environment

Digdagを仕事で使ってみて良かったこと、ハマったこと / Using Digdag in production environment

Takehiro Shiozaki

June 07, 2017
Tweet

More Decks by Takehiro Shiozaki

Other Decks in Technology

Transcript

  1. %JHEBHΛ࢓ࣄͰ࢖ͬͯΈͯ
    ྑ͔ͬͨ͜ͱɺϋϚͬͨ͜ͱ
    8PSLqPX&OHJOFT/JHIU
    VASILY,Inc. Ԙ㟒݈߂

    View Slide

  2. Ԙ㟒݈߂
    w ೥ʹ7"4*-:ʹ৽ଔೖࣾ
    w ීஈͷ͓࢓ࣄ͸3BJMTͰXFC"1*࡞ͬͨΓɺ4PMSͷϝϯςͨ͠Γ

    5BCMFBV#JH2VFSZͰμογϡϘʔυ࡞ͬͨΓ
    w %JHEBHྺ͸·ͩिؒ͘Β͍
    7"4*-: *OD
    TPGUXBSFFOHJOFFS

    View Slide

  3. *20/
    Ҏ্ͷϑΝογϣϯ&$αΠτ͔Β
    ྦྷܭ ສ఺Λ௒͑Δ঎඼Λܝࡌ
    ݄ؒສਓҎ্͕ར༻͢Δ೔ຊ࠷େڃͷϑΝογϣϯαΠτ

    View Slide

  4. w ͱ͋ΔҊ݅ͰΫϩʔϥʔΛ࡞Γ·ͨ͠
    w ਺αΠτͷ৘ใΛΫϩʔϧ͠ɺ

    ͦΕΒͷ৘ใΛϚʔδͨ͠ޙʹ4ʹอଘ
    ͲΜͳ΋ͷΛ࡞ͬͨͷ͔

    View Slide

  5. %"(Ͱॻ͘ͱ͜Μͳײ͡
    $SBXM
    $SBXM
    $SBXM/
    .FSHF 6QMPBE
    ɾɾɾ

    View Slide

  6. DSPOͰ؅ཧ͍ͯͨ͠ࠒ
    0 0 * * * crawl-1

    0 0 * * * crawl-2
    0 0 * * * crawl-N
    # crawl処理は30分以内に終わるはず
    0 30 * * * merge

    # merge処理は10分以内に終わるはず
    0 40 * * * upload

    View Slide

  7. DSPOͰ؅ཧ͍ͯͨ͠ࠒ
    0 0 * * * crawl-1

    0 0 * * * crawl-2
    0 0 * * * crawl-N
    # crawl処理は30分以内に終わるはず
    0 30 * * * merge

    # merge処理は10分以内に終わるはず
    0 40 * * * upload
    ΋͠ɺ෼Ҏ಺ʹऴΘΒͳ͔ͬͨΒʁ

    View Slide

  8. DSPOͰ؅ཧ͍ͯͨ͠ࠒ
    0 0 * * * crawl-1

    0 0 * * * crawl-2
    0 0 * * * crawl-N
    # crawl処理は30分以内に終わるはず
    0 30 * * * merge

    # merge処理は10分以内に終わるはず
    0 40 * * * upload
    ͜ͷॲཧ͕ࣦഊͨ͠Βɺ
    ͜ΕҎ߱ͷॲཧ͸ετοϓ͢Δ΂͖ʁ

    View Slide

  9. DSPOͰ؅ཧ͍ͯͨ͠ࠒ
    0 0 * * * crawl-1

    0 0 * * * crawl-2
    0 0 * * * crawl-N
    # crawl処理は30分以内に終わるはず
    0 30 * * * merge

    # merge処理は10分以内に終わるはず
    0 40 * * * upload
    ॲཧ͕ࣦഊͨ࣌͠ʹ͸ϦτϥΠ͍ͨ͠

    View Slide

  10. DSPOͰ؅ཧ͍ͯͨ͠ࠒ
    0 0 * * * crawl-1

    0 0 * * * crawl-2
    0 0 * * * crawl-N
    # crawl処理は30分以内に終わるはず
    0 30 * * * merge

    # merge処理は10分以内に終わるはず
    0 40 * * * upload
    ্ྲྀͷॲཧ͕ϦτϥΠͨ࣌͠ʹ͸ɺ
    ॲཧͷ։࢝࣌ࠁΛ஗Β͍ͤͨ

    View Slide

  11. DSPOͰ؅ཧ͍ͯͨ͠ࠒ
    0 0 * * * crawl-1

    0 0 * * * crawl-2
    0 0 * * * crawl-N
    # crawl処理は30分以内に終わるはず
    0 30 * * * merge

    # merge処理は10分以内に終わるはず
    0 40 * * * upload
    Τϥʔ͕ى͖ͨΒ௨஌͕ཉ͍͠

    View Slide

  12. ͭΒ͍

    View Slide

  13. w લड़ͨ͠ʮͭΒ͞ʯΛղফ͢ΔͨΊʹಋೖ
    w %JHEBHಋೖͷཧ༝
    w ৴པͱ࣮੷ͷ5SFBTVSF%BUB੡044
    w "JSqPX΍-VJHJͱൺ΂Δͱઃఆ͕γϯϓϧ
    w Ϟάϥ͕νϟʔϛϯά
    %JHEBHಋೖ

    View Slide

  14. ͔͜͜Βຊ୊
    %JHEBHΛಋೖͯ͠Α͔ͬͨ͜ͱ
    ˍ
    %JHEBHͷಋೖͰϋϚͬͨ͜ͱ

    View Slide

  15. 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}

    View Slide

  16. w %JHEBHαʔόʔʹ͸%PDLFS͚ͩΛΠϯετʔϧ
    w ΞϓϦέʔγϣϯͷ࣮ߦ؀ڥ͸ίϯςφ಺ʹด͡ࠐΊ
    w %JHEBHαʔόʔͷߏ੒͕γϯϓϧʹͳΔ
    Α͔ͬͨ͜ͱ%PDLFSαϙʔτ

    View Slide

  17. w /tmp/digdag-tempdir* ͕λεΫຖʹੜ੒͞ΕΔ
    w ଞͷλεΫ͔ΒͷӨڹΛ࠷খԽͰ͖Δ
    w ˞%JHEBHTFSWFSݶఆ
    Α͔ͬͨ͜ͱҰ࣌σΟϨΫτϦͰλεΫΛ࣮ߦ

    View Slide

  18. w QZΦϖϨʔλʔ͸QZUIPOίϚϯυΛݺͼग़͢
    w 6CVOUVͰ͸QZUIPOίϚϯυͰ1ZUIPO͕ɺ
    QZUIPOίϚϯυͰ1ZUIPO͕࣮ߦ͞ΕΔ
    w ࢖͍͔ͨͬͨͷ͸1ZUIPOͷํ
    w ղܾࡦ
    w 1ZUIPOͷ%PDLFSΠϝʔδΛ࢖༻
    ϋϚͬͨ͜ͱ1ZUIPOͷόʔδϣϯ

    View Slide

  19. 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
    ϑΝΠϧ͕ݟ͔ͭΒͳ͍

    View Slide

  20. w υΩϡϝϯτʹॻ͔Ε͍ͯͳ͍ػೳ͕͋ͬͨΓ
    w TFSWFSϞʔυͱTDIFEVMFSϞʔυͷ࢖͍෼͚ͷج४
    w ϓϥάΠϯϚωʔδϟ embulk gemతͳ

    ͜Ε͔Βʹظ଴

    View Slide

  21. 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
    ·ͱΊ

    View Slide