SGEを活性化させる内製ツール達 / SGE

2016ba6b977a2e6691811fa66d5f4336?s=47 CyberAgent
February 22, 2019

SGEを活性化させる内製ツール達 / SGE

サイバーエージェントの技術者(エンジニア・クリエイター)向けカンファレンス『CA BASE CAMP 2019』

SGEを活性化させる内製ツール達
岩上 裕樹

2016ba6b977a2e6691811fa66d5f4336?s=128

CyberAgent

February 22, 2019
Tweet

Transcript

  1. SGEΛ׆ੑԽͤ͞Δ ಺੡πʔϧୡ גࣜձࣾάϦϑΥϯ ؠ্༟थ

  2. ؠ্ ༟थʢ͍Θ͔Έ Ώ͏͖ʣ • 2014೥4݄ αΠόʔΤʔδΣϯτ৽ଔೖࣾ όοΫΤϯυΤϯδχΞ • 2014೥7݄ Ξϝʔόࣄۀຊ෦ήʔϜࣄۀ෦ʹ഑ଐ

    • 2014೥8݄ʙݱࡏ גࣜձࣾάϦϑΥϯग़޲ 12ͷήʔϜͷ։ൃɾӡ༻ʹؔΘΓɺ4ͭͷήʔϜͷϦϦʔ εʹؔΘͬͨʢάϦϑΥϯ֎ͷSGE಺ଞࣾ΋ؚΉʣ
  3. SGEͱ͸ • αΠόʔΤʔδΣϯτͷࢠձࣾ܈ʹΑΔήʔϜ&ΤϯλʔςΠϝϯτࣄۀ෦ SGE = [Next] Smartphone Games & Entertainment

  4. SGEΛ׆ੑԽͤ͞Δ ಺੡πʔϧୡͷ঺հ

  5. 1. SGETube 2. SGooglE 3. εΰϦϥϯν 4. νϟοτ౤ߘπʔϧ 5. εΰϦϥϯσϒʔ

    6. ͋ͨ͠ձٞͷಘ఺γεςϜ
  6. SGETube

  7. SGEͷಛ௃ • SGE಺Ͱͷษڧձ͕ͱͯ΋ଟ͍ ྫ͑͹ΞήςΫͳͲͷߨٛܗࣜͷษڧձ͕͋ͬͨΓ͢Δ ࢀߟɿʮͨΊʹͳΓ·ͨ͠ʂʯͰ͸ऴΘΒͤͳ͍࣮຿ʹͭͳ͕ΔษڧձʮΞήςΫʯͱ͸ʁ https://creator.game.cyberagent.co.jp/?p=5216 • SGE಺ͷڞ༗ձ΋ଟ͍ ྫ͑͹ήʔϜ͕ϦϦʔεͨ͠Ұϲ݄ޙ͘Β͍ʹSGE಺Ͱڞ༗ձΛ࣮ࢪ͢Δ γεςϜͷߏ੒ͩͬͨΓɺۤ࿑ͨ͜͠ͱͩͬͨΓɺଞͷϓϩδΣΫτ։ൃͰ͸͠ͳͦ͏ͳ޻෉ͨ͜͠ͱͩͬͨΓɺاըʹ

    ͍ͭͯͩͬͨΓɺͳΜͰ΋ • Πϕϯτ΋ଟ͍ • ͨ͘͞Μ͋ΔͷͰ͢΂ͯͷษڧձɾڞ༗ձʹग़੮Ͱ͖ͳ͍ ͦͷษڧձɾڞ༗ձͷ಺༰͸஌Δ͜ͱ͕Ͱ͖ͳ͍
  8. ͦΜͳͱ͖ʹSGETubeʂʂ

  9. SGETubeͱ͸ • ࣾ಺ͷಈըڞ༗αΠτ ࣾ಺޲͚๭Tubeͱࢥͬͯ΋Β͑ΔͱΘ͔Γ΍͍͔͢΋ • ࣾ಺SSOͰϩάΠϯͰ͖ΔͨΊࣾһͳΒ୭Ͱ΋ݟΕΔ • Ͳ͔͜ΒͰ΋ݟΕΔ ͋͑ͯIP੍ݶͳͲ͸͍ͯ͠ͳ͍ ͦͷͨΊɺՈͰ΋Ͳ͜Ͱ΋ษڧͰ͖Δ

    • ϥΠϒ഑৴΋Ͱ͖Δ
  10. SGETubeγεςϜߏ੒ • AWS ΦϨΰϯ EC2ɺRDSɺS3ɺCloudFront εςʔδϯά؀ڥ΋༻ҙ • ݴޠ PHP •

    ಈը͸S3ʹอଘ • IP੍ݶ͸͔͚͍ͯͳ͍ͨΊɺॺ໊෇͖CookieΛ༻͍ͯɺηΩϡϦςΟΛ୲อ͍ͯ͠Δ https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/private-content- signed-cookies.html
  11. SGETubeͷྑ͔ͬͨ఺ͳͲ • ಈը͕ͲΜͲΜΞοϓϩʔυ͞Ε͍ͯ͘ ୭Ͱ΋ΞοϓϩʔυͰ͖ΔΑ͏ʹ͍ͯ͠ΔͷͰɺؾܰʹΞοϓͯ͘͠ΕΔ ษڧձҎ֎ʹ΋ήʔϜͷϞοΫͷಈըͱ͔΋Ξοϓͯ͘͠ΕΔ ϦϦʔεޙ໿7ϲ݄Ͱ136ݸͷಈը͕Ξοϓϩʔυ͞Ε͍ͯΔʢ2019೥2݄12೔ݱࡏʣ • SGETube͕ϦϦʔε͞Ε͔ͯΒ͸֤ษڧձɾڞ༗ձʹඞͣΧϝϥϚϯ͕ࢀՃ͢ΔΑ͏ʹͳͬͨ ͢΂ͯͷษڧձɾڞ༗ձͷಈը͕Ξοϓϩʔυ͞ΕΔΑ͏ʹͳͬͨ •

    SGEͷΠϕϯτͷϥΠϒ഑৴ͰΈΜͳͰ੝Γ্͕ΕΔ ձ৔ʹ͸ߦ͘͜ͱ͸Ͱ͖ͳ͍͚ͲɺϦΞϧλΠϜͰݟΔ͜ͱ͕Ͱ͖Δ ԰֎ͰߦΘΕͨΫϦΤΠλʔͷΠϕϯτ͸աڈ࠷ߴͷಉ࣌઀ଓ਺ • ཁ๬͕ͨ͘͞Μಧ͘ վળ߲໨͕೔ʑ૿͍͑ͯ͘ɻɻָ͘͠ӡ༻͕Ͱ͖Δʂ
  12. SGooglE

  13. SGEͷಛ௃ • SGE͸ͨ͘͞Μͷࢠձࣾͷू·Γ • ֤ࣾʹ͍ΖΜͳϊ΢ϋ΢͕ू·͍ͬͯΔ • ֤ࣾͦΕͧΕͰWikiͳͲ͍ΖΜͳܗͰϊ΢ϋ΢͕ཷ·͍ͬͯΔ ConfluenceͩͬͨΓɺRedmineͩͬͨΓɺ͍Ζ͍Ζ • ֤ࣾόϥόϥͳͷͰɺͳʹ͔ௐ΂͍ͨ΋ͷ͕͋Δͱ͖ʹ֤Wiki౳Ͱݕࡧ͢Δ

    ͷ͕ΊΜͲ͍͘͞ ྫ͑͹UnityͰݕࡧ͍ͨ͠ͱ͖΋ɺ֤WikiͰUnityݕࡧ͠ͳ͍ͱ͍͚ͳ͍
  14. ͦΜͳͱ͖ʹSGooglEʂʂ

  15. SGooglEͱ͸ • SGE಺ͷ֤WikiΛҰׅͰݕࡧͰ͖ΔγεςϜ • ఆظతʹ֤ࣾͷWikiΛΫϩʔϦϯά͓ͯ͘͠ͷͰৗʹ࠷৽ͷ৘ใ • ࣾ಺SSOͰϩάΠϯͰ͖ΔͨΊࣾһͳΒ୭Ͱ΋࢖͑Δ • ࣾ಺IPʹ੍ݶ •

    Googleݕࡧͷݕࡧ݁Ռը໘ͷྡʹಉ࣌ʹSGooglEͷݕࡧ݁Ռ΋දࣔͤ͞Δ ֦ுػೳΛ༻ҙʢ͢Δ༧ఆʣ
  16. SGooglEγεςϜߏ੒ • AWS EC2ɺElasticSearchʢ༁͋ͬͯEC2্Ͱಈ͔͍ͯ͠Δʣ • ݴޠ Java • ݕࡧΤϯδϯʹ͸ElasticSearchΛ࢖༻ •

    ΫϩʔϦϯάλΠϛϯά͸ຖ೔ਂ໷ʹઃఆͯ͠ΈͯΔ • ݱࡏɺβ൛ެ։தͰɺSGE಺ͷҰ෦ͷਓʹ৮ͬͯ΋Β͍ͬͯΔஈ֊
  17. εΰϦϥϯν

  18. ࣾ಺ͷ͓ห౰ͷಛ௃ • CA಺Ͱ͸͓ห౰Λ֨҆Ͱൢച͍ͯ͠ΔͷͰ֨҆ͰߪೖͰ͖Δ • ΈΜͳ͕ߪೖ͢ΔͷͰߦྻ͕Ͱ͖Δ • ΑΓྑ͍͓ห౰ΛखʹೖΕΔͨΊʹૣ͘ฒͿ • ൢചλΠϛϯάͰMTG͕ೖ͍ͬͯΔͱྑ͍͓ห౰͕खʹೖΒͳ͍

  19. ͦΜͳͱ͖ʹεΰϦϥϯνʂʂ

  20. εΰϦϥϯνͱ͸ • ͓ห౰Λ༧໿Ͱ͖ΔΞϓϦ • ͦͷ೔ʹങ͑Δ͓ห౰Λޕલதʹ༧໿ • ͓னͷൢച࣌ؒଳʹΞϓϦͷ༧໿ը໘ΛݟͤͯߪೖͰ͖Δ ※ϦϦʔε࣌ͷϝʔϧͷεΫγϣΛ࢖Θ͍͍͓ͤͯͨͩͯΓ·͢ εΰϦϥ͘Μ

  21. εΰϦϥϯνͷγεςϜߏ੒ • GCP LBɺGCEʢNode.js + MariaDB + MongoDBʣ • AndroidͱiOS޲͚ΞϓϦ

  22. εΰϦϥϯνͷྑ͔ͬͨ఺ͳͲ • ฒ͹ͳͯ͘΋͓ห౰͕ങ͑Δ Ϗϧͷ֊਺ʹ༗རෆར͕ͳ͘ͳͬͨ Ҏલ͸12࣌લμογϡͳͲ͕ଘࡏ͍ͯͯ͠ɺͦͷ௚લ͸ͦΘͦΘ͍ͯͨ͠ • ଴ͪߦྻ͕ͳ͘ͳΓɺདྷ٬ͷݟӫ͕͑Α͘ͳͬͨ • 2016೥5݄ʹϦϦʔε͔ͯ͠Βͣͬͱ࢖ΘΕ͍ͯΔ SGEͷ௕ظӡ༻αʔϏεͷҰͭʹͳͬͨ

  23. νϟοτ౤ߘπʔϧ

  24. SGEͷಛ௃ • SGE͸ͨ͘͞Μͷࢠձࣾͷू·Γ • ֤ࣾͰslackΛ࢖ͬͨΓchatworkΛ࢖ͬͨΓ͍ͯ͠Δ • ֤ࣾʹ࿈བྷ͢Δͱ͖͸͍ͭ΋֤ࣾͷ୅දʹ࿈བྷ͔ͯͦ͜͠ΒखಈͰ౤ߘͯ͠ ΋Β͍ͬͯͨ

  25. ͦΜͳͱ͖ʹνϟοτ౤ߘπʔϧʂʂ

  26. νϟοτ౤ߘπʔϧͱ͸ • ΢Σϒϒϥ΢β͔Β౤ߘ಺༰ΛϑΥʔϜૹ৴͢Δ͚ͩͰ֤ࣾͷνϟοτʹ౤ ߘ͞ΕΔ Slack Chatwork

  27. νϟοτ౤ߘπʔϧͷγεςϜߏ੒ • AWS S3ʹΑΔHTML഑৴ɺAPI GatewayɺLambdaʢNode.jsʣ • αʔόϨεʂʂ ݸਓతʹ͜ͷߏ੒Ͱ࡞ͬͯΈ͔ͨͬͨ

  28. νϟοτ౤ߘπʔϧͷγεςϜߏ੒ • ࣾ಺SSOΛ࢖༻͢ΔͨΊʹELB,EC2ΛڬΉ͜ͱʹͳͬͯ͠·ͬͨ αʔόϨε͡Όͳ͘ͳͬͯ͠·ͬͨ

  29. νϟοτ౤ߘπʔϧͷγεςϜߏ੒ • CloudFrontͰLambda@EdgeΛ࢖༻͢Δ͜ͱͰղܾʂʢ4೔લʹ΍ͬͨʣ • Lambda@EdgeͰࣾ಺SSOೝূͷॲཧΛߦ͏

  30. νϟοτ౤ߘπʔϧͷྑ͔ͬͨ఺ͳͲ • ΢Σϒ͔ΒαΫοͱ౤ߘͰ͖Δ • ؒʹਓΛڬ·ͳ͘ͳΔͷͰɺ͙͢ʹ౤ߘͰ͖Δ • ୭Ͱ΋ؾܰʹ౤ߘͰ͖Δ ΍Γ͗͢ʹ͸஫ҙ • ௨শʮؠ্๒ʯͱݺ͹ΕΔΑ͏ʹͳͬͯ͠·ͬͨ

    ʮνϟοτ౤ߘπʔϧʯͬͯॻ͍͍ͯΔ͚Ͳɺਖ਼໊ࣜশ͕ͳ͍ ࣗ෼ͷ໊લ͕ͭ͘ͷ͸ݏͰ͢Ͷ
  31. εΰϦϥϯσϒʔ

  32. SGEͷಛ௃ • SGE಺ͷษڧձɾڞ༗ձ͕ଟ͍ • SGEͷ֤ࣾͰ΋ษڧձ͕ଟ͍ • ษڧձ͕ͨ͘͞Μ࣮͋ͬͯ࣍ࢪ͞ΕΔΠϕϯτ͕Կ͔͕೺ѲͰ͖ͳ͍ • ͍ͭ΋ͨ͘͞Μͷਓ͕ࢀՃͯ͘͠ΕΔ •

    ࢀՃऀͷ༧ఆͷ௥Ճ͕ΊΜͲ͍͕͔͔࣌ؒ͘͞͠Δ
  33. ͦΜͳͱ͖ʹεΰϦϥϯσϒʔʂʂ

  34. εΰϦϥϯσϒʔͱ͸ • ࣾ಺ͷΠϕϯτͷҰཡ͕֬ೝͰ͖ɺ؆୯ʹࢀՃͰ͖ΔγεςϜ • ࣾ಺ͷ༧ఆπʔϧʹ΋࿈ܞͯ͠؆୯ʹ༧ఆʹࢀՃͰ͖Δ • connpass΍ATNDͷΑ͏ͳ΋ͷ • ݴޠ golang

    • ։ൃதʂʂ
  35. ͋ͨ͠ձٞͷಘ఺γεςϜ

  36. SGEͰͷ͋ͨ͠ձٞ • ͋ͨ͠ձٞͱ͸ɺ໾һͱࣾһ͕νʔϜΛ૊ΜͰɺαΠόʔΤʔδΣϯτͷ͋͠ ͨΛͭ͘Δ৽نࣄۀҊ΍՝୊ղܾҊͳͲΛఏҊ͢Δ߹॓ • αΠόʔΤʔδΣϯτશࣾͱͯ͠΋΍͍ͬͯΔ͕ɺSGE಺Ͱ΋΍͍ͬͯΔ • ΫϦΤΠλʔ಺ɺΤϯδχΞ಺͚ͩͰ΋͋ͨ͠ձٞΛ࣮ࢪ͍ͯ͠Δ ΠϊςοΫΩϟϯϓɺΫϦΤΠλʔ͋ͨ͠ձٞɺٕज़ֵ৽ձٞͳͲ

  37. SGEͰͷ͋ͨ͠ձٞ • ͋ͨ͠ձٞͱ͸ɺ໾һͱࣾһ͕νʔϜΛ૊ΜͰɺαΠόʔΤʔδΣϯτͷ͋͠ ͨΛͭ͘Δ৽نࣄۀҊ΍՝୊ղܾҊͳͲΛఏҊ͢Δ߹॓ • αΠόʔΤʔδΣϯτશࣾͱͯ͠΋΍͍ͬͯΔ͕ɺSGE಺Ͱ΋΍͍ͬͯΔ • ΫϦΤΠλʔ಺ɺΤϯδχΞ಺͚ͩͰ΋͋ͨ͠ձٞΛ࣮ࢪ͍ͯ͠Δ ΠϊςοΫΩϟϯϓɺΫϦΤΠλʔ͋ͨ͠ձٞɺٕज़ֵ৽ձٞͳͲ ಘ఺ൃදΛ΋ͬͱ੝Γ্͍͛ͨ

  38. ͦΜͳͱ͖ʹಘ఺γεςϜʂʂ

  39. ͋ͨ͠ձٞͷಘ఺γεςϜͱ͸ • SGE͋ͨ͠ձٞͰ͸೔ߴ͞Μ͕ಘ఺Λൃද͢Δ ผͷܗࣜͷ͋ͨ͠ձٞͰ΋ಘ఺Λൃද͢Δਓ͕͍Δ • ԋग़Λ͚ͭͯಘ఺Λൃද͢Δ͜ͱͰ੝Γ্͛΍υΩυΩײΛग़͢ ێͪΌΜͷԾ૷େ৆తͳ

  40. ͋ͨ͠ձٞͷಘ఺γεςϜͱ͸

  41. ͋ͨ͠ձٞͷಘ఺γεςϜͱ͸

  42. ͋ͨ͠ձٞͷಘ఺γεςϜͱ͸

  43. ͋ͨ͠ձٞͷಘ఺γεςϜͱ͸

  44. ͋ͨ͠ձٞͷಘ఺γεςϜͷγεςϜߏ੒ • AWS EC2ʢNode.jsʣ • ઀ଓʹ͍ͭͯ εϚϗˠEC2ɿAPIΛୟ͘ εΫϦʔϯˠEC2ɿWeb Socket εϚϗͷૢ࡞ΛͳΔ΂͘ૣ͘εΫϦʔϯʹ൓өͤ͞Δ

  45. ͋ͨ͠ձٞͷಘ఺γεςϜͷྑ͔ͬͨ఺ͳͲ • ಘ఺ൃද࣌ʹ੝Γ্͕Δ • ࣗ෼Ͱ࡞੒ͨ͠πʔϧͳͷʹ͍͢͝υΩυΩ͠ͳ͕Βಘ఺ൃදΛݟकΔ • ͋ͨ͠ձٞ͝ͱʹ৽͍͠σβΠϯͷγεςϜΛ࡞ΔΑ͏ʹͳͬͯ͠·ͬͨ σβΠϯͷࠩ͠ସ͚͑ͩʂͷ͸͕ͣɺඍௐ੔͕ೖΔ

  46. ͓·͚ ಺੡πʔϧͰ͸ͳ͍͕ ڞ௨Ͱ࢖͍ͬͯΔπʔϧͷ঺հ

  47. SGE Gitlab

  48. SGE Gitlab • ֤ࣾͰ࡞ͬͨήʔϜͳͲͷιʔείʔυ্͕͕͍ͬͯΔ • ֤ࣾͰ͸Github΍Gitlab͕͋Δ͕ɺͦΕΛఆظతʹSGEͷGitlabʹ΋Ξοϓ ͯ͠΋Β͍ͬͯΔ • SGEͷGitlabΛ೷͚͹֤ࣾͷιʔείʔυΛݟΔ͜ͱ͕Ͱ͖Δ

  49. SGE Slideshare

  50. SGE Slideshare • ษڧձ΍ڞ༗ձ౳ɺ͋ΒΏΔͱ͜ΖͰ࢖༻ͨ͠εϥΠυ͕Ξοϓ͞Ε͍ͯΔ • ͜͜Λ೷͘ͱաڈͷൃදࢿྉΛݟΔ͜ͱ͕Ͱ͖Δ • SGETubeΛݟͳ͕ΒSlideshareΛࢀߟʹ͢Δ͜ͱͰɺΑΓਂֶ͘΂Δ͸ͣ

  51. SGE QiitaνʔϜ

  52. SGE QiitaνʔϜ • SGE಺ͰͷQiitaνʔϜ • ֤ࣾͷϊ΢ϋ΢΍ϝϞॻ͖ͳͲΛؾܰʹॻ͚Δ৔ • ࠓͰ͸1175݅ͷهࣄ͕౤ߘ͞Ε͍ͯΔ • Qiita:Teamͷهࣄ

    ʮ300ਓͷΤϯδχΞ૊৫Λԣஅͨ͠Qiita:Teamͷ׆༻ज़ͱ͸ʂʁʯ https://teams.qiita.com/customers/sge/
  53. None
  54. ·ͱΊ • ٕज़Ͱ૊৫͕੝Γ্͕ΓɺSGE͕׆ੑԽ͞ΕΔ • ࣾ಺πʔϧΛ༻͍ͯɺΑΓศརɺޮ཰ΞοϓɺεΩϧΞοϓʹߩݙ • ࢠձࣾΛӽ͑ͯ૊৫ͷ͍ΖΜͳਓͱؔΘΔ͜ͱ͕Ͱ͖ɺSGE͕׆ੑԽ͞ΕΔ • ৽͍ٕ͠ज़ͷ௅ઓΛೖΕΔ͜ͱ͕Ͱ͖Δ ࣗ෼ͷ৔߹͸ۀ຿ͰPHPΛ࢖͏͜ͱ͕ଟ͍͕ɺ͍ΖΜͳݴޠΛ৮Δ͜ͱ͕Ͱ͖Δ

    όοΫΤϯυະܦݧͰೖࣾͨࣗ͠෼ʹͱͬͯ͸خ͍͠ • ϛεͬͯ΋ҰൠϢʔβʔʹӨڹ͕ग़ΔΘ͚Ͱ͸ͳ͘ɺSGE಺ʹ͔͠Өڹ͕Ͱ ͳ͍ͷͰԕྀͳ͘௅ઓͰ͖Δ
  55. ٕज़͕૊৫Λ׆ੑԽͤ͞Δʂ

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