Slide 1

Slide 1 text

Datastore͔ΒSpanner΁ͷ θϩμ΢ϯλΠϜҠߦ Kanji Yomoda

Slide 2

Slide 2 text

ࣗݾ঺հ Kanji Yomoda / BIR @k__yomo - ৽ଔͰM3ʹೖࣾ͠ݱࡏ2೥໨ - αʔόʔαΠυ(Go)ɺΫϥ΢υΠϯϑϥ(GCP, Terraform) पΓΛओʹ୲౰

Slide 3

Slide 3 text

໨࣍ 1. Ξϯέʔτ഑৴γεςϜͱ͸ 2. Datastoreར༻࣌ͷ՝୊ 3. ҠߦઌબఆɾPoC 4. Ҡߦઃܭ 5. Ҡߦޙͷ݁Ռ 6. ݱࡏͷӡ༻ɾࠓޙͷ՝୊

Slide 4

Slide 4 text

1. Ξϯέʔτ഑৴γεςϜͱ͸

Slide 5

Slide 5 text

1. Ξϯέʔτ഑৴γεςϜͱ͸ ● Ϣʔβʔ΁ͷ࠷దͳΞϯέʔτ഑৴Λ੹຿ͱ͢ΔϚΠΫϩαʔϏε ○ ୭ʹͲͷνϟωϧ(ΞϯέʔτҰཡϖʔδɺαΠτ಺޿ࠂ࿮ɺϝʔϧɺαΠτ಺௨ ஌)ͰͲΕ͘Β͍഑৴͢Δ͔ ● ֤ΞϯέʔτγεςϜͱCloud Pub/SubΛ༻͍ͯඇಉظʹ࿈ܞ (Ξϯέʔτ഑৴։࢝ɺճ౴৘ใͷಉظͳͲ) ● Go, App Engine, Datastore, Cloud Pub/Sub

Slide 6

Slide 6 text

1. Ξϯέʔτ഑৴γεςϜͱ͸(DBؔ࿈) ● m3.comͷτοϓϖʔδͱಉ͘͡Β͍ͷΞΫηεྔ ● READϔϏʔ (ϢʔβʔͷαΠτΞΫηε࣌ʹɺճ౴ՄೳͳΞϯέʔτΛฦ͢ॲཧ͕ϝΠϯ) ● ϢʔβʔͷIDͰσʔλΛҾ͘Ϣʔεέʔε͕ओͳͨΊDatastoreΛ౰ॳ࠾༻

Slide 7

Slide 7 text

1. Ξϯέʔτ഑৴γεςϜͱ͸(σʔλಉظ) ● Cloud Pub/SubͷPush SubscriptionΛར༻͠ɺ ΞϯέʔτγεςϜ͔Β഑৴৘ใ΍ճ౴৘ใΛऔಘ ● Pub/Subͷϝοηʔδ(Πϕϯτ)ͷड͚ޱ͸શͯԼهΛຬͨ͢ɻ ○ ႈ౳ ○ ॱෆಉ => ԿճͲͷॱংͰདྷͯ΋ϝοηʔδ͕શͯॲཧ͞Ε͑͢͞Ε͹݁Ռ੔߹͕อͨΕΔ

Slide 8

Slide 8 text

2. ഑৴γεςϜͰͷDatastoreར༻࣌ͷ՝୊ 1. ΞϓϦέʔγϣϯͰͷෳࡶɾ৑௕ͳJOIN 2. ैྔ՝ۚͳͷͰɺΞϓϦέʔγϣϯͷεέʔϧʹ൐ͬͯྉۚ΋εέʔϧ͢Δ ճආํ๏΋͋Δ͕ɺͦͪΒ͸ख͕͔͔ؒΔ 1. 1ʹΑΔϨΠςϯγ্ঢɺ2ʹΑΔྉۚ૿ՃͷճආͷͨΊʹΩϟογϡґଘ => ߴϨΠςϯγɺߴྉۚɾߴ։ൃίετɺΩϟογϡґଘ(Redis) લఏ: εΩʔϚઃܭΛਖ਼نԽͯ͠͠·͍ͬͯͨ

Slide 9

Slide 9 text

શΞϯέʔτγεςϜͷ഑৴ / ճ౴ͷήʔτ΢ΣΠΛ୲͍ͬͯΔͨΊɺ ഑৴γεςϜ͕ࢭ·ΔͱΞϯέʔτશମ͕ࢭ·Δ => ग़དྷΕ͹഑৴γεςϜΛࢭΊͨ͘ͳ͍ 3. Ҡߦ࣌ͷ՝୊

Slide 10

Slide 10 text

- ϨΠςϯγͷ௿Լ - ։ൃίετͷ௿Լ - Ωϟογϡґଘ͔Βͷ୤٫ - + ഑৴γεςϜΛग़དྷΔ͚ͩࢭΊͳ͍ 3. ղܾ͍ͨ͠՝୊·ͱΊ

Slide 11

Slide 11 text

3. Ҡߦઌબఆ - Cloud Spanner or Cloud SQL(PostgreSQL) - Մ༻ੑ & εέʔϥϏϦςΟ & ٕज़త௅ઓ => Cloud Spanner

