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

サーバーレスで始める ゆるふわデータ基盤 - noteの事例 -

Retu Fukui
September 12, 2020

サーバーレスで始める ゆるふわデータ基盤 - noteの事例 -

2020/09/12 JAWS SONIC 2020 & MIDNIGHT JAWS 2020にてnoteにおけるデータ基盤の事例をお話しました。

Retu Fukui

September 12, 2020
Tweet

More Decks by Retu Fukui

Other Decks in Technology

Transcript

  1. αʔόʔϨεͰ࢝ΊΔ
    ΏΔ;Θσʔλج൫
    OPUFͷࣄྫ


    +"8440/*$&.*%/*()5+"84
    ෱Ҫ྽

    View Slide

  2. ෱Ҫ ྽ | @fukuiretu
    • noteגࣜձࣾ
    • ΤϯδχΞ
    • ϑϩϯτΤϯυ / όοΫΤϯυ / 

    ΠϯϑϥͱͳΜͰ΋΍ΔϚϯ
    • ੨৿ࡏॅ
    • ϦϞʔτϫʔΧʔ
    ɾJAWS-UG ੨৿ࢧ෦ॴଐ
    @fukuiretu
    @fukuiretu
    fukuiretu

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. 2018೥ࠒ͔Βσʔλ෼ੳʹ

    ຊࠊΛೖΕ࢝ΊΔ

    View Slide

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

    View Slide

  9. noteの急激な成⻑

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. 開発体制

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. データ集約


    ᶃ AWS Service ProxyΛར༻ͯ͠௚઀FirehoseʹPut
    ϝϦοτ: Lambdaෆཁ
    σϝϦοτ: σʔλߏ଄͕ෳࡶʹͳΔͱVTLͰͷϚοϐϯά͕େม
    ᶄ Firehoseͷड৴σʔλม׵ΦϓγϣϯΛར༻͠ɺ

    1ϨίʔυຖʹվߦίʔυΛೖΕΔ
    ※Firehoseͷ্ݶʹ஫ҙʢ౦ژϦʔδϣϯ: 1000Ϩίʔυ/s, 1000τϥϯβΫγϣϯ/s, 1MiB/sʣ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. ౰ॳͷ՝୊͸΄΅ղফ͕ͨ͠ɺ

    ৽ͨͳ՝୊΋…

    View Slide

  29. 課題1
    • ύʔςΟγϣϯ਺ͷ૿ͰΫΤϦͷύϑΥʔϚϯεʹӨڹ
    • ίετ͔͔Δʢैྔ՝ۚʣ
    AthenaͷύʔςΟγϣχϯάΛ

    GlueͷΫϩʔϥʔͰੜ੒͢ΔͷΛ΍Ί͍ͨ

    View Slide

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

    View Slide

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

    Ϋογϣϯ͕ͳ͍

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  39. まとめ
    ౰ॳͷ՝୊͸΄΅ղফͰ͖ɺ

    ӡ༻ίετ͸αʔόʔϨεʹΑͬͯ
    ظ଴௨Γେ෯ʹܰݮͰ͖ͨ

    View Slide

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

    View Slide

  41. ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide