$30 off During Our Annual Pro Sale. View Details »

Parse.comからGCPへ移行した話 ~1年間にわたる脱出プロジェクト~

tacke
April 16, 2017

Parse.comからGCPへ移行した話 ~1年間にわたる脱出プロジェクト~

https://gcpug-shonan.connpass.com/event/53854/
で発表した際のスライドです。

概要: Parse.comが1年後に終了するというアナウンスを受けてノハナではGCPへのインフラ移行を行いました。 Parse.comのロックインからどう脱出したのかや、移行時に実感したGCPの利点などをお話します。

tacke

April 16, 2017
Tweet

More Decks by tacke

Other Decks in Technology

Transcript

  1. 1BSTFDPN͔Β ($1΁Ҡߦͨ͠࿩ ($16(4IPOBOWPM

  2. ෢ࢢ༥ل !UBDLF@KQ  גࣜձࣾϊϋφ ΤϯδχΞ $50

  3. ೥ؒʹΘͨΔ 1BSTFDPN ୤ग़ϓϩδΣΫτ

  4. ϊϋφʹ͍ͭͯ

  5. ຖ݄࡭ ແྉϑΥτϒοΫ OPIBOB

  6. ೥݄ϩʔϯν ϛΫγΟࣾ಺ެื੍౓ ։ൃظؒϲ݄

  7. w J04ΞϓϦ w ܾࡁγεςϜ w ը૾߹੒αʔόʔ

  8. 1BSTFDPNʹ͍ͭͯ

  9. .PCJMF#BDLFOEBT B4FSWJDF .#BB4

  10. w σʔλϕʔε w Ϣʔβʔೝূ w ϓογϡ௨஌ w ϑΝΠϧετϨʔδ

  11. ೥αʔϏεΠϯ .#BB4ͷ͖͕͚͞

  12. ϲ݄ͰαʔϏεΠϯ Ͱ͖ͨͷ͸1BSTFDPN ͷ͓͔͛

  13. ͔͠͠

  14. 57ͷෛՙʹ଱͑ΒΕ ͣམͪͨ

  15. େྔͷෆ੔߹ σʔλ࣌ؒ෼ͷ ϩʔϧόοΫ

  16. ϊϋφͷ݄຤ෛՙʹ ଱͑ΒΕͳ͍

  17. ݄຤͕஫จͷϐʔΫ ຖ݄຤೔͸ώϠώϠ

  18. 1BSTF͔Βͷ୤ग़Λ્Ή ͭͷϩοΫΦϯ

  19. ᶃػೳͷϩοΫΦϯ

  20. 3&45"1*Ͱ%#΁ $36%

  21. %#΁ͷ$36%ϩδο Ϋ͕ΫϥΠΞϯτʹ ࿙Εग़͍ͯ͠Δ

  22. // REST APIܦ༝ͰDBʹϨίʔυΛ௥Ճ var order = new Parse.Object('Order'); order.set('type', 'photobook');

    order.set('owner', Parse.User.current()); order.set('price', 216); order.save().then(function() { // ... }); // REST APIܦ༝ͰDB΁ͷΫΤϦΛ࣮ߦ var query = new Parse.Query('Order'); query.equal('price', 216); query.find().then(function(orders) { // ... });
  23. 3&45"1*ʹґଘͨ͠ ίʔυϕʔε͕ڊେԽ

  24. ʮطʹॻ͍ͨιϑτ΢ΤΞʯ ˞ ͱ͍͏େ͖ͳ৅ ˞ l4JNQMJDJUZNBUUFSTz3JDI)JDLFZ

  25. 1BSTFDPNͷ"1*Λ ͍͔ͪΒ࣮૷

  26. ᶄσʔλͷϩοΫΦϯ

  27. %#ͷσʔλΛFYQPSU ͢Δػೳ͸͋ͬͨ

  28. ҰఆҎ্ͷϨίʔυ ਺ʹͳΔͱ΄ͱΜͲ ੒ޭ͠ͳ͍

  29. ࣸਅϑΝΠϧԯຕΛ 1BSTFͷετϨʔδʹ อଘ

  30. ὃ͠ὃ͠࢖͍ଓ͚Δ ೔ʑ

  31. 'BDFCPPLʹങऩ͞Ε ͨ͠େৎ෉ͬ͠ΐ☺

  32. ೥͙Β͍ܦ͍ͬͯͩ Ϳ҆ఆ͖ͯͨ͠

  33. ऴΘΓ͸ ಥવʹ΍ͬͯ͘Δ

  34. 

  35. None
  36. l1BSTFXJMMCFGVMMZ SFUJSFEPO+BOVBSZ  z

  37. Ұ೥ޙʹ1BSTFऴྃͷ એࠂ

  38. Ҡߦ͠ͳ͍ͱձ͕ࣾ ௵ΕΔ

  39. ఏڙ͞Εͨखஈ

  40. l1BSTF4FSWFSz Φʔϓϯιʔεͷ1BSTFDPN "1*ޓ׵αʔόʔ

  41. σʔλҠߦπʔϧ ͪ͜Βଆͷ.POHP%#ʹ௚ʹ઀ ଓͯ͠σʔλΛJOTFSU͠ʹདྷΔ

  42. ͪͳΈʹதͷਓ΋౰ ೔·ͰऴྃΛ஌Βͳ ͔ͬͨ

  43. 1BSTFDPNऴྃͱ͸ ΂ͭʹΦʔϓϯιʔε ʹ͢Δܭը͕͋ͬͨ

  44. https://medium.com/@newfosco/parse-2-0-600839abebdf

  45. 1݄28೔͸Parse ServerͷϦϦʔε೔ͷ͸ͣͰͨ͠ɻϒϩάهࣄ͸طʹॻ͔ ΕϨϏϡʔΛड͚͓ͯΓɺͦͷ೔ͷχϡʔεͷϔουϥΠϯʹ”Facebook ͸ParseΛΦʔϓϯιʔεʹ”ͱ͍͏ݟग़͕͠ग़ΔͷΛظ଴͍ͯ͠·ͨ͠ɻ ౰೔ɺࢲ͸ڵฃ͠ͳ͕Βग़ࣾ͠·ͨ͠ɻͦͷ೔ͷϔουϥΠϯ͕શ͘ҟͳ Δ΋ͷͰ͋ΔͷΛ஌Δ·Ͱ͸ɻߏΘͣࢲ͸ίʔυΛΦʔϓϯʹ͢Δखॱͱ ϞδϡʔϧΛެ։͢ΔखॱΛऴ͑·ͨ͠ɻͦͯ͠ιʔγϟϧϝσΟΞΛோ Ίɺ։ൃऀ͕Φʔϓϯιʔεͷαʔόʔʹ͍ͭͯ஌ΓɺͦΕ͕Parse.comऴ ྃͷͨΊͷҠߦπʔϧͰ͸ͳ͍͜ͱΛͪΌΜͱཧղ͍ͯ͠Δ͔Λ͔֬ΊΑ ͏ͱ͠·ͨ͠ɻ(ҙ༁)

  46. None
  47. ҠߦϓϩδΣΫτ ։࢝

  48. ౙ⛄

  49. શମͷܭը Ҡߦઌͷબఆ

  50. ܾࡁαʔόʔ΍ ը૾߹੒αʔόʔͰ طʹ"84Λ࢖͍ͬͯͨ

  51. Ҡߦઌͱͯ͠($1Λ બ୒ͨ͠ཧ༝

  52. ίετ͍҆

  53. ޙൃͳͷͰ"84ΑΓ ચ࿅͞Εͯͦ͏

  54. ৽ͨͳ௅ઓ

  55. 1BSTF4FSWFSΛͱΓ ͋͑ͣಈ͔ͯ͠ΈΔ

  56. όάͩΒ͚ ඞཁͳػೳ͕࣮૷͞ Ε͍ͯͳ͍

  57. https://twitter.com/dchest/status/692868527242366983

  58. .POHP%#ͷߏங ύϑΥʔϚϯεݕূ

  59. .POHP%#ͷߏ੒

  60. us-east1-b us-east1-c us-east1-d us-east1 public private

  61. Ն⛱

  62. %#σʔλͷҠߦ

  63. 4UFQࠓͷঢ়ଶ API Server Client Parse.com Snapshot DB parse-server DB Ҡߦઌ

  64. 4UFQ4OBQTIPUͷ࡞੒ API Server Client Parse.com parse-server DB Ҡߦઌ Snapshot DB

  65. 4UFQ4OBQTIPU͔Βͷί ϐʔ API Server Client Parse.com parse-server DB Ҡߦઌ Snapshot

    DB
  66. 4UFQ4OBQTIPUΑΓޙͷ σʔλΛಉظ API Server Client Parse.com parse-server DB Ҡߦઌ Snapshot

    DB
  67. 4UFQ%#੾ସ API Server Client parse-server DB Ҡߦઌ Snapshot DB Parse.com

  68. ΍ͬͯΈΑ͏

  69. None
  70. None
  71. ճ͙Β͍ࢼͯ͠ ΍ͬͱ੒ޭͨ͠ 'JOBMJ[FͰ͖ΔΑ͏ʹͳΔ·Ͱ͙࣌ؒΒ͍͔͔ͬͨʜ

  72. ػೳͷҠߦ

  73. 1BSTFʹ΋"84-BNCEB ͱ͔$MPVE'VODUJPOT Έ͍ͨͳαʔόʔϨεͬ Ά͍ػೳ͕͋ͬͨ

  74. ͦͷ໊΋$MPVE$PEF

  75. σʔλͷߋ৽ΛϑοΫ ͯ͠$MPVE$PEFΛݺͼ ग़ͤΔͷͰόϦσʔγϣ ϯͳͲ͍ͤͯͨ͞

  76. 1BSTF4FSWFSͰ͸ ·ͱ΋ʹ࣮૷͞Εͳ ͔ͬͨ☺☺☺

  77. $MPVE$PEF্Ͱಈ͘ ߦͷίʔυ

  78. ࢓ํͳ͍ͷͰ $MPVE$PEFޓ׵ͷ ࣮ߦ؀ڥΛॻ͍ͨ

  79. 8FCTFSWFSͷߏ੒

  80. ※౰࣌internal LB͸·ͩalphaͩͬͨ instance group (CloudCode) instance group (Parse Server) Webhookݺͼग़͠

    REST APIͷ࣮ߦ Public LB Public LB
  81. ஗͍

  82. $MPVE$PEF಺Ͱଟ͍ ͱ͖ʹ͸ճఔ౓Ϧ ΫΤετΛ౤͍͛ͯͨ

  83. LB instance group Parse Server CloudCode REST APIͷ࣮ߦ Webhookݺͼग़͠

  84. None
  85. ࣸਅϑΝΠϧͷҠߦ

  86. $MPVE1VC4VCʹϑΝΠϧ໊ ΛQVCMJTI 4VCTDSJCFS͕1BSTF͔ΒϑΝ ΠϧΛ%-ͯ͠($4ʹ6-͠௚͢

  87. ि͙ؒΒ͍ ֻ͔ͬͨʜ

  88. ΤϯυϙΠϯτͷ ੾Γସ͑࡞ۀ

  89. ωΠςΟϒΞϓϦ

  90. ϦϞʔτίϯϑΟά ࡞ઓ

  91. App Parse.com nohana ઃఆ

  92. App Parse.com nohana ઃఆ զʑ

  93. App Parse.com nohana ઃఆ զʑ

  94. ੾Γସ͑ͷॠؒ ώϠώϠ ෛՙςετ΍2"͸΍͚ͬͨͲͦΕͰ΋ʜ

  95. αʔόʔ

  96. lBQJQBSTFDPNΛ ࣗࣾͷ63-ʹͻͨ͢ Βॻ͖׵͍͑ͯ͘

  97. Օॴ͙Β͍͋ͬͨ

  98. ౓໨ͷౙ☃

  99. 1BSTFDPNΛ؃औΔ

  100. 

  101. None
  102. ௥ౣهࣄΛॻ͍ͨ http://blog.nohana.co.jp/article/thank-you-and-byebye-parse-com

  103. 1BSTFͱڞʹาΜͩ ̐೥ؒΛৼΓฦΔ

  104. ॳظ։ൃʹ1BSTFΛ࢖ͬ ͨͷ͸Α͔ͬͨ

  105. ແ͔ͬͨΒϲ݄Ͱͷ ϩʔϯν͸ෆՄೳ

  106. ϩʔϯνޙʹґଘ͸ ૿͑ΔҰํ

  107. αʔϏε͕౰ͨͬͨ ࣌఺Ͱ୤٫Λݕ౼͢ ΂͖ͩͬͨ

  108. ΤϯυϙΠϯτ͸ ࣗࣾͷ؅ཧԼʹ ஔ͖͍ͨ ͔͠͠8FC4PDLFUͱ͔େมͦ͏ʜ

  109. 1BSTFDPN͔Β ಠΓཱͪͨ͠ޙͷ࿩

  110. 8FCαʔόʔͱ%#͕ ࣗࣾͷ؅ཧԼʹ

  111. 3FHJPOҠߦ 64ˠ+1

  112. ը૾ϑΝΠϧͷ DPMEMJOFҠߦ

  113. 57঺հ

  114. ࣮ࡍʹདྷͨτϥϑΟοΫ

  115. ࣄલʹXFCTFSWFSͷ ୆਺૿΍͓͍ͯͨ͠

  116. ▪ Πϯελϯε਺ ▪ CPU࢖༻཰ ୆਺Λݻఆ auto scalerʹ͓·͔ͤ ςϨϏ঺հ

  117. ॳΊͯ57Λແ೉ʹ৐ Γ੾ͬͨ

  118. "VUPTDBMFS༏ल

  119. ։ൃεϐʔυ͸མͪͨ

  120. $MPVE$PEFσϓϩΠ ඵˠ෼

  121. ؀ڥߏங ෼ˠ෼

  122. .#BB4࠾༻ͷੋඇ

  123. .#BB4͸ϞόΠϧ։ ൃͷΦʔϧΠϯϫϯ ύοέʔδ

  124. ϩοΫΠϯ্౳ ͱ͍͏ؾ࣋ͪͰ͔ͭ͏΂͖

  125. αʔϏε౰ͨͬͨΒ ͦͷࢿۚͰٕज़ෛ࠴ Λฦ͢

  126. .#BB4ΑΓઌʹαʔ Ϗε͕ऴྃͨ͠Βٕ ज़ෛ࠴Λ౿Έ౗ͤΔ

  127. ·ͱΊ

  128. αʔϏεଆͷॿ͚ͳ͠ Ͱॏ౓ґଘͷ.#BB4͔ Β୤ग़͢Δͷ͸ෆՄೳ ͩͬͨ ͪͳΈʹ1BSTFDPNͷΠϯϑϥ͔Β͸୤ग़͕ͨ͠ "1*ґଘ͔Β͸·ͩ୤ग़͍ͯ͠ͳ͍

  129. .#BB4Λ࢖͏ ͦΕͱӡ໋Λڞʹ͢Δ =

  130. ࠷ྑͷύʔτφʔΛ બ΅͏

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