Slide 12

Slide 12 text

3. Cloud SpannerͷPoC - Datastore & ݁Ռ੔߹ੑ͔ΒͷҠߦͩͬͨͨΊɺ੍໿؇࿨ͷํ޲ - ओʹRDBMSͱͷࠩ෼(εΩʔϚઃܭɺΫϥΠΞϯτϥΠϒϥϦɺSQL)Λ֬ೝ - ΠϯλʔϦʔϒͷ֓೦ - mutation্ݶ - windowؔ਺͕࢖͑ͳ͍ - ຊ൪૬౰ͷσʔλΛ༻ҙ͠ෛՙςετ

Slide 13

Slide 13 text

4. Ҡߦઃܭ Datastore΁ͷಉظܦ࿏͸࢒ͨ͠··ɺ৽ͨʹSpanner༻ͷಉظܦ࿏Λ௥Ճ - ݁Ռ੔߹ੑʹΑΔθϩμ΢ϯλΠϜҠߦ͕Մೳ - Datastore΁ͷ੾Γ໭͕͠༰қ

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

“ϝοηʔδ͕શͯॲཧ͞Ε͑͢͞Ε͹࠷৽ͷঢ়ଶ͕อͨΕΔ” ͨΊɺ ↑ͷΑ͏ʹ͢ΔࣄͰɺաڈσʔλಉظதʹߋ৽͕͋ͬͨϨίʔυ͸Pub/Subϝο ηʔδ͔ΒͷಉظͰશͯ࠷৽ͷঢ়ଶʹߋ৽͞ΕΔ

Slide 17

Slide 17 text

1. Spanner༻ͷPub/Sub PushαϒεΫϦϓγϣϯΛ௥Ճ (͜ͷ࣌఺Ͱ͸PushઌͷΤϯυϙΠϯτ͕ͳ͍ͨΊɺϝοηʔδ଺ཹ) 2. Datastore͔Βͷաڈσʔλશಉظ 3. Spanner༻Pub/Sub PushઌΤϯυϙΠϯτ௥ՃΛϦϦʔε (଺ཹϝοηʔδ͕ॲཧ͞ΕΔ) 4. σʔλͷ੔߹ੑνΣοΫ 5. Spanner΁઀ଓ੾Γସ͑ϦϦʔε 4. Ҡߦઃܭ

Slide 18

Slide 18 text

DI͢ΔϦϙδτϦΛ
 DatastoreͱSpannerͰ੾Γସ͑ Δ ࣮૷

Slide 19

Slide 19 text

4. Ҡߦʹ౰ͨͬͯؾΛ͚ͭͨ఺ - ग़དྷΔ͚ͩϩʔϧόοΫՄೳͳঢ়ଶΛอͭ (ࠓճ͸ϦϦʔεޙ1ϲ݄ޙ΄ͲDatastore΁ͷಉظ΋ซ૸) - DBҠߦҎ֎ͷ͜ͱΛߦΘͳ͍(ϦϑΝΫλϦϯάͳͲ)

Slide 20

Slide 20 text

5. Ҡߦޙͷ݁Ռ - θϩμ΢ϯλΠϜͰͷҠߦ੒ޭ - 400msޙ൒Λ͏Ζ͍͍ͭͯͨϨΠςϯγ͕100ms୆ʹ - Ωϟογϡ΁ͷґଘ୤٫ - SQLʹΑͬͯΞϓϦέʔγϣϯͷίʔυ͕੔ཧ

Slide 21

Slide 21 text

6. ݱࡏͷӡ༻ - Spanner͸ຊ൪Πϯελϯε(1~3node)ͱqaɾϩʔΧϧ։ൃڞ༗ͷΠϯελϯε(1node) - xo/xoͷSpanner൛Ͱ͋Δcloudspannerecosystem/yoΛར༻ (εΩʔϚ͔ΒGoͷDTO΍ίʔυΛੜ੒͢ΔϥΠϒϥϦ) - QA؀ڥͷεΩʔϚ ϚΠάϨʔγϣϯ͸wrenchɺຊ൪͸ख࡞ۀ - CI͸SpannerͷΤϛϡʔϨʔλʔΛ࢖༻

Slide 22

Slide 22 text

6. ࠓޙͷ՝୊ ҆ఆతͳӡ༻ͷཱ֬ - εΩʔϚ ϚΠάϨʔγϣϯͷ੔උ - Φʔτεέʔϧ - CI΁ͷຊ෺SpannerʹΑΔςετ࣮ߦͷ௥Ճ (ݱࡏCIͰ͸ΤϛϡϨʔλͷΈ࢖༻)

Slide 23

Slide 23 text

·ͱΊ - Datastoreར༻࣌ͷ՝୊ɾ഑৴γεςϜͷ੹຿͔ΒSpanner΁ͷҠߦΛܾఆ - Cloud Pub/SubͱσʔλಉظͷઃܭΛ׆༻͠ɺ θϩμ΢ϯλΠϜͰͷDBҠߦΛ࣮ࢪ - ݱࡏ͸ΑΓ҆ఆతͳӡ༻Λ໨ࢦͯ͠վળத