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

GCP サーバーレスサービス× 少数チームによる事業立ち上げ / gcp_serverless_startup_business

mokuo
September 24, 2019

GCP サーバーレスサービス× 少数チームによる事業立ち上げ / gcp_serverless_startup_business

GCP サーバーレス サービスについて / アーキテクチャ / メリット / ハマりどころ / 今後の課題

mokuo

September 24, 2019
Tweet

More Decks by mokuo

Other Decks in Programming

Transcript

  1. ($1αʔόʔϨεαʔϏεʷগ਺νʔϜ
    ʹΑΔࣄۀ্ཱͪ͛
    4FSWFSMFTTٕज़ษڧձʙϑϧϚωʔδυαʔϏε׆༻ࣄྫʙ
    %40$%FWFMPQNFOU(SPVQΤϯδχΞ໦ా༔Ұ࿠
    4BOTBOגࣜձࣾ

    View Slide

  2. Agenda
    - ࣗݾ঺հ
    - Sansan αʔϏε঺հ
    - ߴਫ਼౓ͳσʔλԽΛࢧ͑Δϊ΢ϋ΢
    - GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    2

    View Slide

  3. ࣗݾ঺հ
    - ໦ా ༔Ұ࿠
    - Sansanגࣜձࣾ DSOC Development Group
    ΤϯδχΞ
    - αʔόʔαΠυΛத৺ʹϑϩϯτΤϯυɾ
    Πϯϑϥʹ΋ڵຯ͕͋Γ·͢
    - Sansan Tech Podcast ΍ͬͯ·͢ʂ
    3

    View Slide

  4. Agenda
    - ࣗݾ঺հ
    - Sansan αʔϏε঺հ
    - ߴਫ਼౓ͳσʔλԽΛࢧ͑Δϊ΢ϋ΢
    - GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    4

    View Slide

  5. ๏ਓ޲͚Ϋϥ΢υ໊ࢗ؅ཧαʔϏε ݸਓ޲໊͚ࢗΞϓϦ

    View Slide

  6. 6

    View Slide

  7. Agenda
    - ࣗݾ঺հ
    - Sansan αʔϏε঺հ
    - ߴਫ਼౓ͳσʔλԽΛࢧ͑Δϊ΢ϋ΢
    - GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    7

    View Slide

  8. ߴਫ਼౓ͳσʔλԽΛࢧ͑Δϊ΢ϋ΢
    ػցͷྗͱਓͷྗΛ૊Έ߹ΘͤΔ
    8

    View Slide

  9. ϛεςΠΫσΟςΫλʔ
    9
    ޡΓͷ܏޲Λֶशͯ͠ϛεͷ
    ՄೳੑΛ༧ଌ
    ͜ΕʹΑΓɺΦϖϨʔλʔ͸ޮ཰తʹ
    ࠷ऴνΣοΫΛߦ͏͜ͱ͕ՄೳʹͳΓ·͢ɻ

    View Slide

  10. ݴޠॲཧ൑ఆ
    10
    ໊ࢗը૾͔ΒݴޠΛ൑ఆ
    • ̐ݴޠʢ೔ӳதؖʣʹରԠ

    • σʔλԽϑϩʔͷޮ཰Խ

    • ΦϖϨʔλ΁ͷৼΓ෼͚ͷࣗಈԽ

    • ਫ਼౓ 98 %

    View Slide

  11. ߲໨ηάϝϯςʔγϣϯ
    11
    จࣈΛಡΈऔΒͣʹɺ໊ࢗͷ
    σβΠϯ͔Β߲໨Λݟ෼͚Δ
    • ߲໨൑ผͷ݁ՌΛֶश

    • ୯ମϞσϧͰ߲໨ۣܗɺ߲໨໊ͷਪఆ

    • ਫ਼౓ 98 %

    View Slide

  12. ΦϖϨʔλʔʹΑΔೖྗ
    - Ұͭͷ߲໨ʹର͢Δɺෳ਺ͷΦϖϨʔλʹΑΔଟॏೖྗ
    - ೖྗ಺༰ʹର͢Δ໨ࢹνΣοΫ
    - ೖྗϧʔϧ΍τϨʔχϯά໰୊ͷ࡞੒
    12

    View Slide

  13. ৽ͨͳσʔλԽαʔϏεͷݕূ
    ຊ೔͸ɺߴਫ਼౓ͳσʔλԽϊ΢ϋ΢Λ׆༻ͨ͠
    ʮ੥ٻॻͷσʔλԽʯʹؔ͢ΔऔΓ૊ΈΛ͝঺հ
    ※ ਖ਼ࣜͳ৽αʔϏεͷൃදͰ͸͍͟͝·ͤΜ
    13

    View Slide

  14. Agenda
    - ࣗݾ঺հ
    - Sansan αʔϏε঺հ
    - ߴਫ਼౓ͳσʔλԽΛࢧ͑Δϊ΢ϋ΢
    - GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    14

    View Slide

  15. GCP αʔόʔϨε αʔϏε׆༻ࣄྫ
    ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ

    View Slide

  16. GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ
    - ΞʔΩςΫνϟ
    - ϝϦοτ
    - ϋϚΓͲ͜Ζ
    - ࠓޙͷ՝୊
    - ·ͱΊ
    16

    View Slide

  17. GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ
    - ΞʔΩςΫνϟ
    - ϝϦοτ
    - ϋϚΓͲ͜Ζ
    - ࠓޙͷ՝୊
    - ·ͱΊ
    17

    View Slide

  18. GCP αʔόʔϨε αʔϏεʹ͍ͭͯ
    - Google App Engine
    - Cloud Firestore
    - Cloud Tasks
    - Stackdriver
    - Cloud Storage
    - Cloud Functions
    18

    View Slide

  19. GCP αʔόʔϨε αʔϏεʹ͍ͭͯ
    - Google App Engine
    - Cloud Firestore
    - Cloud Tasks
    - Stackdriver
    - Cloud Storage => AWS S3
    - Cloud Functions => AWS Labmda
    19

    View Slide

  20. Google App Engine
    PaaSʢPlatform as a Serviceʣ
    - εέʔϧΞ΢τɾσϓϩΠ͕ߴ଎
    - Πϯελϯε͕θϩ·ͰεέʔϧΠϯ
    - αϙʔτϥϯλΠϜ
    - Java, Python, Go, PHP, Node.js, Rubyʢbetaʣ
    20

    View Slide

  21. Cloud Firestore
    αʔόʔϨεͳυΩϡϝϯτࢦ޲ NoSQL σʔλϕʔε
    - ΞϓϦέʔγϣϯͷෛՙʹԠͯࣗ͡ಈతʹਫฏεέʔϦϯά
    - ڧ੔߹ੑ
    - ߴ͍Մ༻ੑ
    - ϚϧνϦʔδϣϯͰ 99.999% Ҏ্
    - ϦʔδϣϯͰ 99.99% Ҏ্
    21

    View Slide

  22. Cloud Firestore ͷ֊૚σʔλ
    ྫʣͦΕͧΕͷνϟοτϧʔϜʹෳ਺ͷϝοηʔδ͕͋Δ
    - rooms
    - room-A
    - messages
    - message-1
    - message-2
    - …
    - room-B
    - …
    22
    name: “։ൃϧʔϜ”
    from: “ଠ࿠”, msg: “͜Μʹͪ͸ʂ”
    from: “࣍࿠”, msg: “Hello!”

    View Slide

  23. Cloud Firestore ͷ֊૚σʔλ
    ྫʣͦΕͧΕͷνϟοτϧʔϜʹෳ਺ͷϝοηʔδ͕͋Δ
    - rooms
    - room-A
    - messages
    - message-1
    - message-2
    - …
    - room-B
    - …
    23
    name: “։ൃϧʔϜ”
    from: “ଠ࿠”, msg: “͜Μʹͪ͸ʂ”
    from: “࣍࿠”, msg: “Hello!”
    ← ʢϧʔτʣίϨΫγϣϯ
    ← υΩϡϝϯτ
    ← rooms ͷαϒίϨΫγϣϯ
    ← υΩϡϝϯτ

    View Slide

  24. Cloud Firestore ͷσʔλܕ
    - Map
    - JavaScript ͷΦϒδΣΫτɺRuby ͷϋογϡɺPython ͷࣙॻܕͷΑ͏ͳ஋ΛೖΕΒ
    ΕΔ
    - Array
    - Boolean
    - Date and time
    - String
    - …
    ࢀߟ: https://firebase.google.com/docs/firestore/manage-data/data-types
    24

    View Slide

  25. Cloud Tasks
    ϑϧϚωʔδυͳλεΫΩϡʔαʔϏε
    - ॲཧΛඇಉظͰ࣮ߦͰ͖Δ
    - HTTP Target λεΫʢbetaʣ
    - App Engine λεΫ
    - ಉ࣌λεΫͷ࠷େϨʔτ΍࠷େ਺ΛઃఆͰ͖Δ
    25

    View Slide

  26. Stackdriver
    ΞϓϦέʔγϣϯɺΠϯϑϥετϥΫνϟͷϞχλϦϯάͱ؅ཧ
    - ϩΪϯά => Stackdriver Logging
    - Τϥʔ௨஌ => Stackdriver Error Reporting
    - ϞχλϦϯά => Stackdriver Monitoring
    26

    View Slide

  27. GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ
    - ΞʔΩςΫνϟ
    - ϝϦοτ
    - ϋϚΓͲ͜Ζ
    - ࠓޙͷ՝୊
    - ·ͱΊ
    27

    View Slide

  28. ࢖༻ݴޠ
    28
    Cloud Functions
    Node.js
    όοΫΤϯυ
    Node.js, TypeScript, Express
    ࣗಈԽΤϯδϯ
    C#
    ϑϩϯτΤϯυ
    React, Redux, TypeScript

    View Slide

  29. αʔϏεͷશମ૾
    29
    ੥ٻॻը૾
    σʔλԽ݁Ռ
    ೖྗ / σʔλԽ
    γεςϜ
    ࣾ಺ΦϖϨʔλʔ
    ࣗಈԽΤϯδϯ
    Ϣʔβʔଆ
    γεςϜ
    σʔλԽ
    ੥ٻॻσʔλԽγεςϜ
    Ξοϓϩʔυ

    View Slide

  30. αʔϏεͷશମ૾
    30
    ੥ٻॻը૾
    σʔλԽ݁Ռ
    ೖྗ / σʔλԽ
    γεςϜ
    ࣾ಺ΦϖϨʔλʔ
    ࣗಈԽΤϯδϯ
    Ϣʔβʔଆ
    γεςϜ
    Ξοϓϩʔυ
    σʔλԽ
    ੥ٻॻσʔλԽγεςϜ

    View Slide

  31. ΞʔΩςΫνϟ
    KPI ج൫
    ϩΪϯά / Τϥʔ௨஌
    Stackdriver
    Ϣʔβʔଆ
    γεςϜ
    BigQuery
    Cloud
    Pub/Sub
    ࣗಈԽΤϯδϯ
    Cloud
    Dataflow
    App
    Engine
    Cloud
    Functions
    Cloud
    Storage
    Cloud
    Firestore
    Compute
    Engine
    Cloud
    Tasks
    ೖྗ / σʔλԽ
    γεςϜ

    View Slide

  32. ΞʔΩςΫνϟ
    KPI ج൫
    ϩΪϯά / Τϥʔ௨஌
    Stackdriver
    Ϣʔβʔଆ
    γεςϜ
    BigQuery
    Cloud
    Pub/Sub
    ࣗಈԽΤϯδϯ
    Cloud
    Dataflow
    App
    Engine
    Cloud
    Functions
    Cloud
    Storage
    Cloud
    Firestore
    Compute
    Engine
    Cloud
    Tasks
    ೖྗ / σʔλԽ
    γεςϜ

    View Slide

  33. ΦϖϨʔλʔ͔ΒͷೖྗΛड͚෇͚Δ
    3
    App Engine

    ʢNode.jsʣ
    Cloud Tasks
    Cloud Firestore
    ࣾ಺ΦϖϨʔλʔ App Engine
    ʢSPA ΞϓϦέʔγϣϯʣ
    ඇಉظॲཧ

    View Slide

  34. ϑΝΠϧΞοϓϩʔυͰಛఆͷॲཧΛߦ͏
    - Cloud Functions ͷ Cloud Storage τϦΨʔ
    - Cloud Tasks ͷ App Engine λεΫ
    34
    Cloud Storage Cloud Functions App Engine
    Cloud Tasks

    View Slide

  35. ࣗಈԽΤϯδϯ - Compute Engine
    35
    ੥ٻॻը૾ͱΦϖϨʔλʔͷೖྗσʔλͷηοτΛֶश
    গͣͭࣗ͠ಈԽ͍ͯ͘͠
    ※ Web API ͱͯ͠࿈ܞ

    View Slide

  36. KPI ج൫
    - Google App Engine ͔Β Cloud Pub/Sub ܦ༝ͰϩάΛૹ৴
    - Tableau ͰՄࢹԽ
    36
    App Engine BigQuery
    Cloud Pub/Sub Cloud Dataflow

    View Slide

  37. GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ
    - ΞʔΩςΫνϟ
    - ϝϦοτ
    - ϋϚΓͲ͜Ζ
    - ࠓޙͷ՝୊
    - ·ͱΊ
    37

    View Slide

  38. ϝϦοτ
    - ᶃ ΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ
    - ᶄ αʔόʔ؅ཧෆཁ
    - ᶅ ίετ࠷దԽ
    38

    View Slide

  39. ϝϦοτᶃɿΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ
    - ඇಉظ࣮ߦ
    - ఆظ࣮ߦ
    - σϓϩΠ
    - IPΞυϨε੍ݶ
    - τϥϑΟοΫ෼ׂ
    39
    App Engine

    View Slide

  40. ϝϦοτᶃɿΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ
    - ඇಉظ࣮ߦ
    - ఆظ࣮ߦ
    - σϓϩΠ
    - IPΞυϨε੍ݶ
    - τϥϑΟοΫ෼ׂ
    40
    Cloud Tasks
    App Engine Cron
    gcloud ίϚϯυ
    App Engine ϑΝΠΞ ΢Υʔϧ
    Traffic Splitting
    App Engine

    View Slide

  41. ϝϦοτᶃɿΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ
    - ඇಉظ࣮ߦ
    - ఆظ࣮ߦ
    - σϓϩΠ
    - IPΞυϨε੍ݶ
    - τϥϑΟοΫ෼ׂ
    41
    Cloud Tasks
    App Engine Cron
    gcloud ίϚϯυ
    App Engine ϑΝΠΞ ΢Υʔϧ
    Traffic Splitting
    App Engine

    View Slide

  42. τϥϑΟοΫ෼ׂ - Traffic Splitting
    - ෳ਺όʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ

    - IP ΞυϨε΍ Cookie ͰτϥϑΟοΫΛ෼ׂͰ͖Δ

    - ؅ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ
    42
    App Engine

    View Slide

  43. τϥϑΟοΫ෼ׂ - Traffic Splitting
    - ෳ਺όʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ

    => ಈ࡞֬ೝ΍ςετ
    - IP ΞυϨε΍ Cookie ͰτϥϑΟοΫΛ෼ׂͰ͖Δ

    => A/B ςετ
    - ؅ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ
    43
    App Engine

    View Slide

  44. τϥϑΟοΫ෼ׂ - Traffic Splitting
    - ෳ਺όʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ

    => ಈ࡞֬ೝ΍ςετ
    - IP ΞυϨε΍ Cookie ͰτϥϑΟοΫΛ෼ׂͰ͖Δ

    => A/B ςετ
    - ؅ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ
    44
    App Engine

    View Slide

  45. τϥϑΟοΫ෼ׂ - Traffic Splitting
    - ෳ਺όʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ

    => ಈ࡞֬ೝ΍ςετ
    - IP ΞυϨε΍ Cookie ͰτϥϑΟοΫΛ෼ׂͰ͖Δ

    => A/B ςετ
    - ؅ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ
    => ϩʔϧόοΫ
    45
    App Engine

    View Slide

  46. ϝϦοτᶄɿαʔόʔ؅ཧෆཁ
    - ෛՙʹԠͯ͡Φʔτεέʔϧ
    - αʔόʔͷϓϩϏδϣχϯά͕ෆཁ
    46
    App Engine Cloud Firestore

    View Slide

  47. ίετ࠷దԽ
    - جຊ࢖ͬͨ෼͚ͩ՝ۚ
    - Πϯελϯε͕θϩ·ͰεέʔϧΠϯͳͲ
    - Google App Engine / Standard Environment
    - Cloud Run
    47

    View Slide

  48. ϝϦοτʢ;Γ͔͑Γʣ
    - ᶃ ΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ
    - ᶄ αʔόʔ؅ཧෆཁ
    - ᶅ ίετ࠷దԽ
    48

    View Slide

  49. ϝϦοτʢ;Γ͔͑Γʣ
    - ᶃ ΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ
    - ᶄ αʔόʔ؅ཧෆཁ
    - ᶅ ίετ࠷దԽ
    49
    => ݶΒΕͨϦιʔεͰ΋εϐʔυײΛ࣋ͬͯ։ൃͰ͖Δ

    View Slide

  50. GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ
    - ΞʔΩςΫνϟ
    - ϝϦοτ
    - ϋϚΓͲ͜Ζ
    - ࠓޙͷ՝୊
    - ·ͱΊ
    50

    View Slide

  51. ϋϚΓͲ͜Ζ
    - ᶃ Google App Engine ؀ڥ
    - ᶄ App Engine ϑΝΠΞ΢Υʔϧ
    - ᶅ Cloud Firestore ͷσʔλϕʔεઃܭ
    51

    View Slide

  52. ϋϚΓͲ͜ΖᶃɿGoogle App Engine ؀ڥ
    - ελϯμʔυ؀ڥ or ϑϨΩγϒϧ؀ڥ
    => ՄೳͳݶΓελϯμʔυ؀ڥΛ࢖͏
    - σϓϩΠ΍εέʔϦϯά͕ߴ଎
    - Πϯελϯε͕θϩ·ͰεέʔϧΠϯ
    - ެࣜυΩϡϝϯτࢀর
    - https://cloud.google.com/appengine/docs/flexible/java/flexible-for-
    standard-users?hl=ja
    52
    App Engine

    View Slide

  53. GAE/FE Λ࢖͏৔໘ - Google App Engine / Flexible Environment -
    - GAEΠϯελϯεΛ VPC ωοτϫʔΫʹඥ෇͚͍ͨ࣌
    - AWS ্ͷࣾ಺αʔϏεͱ VPN Ͱ઀ଓ͔ͨͬͨ͠ͷͰɺҰ෦ GAE/FE Λ
    ࢖༻
    - ݱࡏ͸ Serverless VPC Access Λ࢖͑͹ɺελϯμʔυ؀ڥ͔Β VPC Ϧ
    ιʔεʹΞΫηεՄೳ
    - ৐Γ׵͑Λݕ౼த
    53
    App Engine

    View Slide

  54. GAE/FE Λ࢖͏৔໘ - Google App Engine / Flexible Environment -
    - ಛఆͷϥΠϒϥϦΛ࢖͍͍ͨ࣌
    - ผαʔϏεʹ੾Γग़ͯ͠ Docker ΠϝʔδΛ࢖༻
    - ݱࡏ͸ Cloud Run Λ࢖༻͢Δ͜ͱͰɺGAE/SE ͷΑ͏ͳεέʔϥϏϦ
    ςΟΛอͪͭͭɺDocker ΠϝʔδΛ࢖ͬͨߏ੒ʹͰ͖Δ
    54
    App Engine

    View Slide

  55. ϋϚΓͲ͜ΖᶄɿApp Engine ϑΝΠΞ΢Υʔϧ
    GCP αʔϏεؒͷ௨৴΋ϒϩοΫ͞ΕΔ͜ͱ͕͋Δ
    - Cloud Pub/Sub ͸άϩʔόϧͳαʔϏεͰ͋ΔͨΊɺ

    ϗϫΠτϦετ௥Ճ͸Ͱ͖ͳ͍
    - Cloud Tasks ͸಺෦తʹ URL ϑΣον αʔϏεΛ࢖͍ͬͯΔͨΊɺ

    URL ϑΣον αʔϏεͷ IP ΞυϨεΛڐՄ͢Δ
    55
    Cloud
    Storage
    Cloud
    Functions
    App Engine
    Cloud Tasks
    App Engine
    Cloud Pub/
    Sub
    Cloud
    Storage
    App Engine

    View Slide

  56. ϋϚΓͲ͜ΖᶅɿCloud Firestore ͷσʔλϕʔεઃܭ
    SQL ͷΑ͏ͳ COUNT ؔ਺͸ͳ͍
    - υΩϡϝϯτΛΨόͬͱऔ͖ͬͯͯΧ΢ϯτ͢Δ͜ͱ͸Ͱ͖Δ
    - ෼ࢄΧ΢ϯλΛ࢖͏
    - ੍໿ɿ1 υΩϡϝϯτ͋ͨΓ 1 ඵؒʹ໿ 1 ճ͔͠ߋ৽Ͱ͖ͳ͍
    - Χ΢ϯλ༻ͷυΩϡϝϯτΛෳ਺༻ҙͯ͠ɺϥϯμϜʹΠϯΫϦϝϯτ͢Δ
    - શυΩϡϝϯτΛऔಘͯ͠߹ܭΛܭࢉ͢Δ
    - FieldValue.increment() Λ࢖͏ʢv1.1.0 ͰϦϦʔεʣ
    - ཁ݅ʹΑͬͯ͸ɺRedis ͳͲͰΧ΢ϯτ͢Δͷ΋͋Γ
    56
    Cloud
    Firestore

    View Slide

  57. Firestore Ͱؔ࿈ΛͲͷΑ͏ʹ͔࣋ͭ
    ॻ͖ࠐΈ΍ಡΈࠐΈͷස౓Ͱ൑அ͢Δ
    - 1 : N ͷσʔλʹ͍ͭͯ
    - Ұॹʹѻ͏͜ͱ͕ଟ͍৔߹ => Array ܕͱͯ͠ϑΟʔϧυʹ࣋ͨͤΔ
    - 1 υΩϡϝϯτ͋ͨΓ 1 ඵؒʹ໿ 1 ճ͔͠ߋ৽Ͱ͖ͳ͍
    - ผʑʹѻ͏͜ͱ͕ଟ͍৔߹ => αϒίϨΫγϣϯʹ࣋ͨͤΔ
    - ίϨΫγϣϯͱαϒίϨΫγϣϯʹ·͕ͨͬͨΫΤϦ͸Ͱ͖ͳ͍
    57
    Cloud
    Firestore

    View Slide

  58. GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ
    - ΞʔΩςΫνϟ
    - ϝϦοτ
    - ϋϚΓͲ͜Ζ
    - ࠓޙͷ՝୊
    - ·ͱΊ
    58

    View Slide

  59. ࠓޙͷ՝୊
    - ᶃɿ։ൃ؀ڥ
    - ᶄɿಈ࡞֬ೝ
    - ᶅɿ෼ੳܥΫΤϦ
    - ᶆɿΤϥʔ௨஌
    => ͜Ε͔Β੔͍͑ͯ͘
    59

    View Slide

  60. ࠓޙͷ՝୊ᶃɿ։ൃ؀ڥ
    - Cloud Firestore ͸ 1 ϓϩδΣΫτʹ 1 ͔ͭ͠ DB Λ࡞Εͳ͍
    - ։ൃɾࣗಈςετ
    - Cloud Tasks ͸ Push ͳͷͰɺϩʔΧϧʹ޲͚ΒΕͳ͍
    - ։ൃ࣌͸ Cloud Tasks ΛϞοΫ͢Δ͔
    60

    View Slide

  61. ࠓޙͷ՝୊ᶄɿಈ࡞֬ೝ
    - Heroku Review Apps ͷΑ͏ͳ͜ͱΛ͍ͨ͠
    - PR ͝ͱʹ؀ڥΛཱͯΔ
    - Google App Engine ͸ෳ਺όʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔͢͜ͱ
    ͕Ͱ͖Δ
    61

    View Slide

  62. ࠓޙͷ՝୊ᶅɿ෼ੳܥΫΤϦ
    - SQL ͷΑ͏ʹॊೈͳΫΤϦ͸ͳ͍
    - BigQuery ʹσʔλΛΠϯϙʔτ͢Δ
    62

    View Slide

  63. ࠓޙͷ՝୊ᶆɿΤϥʔ௨஌
    - Stackdriver Error Reporting ͔Βͷ ϝʔϧ௨஌Λ Gmail ͷϑΟϧλػೳͰ
    Slack ʹ௨஌͍ͯ͠Δ
    - λΠϜϥά͕͋Δ
    - ςΩετΛΧελϚΠζͰ͖ͳ͍
    - Datadog ΁ͷू໿Λݕ౼
    63

    View Slide

  64. GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
    - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ
    - ΞʔΩςΫνϟ
    - ϝϦοτ
    - ϋϚΓͲ͜Ζ
    - ࠓޙͷ՝୊
    - ·ͱΊ
    64

    View Slide

  65. ·ͱΊ
    GCP αʔόʔϨε αʔϏε
    - ݶΒΕͨϦιʔεͰ΋εϐʔυײΛ࣋ͬͯ։ൃͰ͖Δ
    - ϑϧϚωʔδυɺΦʔτεέʔϧͷྑ͞ΛڗडͰ͖ΔҰํͰɺ੍໿΍Ϋη͕
    ͋Δ
    - ϝϯόʔ͕૿͑ͯ͘Δͱɺ։ൃ؀ڥͳͲͷ੔උʹ޻෉͕ඞཁ
    65

    View Slide

  66. ͍͞͝ʹ

    View Slide

  67. We are hiring!

    View Slide

  68. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide