Tokyo Airflow Meetup #1
Airflow͔ΒKuroko2ʹΓ͑ͨΘ͚by hatappi @Tokyo Airflow Meetup #11
View Slide
࣍• ࣗݾհ• AirflowͷಋೖܦҢ• AirflowΛӡ༻ͯ͠Έͯ• Kuroko2Λͳ͍ͥ͡Ίͨͷ͔• ·ͱΊ2
࣍• ࣗݾհ• AirflowͷಋೖܦҢ• AirflowΛӡ༻ͯ͠Έͯ• Kuroko2Λͳ͍ͥ͡Ίͨͷ͔• ·ͱΊ3
ࣗݾհ• ໊લ: ാத༔࡞• ID: hatappi• ձࣾ: גࣜձࣾSpeee• ͍ͬͯΔ͜ͱ• UZOU• Angular + RailsͰ࡞͢Δސ٬ཧγεςϜ4
࣍• ࣗݾհ• AirflowͷಋೖܦҢ• AirflowΛӡ༻ͯ͠Έͯ• Kuroko2Λͳ͍ͥ͡Ίͨͷ͔• ·ͱΊ5
AirflowΛ͍ΕΔલ6ఆظతʹόονΛ࣮ߦ͍ͨ͠cronΛ͑Ͱ͖ΔͶ
cronӡ༻Ͱى͖ͨ͜ͱ• ͳ͔ͥࢦఆͨ࣌ؒ͠ʹىಈ͠ͳ͍• ࣮ߦݖݶʁ࣌ؒʁcrondىಈͯ͠Δ?• ࣮ߦϑΝΠϧͰϩάग़ͯ͠ͳ͍͔ΒԿ͕ى͖͔ͨݪҼ͕͔Βͳ͍7
Γ͍ͨ͜ͱΛཧ8ఆظ࣮ߦ λεΫͷؔ࿈ੑ࣮ߦঢ়ଶͷ֬ೝ EngҎ֎ͰϦτϥΠ
9Airflowͷ࠾༻
Airflowͱ?• ϫʔΫϑϩʔϚωδϝϯτγεςϜ• OpenAir 2015ͰAirbnb͕ࣾࣗࣾͰ։ൃ͍ͯͨ͠ͷΛΦʔϓϯιʔεԽͱൃද• ݱࡏApache IncubatorͷΦʔϓϯιʔεϓϩδΣΫτ10
11DAGTASK
Airflowͷ࠾༻• ৄ͘͠ϒϩά• http://tech.speee.jp/entry/2016/07/07/05000012
13ॻ͍ͯͳ͍
࣍• ࣗݾհ• AirflowͷಋೖܦҢ• AirflowΛӡ༻ͯ͠Έͯ• Kuroko2Λͳ͍ͥ͡Ίͨͷ͔• ·ͱΊ14
ྑ͔ͬͨ͜ͱ• λεΫͷґଘ͕ؔՄࢹԽ͞Εɺ࣮ߦ͞Ε͍ͯΔ࣌Ͳ͜·ͰऴΘ͍ͬͯΔͷ͔͔Δ15
ྑ͔ͬͨ͜ͱ• ϩάඪ४ग़ྗ, ඪ४Τϥʔग़ྗΛग़ྗͯ͘͠ΕΔͷͰԿ͔ஔ͖ͨͱ͖ʹσόοά͘͢͠ͳͬͨ16
ྑ͔ͬͨ͜ͱ• ϓϩάϥϜΛमਖ਼Λඞཁͱ͠ͳ͍ݶΓ࠶࣮ߦEngҎ֎Ͱग़དྷΔΑ͏ʹ17
͓͖ͨ• ϩάΠϯػೳ• UTC• DAGͷฤू• DAGϑΝΠϧͷංେԽ18
ϩάΠϯػೳ• σϑΥϧτͰFalseͳͷͰઃఆ͕ඞཁ• http://qiita.com/hatappi/items/1b8a3a2d1f4b01c844ef19
UTC• ͜Ε͍࣮ͭߦ͞ΕΔͰ͠ΐ͏͔20
21Airflow͕ಈ͍͍ͯΔϚγϯͷλΠϜκʔϯʹΑΔ
Ϛγϯ͕JSTͷ࣌• JSTͰ10:00ʹ࣮ߦ͞ΕΔͷͰը໘্ͷUTCදهͰ1:00ʹ࣮ߦ͞ΕΔ• ը໘ͰݟΔ࣌ຖճ+9࣌ؒ͠ͳ͍ͱ͍͚ͳ͍͆22
ແ༻ͷUTC• UTCʹͳΔΑ͏ʹϋʔυίʔσΟϯά͞Ε͍ͯΔ• ৄ͘͠• http://qiita.com/hatappi/items/2a4d41ca14746a3c98a623
DAGͷฤू• ৽نՃɺฤूίϚϯυϥΠϯ্͔Βߦ͏• ੲຊޠίϝϯτ͕ग़དྷͳ͔ͬͨΑ͏͕ͩv1.8.0Ͱ֬ೝͨ͠ͱ͜Ζग़དྷͨ24
DAGϑΝΠϧͷංେԽ• PythonͰఆٛ͢ΔͷͰAPI௨৴ͰԿͰग़དྷΔ• ϩδοΫλεΫεΫϦϓτʹఆٛͯ͠DAGʹλεΫͷґଘؔεέδϡʔϧʹઐ೦ͤ͞Δ͖ͩͬͨ25
࣍• ࣗݾհ• AirflowͷಋೖܦҢ• AirflowΛӡ༻ͯ͠Έͯ• Kuroko2Λͳ͍ͥ͡Ίͨͷ͔• ·ͱΊ26
Kuroko2ͱ• cookpadͷδϣϒཧπʔϧ• RailsʹͷͤΔܗͰ༻͢Δ• ϩάΠϯGoogleOAuthೝূ͕͍͍ͭͯΔ• ࣌ࠁRailsͷઃఆ͕ө͞ΕΔ• ϒϥβ্͔Β৽نՃɺฤू͕ग़དྷΔ27
ॻ͖׳ΕͨݴޠͰ͋Δ͜ͱ• ࣾͷϝΠϯݴޠ͕RubyͳͷͰ৽͍͠ํ͕ೖͬͯཧղ͍͢͠• ίʔυRubyͰ͔͔Ε͍ͯΔͷͰίʔυಡΊΔ͠ͳ͓ͤΔ• ΄͍͠ػೳ͕͋ΕࣗͰ։ൃग़དྷΔ• https://github.com/hatappi/kuroko2_read_only28
࣍• ࣗݾհ• AirflowͷಋೖܦҢ• AirflowΛӡ༻ͯ͠Έͯ• Kuroko2Λͳ͍ͥ͡Ίͨͷ͔• ·ͱΊ29
·ͱΊ• AirflowͰKuroko2Ͱࣗͷతʹ͋ͬͨͷΛ༻͢Δͱྑͦ͞͏Ͱ͢• OSSͳͷͰԿ͔͋Εcommit͘Β͍ͷؾ࣋ͪ• DAGઈରʹංେԽͤ͞ͳ͍ʂ30
31͓ΘΓ