Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

ݴޠॲཧ൑ఆ 10 ໊ࢗը૾͔ΒݴޠΛ൑ఆ • ̐ݴޠʢ೔ӳதؖʣʹରԠ
 • σʔλԽϑϩʔͷޮ཰Խ
 • ΦϖϨʔλ΁ͷৼΓ෼͚ͷࣗಈԽ
 • ਫ਼౓ 98 %

Slide 11

Slide 11 text

߲໨ηάϝϯςʔγϣϯ 11 จࣈΛಡΈऔΒͣʹɺ໊ࢗͷ σβΠϯ͔Β߲໨Λݟ෼͚Δ • ߲໨൑ผͷ݁ՌΛֶश
 • ୯ମϞσϧͰ߲໨ۣܗɺ߲໨໊ͷਪఆ
 • ਫ਼౓ 98 %

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

ΦϖϨʔλʔ͔ΒͷೖྗΛड͚෇͚Δ 3 App Engine
 ʢNode.jsʣ Cloud Tasks Cloud Firestore ࣾ಺ΦϖϨʔλʔ App Engine ʢSPA ΞϓϦέʔγϣϯʣ ඇಉظॲཧ

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

τϥϑΟοΫ෼ׂ - Traffic Splitting - ෳ਺όʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ
 - IP ΞυϨε΍ Cookie ͰτϥϑΟοΫΛ෼ׂͰ͖Δ
 - ؅ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ 42 App Engine

Slide 43

Slide 43 text

τϥϑΟοΫ෼ׂ - Traffic Splitting - ෳ਺όʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ
 => ಈ࡞֬ೝ΍ςετ - IP ΞυϨε΍ Cookie ͰτϥϑΟοΫΛ෼ׂͰ͖Δ
 => A/B ςετ - ؅ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ 43 App Engine

Slide 44

Slide 44 text

τϥϑΟοΫ෼ׂ - Traffic Splitting - ෳ਺όʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ
 => ಈ࡞֬ೝ΍ςετ - IP ΞυϨε΍ Cookie ͰτϥϑΟοΫΛ෼ׂͰ͖Δ
 => A/B ςετ - ؅ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ 44 App Engine

Slide 45

Slide 45 text

τϥϑΟοΫ෼ׂ - Traffic Splitting - ෳ਺όʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ
 => ಈ࡞֬ೝ΍ςετ - IP ΞυϨε΍ Cookie ͰτϥϑΟοΫΛ෼ׂͰ͖Δ
 => A/B ςετ - ؅ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ => ϩʔϧόοΫ 45 App Engine

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

ϋϚΓͲ͜Ζᶄɿ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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

͍͞͝ʹ

Slide 67

Slide 67 text

We are hiring!

Slide 68

Slide 68 text

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