Slide 1

Slide 1 text

αʔόʔϨεͰ࢝ΊΔ ΏΔ;Θσʔλج൫ OPUFͷࣄྫ
 
 +"8440/*$&.*%/*()5+"84 ෱Ҫ྽

Slide 2

Slide 2 text

෱Ҫ ྽ | @fukuiretu • noteגࣜձࣾ • ΤϯδχΞ • ϑϩϯτΤϯυ / όοΫΤϯυ / 
 ΠϯϑϥͱͳΜͰ΋΍ΔϚϯ • ੨৿ࡏॅ • ϦϞʔτϫʔΧʔ ɾJAWS-UG ੨৿ࢧ෦ॴଐ @fukuiretu @fukuiretu fukuiretu

Slide 3

Slide 3 text

アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝୊ɾల๬ 5. ·ͱΊ ※AWSʹؔ͢Δొ৔ਓ෺ͷࡉ͔͍આ໌͸୺ંΓ·͢

Slide 4

Slide 4 text

50%0ޙೖΕ ΫϦΤΠλʔ͕จষ΍ϚϯΨɺࣸਅɺԻ੠Λ౤ߘ͢Δ ͜ͱ͕Ͱ͖ɺϢʔβʔ͸ͦͷίϯςϯπΛָ͠ΜͰԠ ԉͰ͖ΔϝσΟΞϓϥοτϑΥʔϜ

Slide 5

Slide 5 text

noteͰ࿩୊ΛΑͼ cakesʹ࿈ࡌ͞Εͨޙɺ ॻ੶ԽɺυϥϚԽɻ ిࢠࡶࢽʮจܳΧυΧϫʯͱ noteͰಉ࣌࿈ࡌΛͨ͠ޙɺॻ ੶ԽɺυϥϚԽ note༗ྉߪಡऀݶఆͷ ࿈ࡌΛॻ੶Խ ຖ೔৽ฉͷ࿈ࡌখઆΛ 10೔ޙʹnoteͰ࿈ࡌ ͦͷޙɺॻ੶ԽɺөըԽ noteͷਓؾ࿈ࡌΛ ॻ੶Խ noteͰ࿩୊ΛΑΜͩ هࣄΛॻ੶Խ ΫϦΤΠλʔͷ֗ɺnote͔Βੜ·Εͨ࡞඼

Slide 6

Slide 6 text

アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝୊ɾల๬ 5. ·ͱΊ

Slide 7

Slide 7 text

2018೥ࠒ͔Βσʔλ෼ੳʹ
 ຊࠊΛೖΕ࢝ΊΔ

Slide 8

Slide 8 text

データ基盤構築前のトラッキング⽅法 • ΞϓϦέʔγϣϯ্ʹτϥοΩϯά༻ͷAPI • ΞΫςΟϏςΟܥͷϩά͸͢΂ͯRDBʹอଘ

Slide 9

Slide 9 text

noteの急激な成⻑

Slide 10

Slide 10 text

成⻑とともに出てきた課題 • ΞϓϦέʔγϣϯٴͼDBͷෛՙ͕๲େʹ • ΫΤϦ݁Ռ͕ฦͬͯͣ͜σʔλநग़͕ࠔ೉

Slide 11

Slide 11 text

対処療法 • ύʔςΟγϣχϯά͕͞Ε͓ͯΒͣίετ͕๲େʹ ‣ ύϑΥʔϚϯε΋͍·͍ͪ… • ϧʔϧཱ͕֬͞Ε͓ͯΒͣσʔλ͕ࢄࡏ ՝୊ ඞཁʹԠͯ͡S3ʹDBͷσʔλΛΤΫεϙʔτ͠ɺ AthenaͰநग़

Slide 12

Slide 12 text

解決すべき課題 • ΞϓϦέʔγϣϯٴͼDBͷෛՙ͕๲େʹ • ύʔςΟγϣχϯά͕͞Ε͓ͯΒͣίετ͕๲େʹ • ϧʔϧཱ͕֬͞Ε͓ͯΒͣσʔλ͕ࢄࡏ σʔλج൫ͷधཁ͕ߴ·Δ

Slide 13

Slide 13 text

アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝୊ɾల๬ 5. ·ͱΊ

Slide 14

Slide 14 text

開発体制

Slide 15

Slide 15 text

⽅針 ӡ༻ϦιʔεΛ࠷খʹ = ։ൃʹઐ೦

Slide 16

Slide 16 text

どうしたら運⽤リソースを最⼩にできるか • ӡ༻ͷ؆ૉԽ • Φʔτεέʔϧ • Մ༻ੑ ӡ༻ϦιʔεΛ࠷খʹ = ։ൃʹઐ೦ αʔόʔϨεͷػӡͰ͸??

Slide 17

Slide 17 text

どうしたら運⽤リソースを最⼩にできるか • ӡ༻ͷ؆ૉԽ • Φʔτεέʔϧ • Մ༻ੑ ӡ༻ϦιʔεΛ࠷খʹ = ։ൃʹઐ೦ αʔόʔϨεͷػӡͰ͸?? αʔόʔϨεΞʔΩςΫνϟͰɺ ϛχϚϜʢΏΔ;Θʣʹελʔτ

Slide 18

Slide 18 text

アーキテクチャの全体像 ։ൃظؒ: ໿3ϲ݄ʢௐࠪɾݕূؚΉʣ

Slide 19

Slide 19 text

データ集約 ᶃ ᶄ ᶃ AWS Service ProxyΛར༻ͯ͠௚઀FirehoseʹPut ϝϦοτ: Lambdaෆཁ σϝϦοτ: σʔλߏ଄͕ෳࡶʹͳΔͱVTLͰͷϚοϐϯά͕େม ᶄ Firehoseͷड৴σʔλม׵ΦϓγϣϯΛར༻͠ɺ
 1ϨίʔυຖʹվߦίʔυΛೖΕΔ ※Firehoseͷ্ݶʹ஫ҙʢ౦ژϦʔδϣϯ: 1000Ϩίʔυ/s, 1000τϥϯβΫγϣϯ/s, 1MiB/sʣ

Slide 20

Slide 20 text

データ整形 ᶃ ᶄ ᶃ S3ͷPut EventͰσʔλ੔ܗ༻ͷLambdaΛൃՐ ᶄ ओʹҎԼͷॲཧΛߦ͏ • AthenaͷύʔςΟγϣχϯάͷͨΊʹHiveܗࣜͷS3 Keyੜ੒ ‣ e.g. content_type=action_logs/year=YYYY/month=MM/day=DD/hour=HH • Referrerͷ෼ղ • UserAgentͷ෼ղ • σʔλܕͷௐ੔

Slide 21

Slide 21 text

アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝୊ɾల๬ 5. ·ͱΊ

Slide 22

Slide 22 text

利⽤しているツール ߏ੒؅ཧ / σϓϩΠ AWS CDK • CloudWatch Logs • CloudWatch Alarm • AWS Chatbot ؂ࢹ

Slide 23

Slide 23 text

良かった / ⾟かった話 ! ྑ͔ͬͨ " ਏ͔ͬͨ αʔόʔͷ͓कΓ͸΄΅Կ΋ͯ͠ͳ͍ ϝτϦΫεΛΈ֤ͯछαʔϏεͷ্ݶʹ͔͔Βͳ͍͔͚ͩ஫ࢹ AWSͰো֐͕ى͖Δͱ੒͢ज़͕ͳ͍ e.g. 2020/04/20ʹൃੜͨ͠SQSͷେن໛ো֐

Slide 24

Slide 24 text

当初の課題は解決できたのか ՝୊: ΞϓϦέʔγϣϯٴͼDBͷෛՙ͕๲େʹ ΞϓϦέʔγϣϯٴͼDBͱ෼཭ͨ͠ͷͰ΄΅ղܾʢҰ෦ҠߦͰ͖͍ͯͳ͍ʣ

Slide 25

Slide 25 text

当初の課題は解決できたのか ՝୊: ύʔςΟγϣχϯά͕͞Ε͓ͯΒͣίετ͕๲େʹ ύʔςΟγϣχϯάͨ͠ͷͰղܾ ΫΤϦ݁Ռ΋ετϨεແ͘ฦͬͯ͘ΔΑ͏ʹ

Slide 26

Slide 26 text

当初の課題は解決できたのか ՝୊: ϧʔϧཱ͕֬͞Ε͓ͯΒͣσʔλ͕ࢄࡏ σʔλύΠϓϥΠϯཱ͕֬͞ΕͨͷͰղܾ

Slide 27

Slide 27 text

アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝୊ɾల๬ 5. ·ͱΊ

Slide 28

Slide 28 text

౰ॳͷ՝୊͸΄΅ղফ͕ͨ͠ɺ
 ৽ͨͳ՝୊΋…

Slide 29

Slide 29 text

課題1 • ύʔςΟγϣϯ਺ͷ૿ͰΫΤϦͷύϑΥʔϚϯεʹӨڹ • ίετ͔͔Δʢैྔ՝ۚʣ AthenaͷύʔςΟγϣχϯάΛ
 GlueͷΫϩʔϥʔͰੜ੒͢ΔͷΛ΍Ί͍ͨ

Slide 30

Slide 30 text

課題1の展望 • DDLͰprojection.xxxͱ͍͏ଐੑΛఆٛ͢Δ͚ͩ • ผ్ྉۚ΋͔͔Βͳ͍ Partition ProjectionΛར༻͢Δ

Slide 31

Slide 31 text

課題2 • όονΠϯϙʔτ͕Ͱ͖ͳ͍෼ίετ૿ • Kinesis Firehoseͷ্ݶʢͲ͜·Ͱ؇࿨ͯ͠΋Β͑Δ͔ෆಁ໌ʣ • Τϥʔ͕ى͖ͨࡍͷϋϯυϦϯάɾϦΧόϦʔ͕೉͍͠ API Gateway ͱ Kinesis Firehoseؒʹ
 Ϋογϣϯ͕ͳ͍

Slide 32

Slide 32 text

課題2の展望 API͸ࣗલͰཱͯͯkinesis-agent(or Fluentd)Ͱ όονΠϯϙʔτ͢Δ

Slide 33

Slide 33 text

課題3 • ݱঢ়͸ఆظతʹόονͰS3΁Πϯϙʔτ͍ͯ͠Δ ‣ ࣌ؒͱख͕͔͔ؒΔ RDB্ͷσʔλΛAthenaͰΧδϡΞϧʹ ݁߹͍ͨ͠

Slide 34

Slide 34 text

課題3の展望 ϑΣσϨʔςουɾΫΤϦΛར༻͢Δ ※·ͩpreviewͳͷͰਖ਼࠲଴ػத

Slide 35

Slide 35 text

課題3の展望 https://aws.amazon.com/jp/blogs/news/query-any-data-source- with-amazon-athenas-new-federated-query/

Slide 36

Slide 36 text

課題4 σʔλ΢ΣΞϋ΢ε΍Ϛʔτʹ૬౰͢ΔσʔλΛ ༻ҙ͠རศੑΛ޲্͍ͨ͠

Slide 37

Slide 37 text

課題4の展望 • CTASΛར༻ͨ͠Parquet(ྻࢦ޲ϑΥʔϚοτ)΁ͷม׵ • BigQuery Omniͷར༻

Slide 38

Slide 38 text

アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝୊ɾల๬ 5. ·ͱΊ

Slide 39

Slide 39 text

まとめ ౰ॳͷ՝୊͸΄΅ղফͰ͖ɺ
 ӡ༻ίετ͸αʔόʔϨεʹΑͬͯ ظ଴௨Γେ෯ʹܰݮͰ͖ͨ

Slide 40

Slide 40 text

• αʔϏεن໛ʹΑͬͯྉۚίετ͕௓ͶΔՄೳੑ͋Γ • ো֐࣌͸جຊతʹ͓فΓ͢Δ͔͠ͳ͍ まとめ ͳʹΛ༏ઌ͢΂͖͔Λख़ߟ͢Δ αʔόʔϨεͷτϨʔυΦϑ ʢ൑அࡐྉ: αʔϏεಛੑɺαʔϏεن໛ɺνʔϜͷφϨοδetc..ʣ

Slide 41

Slide 41 text

͋Γ͕ͱ͏͍͟͝·ͨ͠