#tdtech https://techplay.jp/event/669345
© DeNA Co., Ltd.May 22, 2018TD Tech Talk 2018Hidenori MATSUKIAI System Division DeNA Co., Ltd.ʹ͚ͨ%F/"ͷੳج൫© DeNA Co., Ltd.
View Slide
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ࣗݾհদ लݑDeNA γεςϜຊ෦ AIγεςϜ෦AI&ੳج൫Λ୲[ུྺ]ΤϯλʔϓϥΠζ։ൃΛܦݧޙɺΑΓར༻ऀʹ͍ۙαʔϏεʹܞΘΔͨΊɺεϚʔτϑΥϯήʔϜͷόοΫΤϯυ։ൃʹैࣄɻͦͷޙେنࢄج൫ͷߏஙӡ༻ܦݧͱελʔτΞοϓͰͷ։ൃϚωδϝϯτܦݧΛܦͯDeNAʹೖࣾɻAI&ੳج൫ͷߏஙͱϚωδϝϯτΛߦ͏ɻ2
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.AgendaࣗݾհDeNAͱAIγεςϜ෦ͷ͝հDeNAੳج൫ͷ"ࠓ"⁃ DeNAੳج൫ͷಛ⁃ ੳج൫ͷγεςϜߏ⁃ ੳج൫ͷӡ༻⁃ AIج൫ͷ"ࠓ"2020ʹ͚ͯ ~ AI&ੳج൫ͱͯ͠ ~3( 1 min. )( 4 min. )( 25 min. )( 10 min. )( 5 min. )( 5 min. )( 5 min. )( 10 min. )
© DeNA Co., Ltd.DeNAͱAIγεςϜ෦ͷ͝հ4
GameAutomotiveECSportsNew! EntertainmentOtherHealth care© DeNA Co., Ltd.ࣄۀϙʔτϑΥϦΦ5• ଟछଟ༷ͳࣄۀྖҬͰϏδωεɾαʔϏεల։• ύʔτφʔاۀͱڞʹࣾձӨڹͷେ͖ͳαʔϏεΛग़• େنΠϯλʔωοταʔϏεϓϥοτϑΥʔϜͷߏஙɾӡ༻ྗ
© DeNA Co., Ltd.DeNAͰͷσʔλ׆༻6AIServiceData࠷৽ݚڀΛϕʔεʹݚڀ։ൃAIΛ׆༻ͨ͠৽ͨͳՁ͋ΔαʔϏεઃܭɾ࣮αʔϏεɾσʔλͷαΠΫϧ͔Βੜ·ΕΔڧݻͳϏδωεߏ
© DeNA Co., Ltd.AIγεςϜ෦ͷׂʢੳฤʣ7DeNA CustomersGameAnalystAIγεςϜ෦AI&ੳج൫ITPF CERTΞφϦετ͕༰қʹࣗ༝ʹੳͰ͖ΔΠϯϑϥΛߏஙӡ༻͢ΔSportsAnalyst(other)AnalystAIݚڀ։ൃ (other)
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.AgendaࣗݾհDeNAͱAIγεςϜ෦ͷ͝հDeNAੳج൫ͷ"ࠓ"⁃ DeNAੳج൫ͷಛ⁃ ੳج൫ͷγεςϜߏ⁃ ੳج൫ͷӡ༻⁃ AIج൫ͷ"ࠓ"2020ʹ͚ͯ ~ AI&ੳج൫ͱͯ͠ ~8( 1 min. )( 4 min. )( 25 min. )( 10 min. )( 5 min. )( 5 min. )( 5 min. )( 10 min. )
© DeNA Co., Ltd.DeNAੳج൫ͷ"ࠓ"9
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.DeNAੳج൫ͷಛ• 2010ʹHadoopʹΑΔେنσʔλੳج൫Λߏஙɺӡ༻։࢝• ͋ΒΏΔαʔϏεͰϩάΛੵ͠ੳ͢Δ͜ͱ͕ͨΓલ• αʔϏε։ൃͱฒߦͯ͠ϩάઃܭΛߦ͏• ͍ΘΏΔETL෦͕ఆܕԽ͞Ε͓ͯΓҰఆͷ࣭Ͱੳ͕ߦ͑Δ• ͚ࣾϩάϑΥʔϚοτ͕ఆٛ͞Ε͍ͯΔ• PBΫϥεͷσʔλྔͱ60Ҏ্ͷར༻෦/αʔϏε• ήʔϜʹݶΒͣBtoC/BtoBଟ࠼ͳࣄۀͷੳσʔλΛѻ͏• σʔλΞφϦετΛத৺ʹར༻ऀ͕ࣾʹวࡏ• Ϗδωε৬͍ΘΏΔόοΫΦϑΟεͷํΫΤϦΛ͛Δ10
© DeNA Co., Ltd.ੳج൫ͷγεςϜߏ11
ੳج൫ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.DeNAੳج൫ͷશମ૾12LogGatewayHadoopArgusDashboardMedjed+EmbulkHP VerIcaHueJenkins &WorkstaIonServicesAnalystLogDB SnapshotWeb UIWeb UI& SSHQueryQueryGoogleBigQuery
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ੳج൫DeNAੳج൫ͷશମ૾13LogGatewayHadoopArgusDashboardMedjed+EmbulkHP VerIcaHueJenkins &WorkstaIonServicesAnalystLogDB SnapshotWeb UIWeb UI& SSHQueryQueryGoogleBigQuery
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ੳج൫: App -> LogGateway• ΞϓϦέʔγϣϯϩά• ΞϓϦέʔγϣϯαʔόʔͰൃੜͨ͠ϩάΛFluentdͰऩू• https://github.com/civitaspo/fluent-plugin-cat-sweep• ϩάதܧαʔόʔΛհͯ͠શࣾڞ௨ͷLogGatewayʹHTTPS POST• ೝূͨ͠αʔϏε͔ΒͷΈϩάΛड͚औΔ• DBεφοϓγϣοτ• εφοϓγϣοτऩूαʔόʔ͔ΒLogGatewayʹHTTPS POST• DB͕ΦϯϓϨϛεͷ߹SqoopʹΑΔεφοϓγϣοτऩू14
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.Fluentdͷ͕͜͜ੌ͍• མͪͳ͍• མͪͯ࠶ىಈ͢ΕϩάΛ࠶ૹͯ͘͠ΕΔ• ಋೖ࣌Ҏ֎ͷ͖᪴΄΅ͳ͠• PluginʹΑΓॊೈʹΧελϚΠζͰ͖Δ• HTTP POST͢Δ߹ͳͲ• ετϦʔϜσʔλͷHubͱͯ͠ػೳ͢Δ• ࠷ऴతʹFluentdʹͨͲΓண͘༏ΕͨΞʔΩςΫνϟ15
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ੳج൫DeNAੳج൫ͷશମ૾16LogGatewayHadoopArgusDashboardMedjed+EmbulkHP VerIcaHueJenkins &WorkstaIonServicesAnalystLogDB SnapshotWeb UIWeb UI& SSHQueryQueryGoogleBigQuery
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ੳج൫: LogGateway -> HDFS• 2018ݱࡏHadoopΛओʹData Lakeͱͯ͠༻͍ͯ͠Δ• ͨͩ͠HiveQLΛ༻͍ͯ͠Δ෦/αʔϏε·ͩଘࡏ͢Δ• ͦͷͨΊHueΛఏڙ• LogGatewayʹू·ͬͨϩάΛҎԼΛߦ͍ͳ͕ΒHDFSʹॻ͖ࠐΉ• αʔϏε͝ͱͷྨ• ॏෳഉআ17
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ੳج൫DeNAੳج൫ͷશମ૾18LogGatewayHadoopArgusDashboardMedjed+EmbulkHP Ver=caHueJenkins &WorkstaIonServicesAnalystLogDB SnapshotWeb UIWeb UI& SSHQueryQueryGoogleBigQuery
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ੳج൫: HDFS -> BigQuery/Vertica• 2018ݱࡏͷDeNAਪΫΤϦΤϯδϯGoogle BigQuery• 2013ࠒHP VerticaಋೖɺݱࡏBigQueryॱ࣍Ҡߦத• 2013ҎલHiveQL• Bulk Loadπʔϧ"Medjed"ͰHDFS͔ΒΫΤϦΤϯδϯʹσʔλసૹ• Medjed = Web UI + Embulk manager• ΞφϦετ͕yamlΛॻ͔ͳͯ͘ࡁΉ• ΞφϦετ͕Google Spread SheetΛฤू͢Εyaml͕ੜ͞ΕΔ• ΞφϦετ͕SchemaཧΛߦ͑Δ• EmbulkࣗମෳͷWorkerϊʔυͰ࣮ߦ͞ΕΔͨΊεέʔϧՄೳ19
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.Bulk Loadπʔϧ"Medjed"20Web UIͰλεΫఆٛखಈ࣮ߦ͕ߦ͑Δ
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.Bulk Loadπʔϧ"Medjed"21input / output ͷఆٛΛGoogle Spread SheetͰߦ͑Δ
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.Embulkͷ͕͜͜ศར• FluentdͷΑ͏ͳpluginΞʔΩςΫνϟ• pluginΛ༻/࣮͢Δ͜ͱͰ͋ΒΏΔsource/destinationʹରԠՄೳ• https://github.com/medjed• https://github.com/sonots/embulk-output-vertica• https://github.com/sonots/embulk-input-vertica• ઃఆΛyamlͰॻ͚Δ• ϓϩάϥϛϯάݴޠͱਓؒ(ΤϯδχΞ)ʹ༏͍͠• (ΞφϦετ͚ʹMedjedΛఏڙ)22
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ੳج൫DeNAੳج൫ͷશମ૾23LogGatewayHadoopArgusDashboardMedjed+EmbulkHP Ver=caHueJenkins &WorkstaIonServicesAnalystLogDB SnapshotWeb UIWeb UI& SSHQueryQueryGoogleBigQuery
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ੳج൫: μογϡϘʔυ for BigQuery/Vertica• DeNAͰ2014ࠒ͔ΒμογϡϘʔυπʔϧ"Argus"Λ• ݱࡏͷରԠΫΤϦΤϯδϯ: BigQuery, Vertica• ࠷ۙͷଟ͘ͷμογϡϘʔυಉ༷ΫΤϦΛॻ͍ͯάϥϑΛදࣔͰ͖Δ• ͷϝϦοτ• ͳͷͰࡉ͔ͳཁʹૉૣ͘Ԡ͑ΒΕΔ• 2018ݱࡏͰճ/िͷϦϦʔε• ࣾʹ߹Θͤͨࡉ͔ͳݖݶཧ͕ߦ͑Δ• ADάϧʔϓͱ࿈ܞͯ͠ཧ/ฤू/ӾཡݖݶΛ༩Ͱ͖Δ24
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.μογϡϘʔυ"Argus"25Web UI্ͰΫΤϦΛॻ͍࣮ͯߦ
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.μογϡϘʔυ"Argus"26ΫΤϦ࣮ߦ݁ՌΛάϥϑදͰදࣔՄೳ
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ੳج൫DeNAੳج൫ͷશମ૾27LogGatewayHadoopArgusDashboardMedjed+EmbulkHP VerIcaHueJenkins &WorkstaIonServicesAnalystLogDB SnapshotWeb UIWeb UI& SSHQueryQueryGoogleBigQuery
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ੳج൫: Job Scheduler/Workstation• Job Schedulerͱͯ͠JenkinsΛ༻• Web UI͕ΞφϦετʹͱ͍͍ͬͯ͢• େͷ͜ͱ͕Ͱ͖ͯ͠·͏• ݖݶཧॊೈʹߦ͑Δ• ਖ਼ӡ༻େม• Web UIͰ݁͠ͳ͍ۀͷͨΊʹLinux WorkstationΛఏڙ• ΞφϦετ͕ϩάΠϯͰ͖ΔLinuxαʔόʔΛఏڙ͍ͯ͠Δ• Hadoop CLIͷ࣮ߦPythonεΫϦϓτͷ։ൃʹ༻͞Ε͍ͯΔ28
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.Digdagͱ͍͏༗ྗީิ• ಋೖ͍ͨ͠ϙΠϯτ• Embulkͱಉ͘͡yamlͰઃఆͰ͖Δ• WorkflowΛίʔυͰཧͰ͖Δ• Shell/Ruby/PythonεΫϦϓτΛॻ͚Δ• Workflow, Taskͷࡉ͔͍ఆ͕ٛͰ͖Δ: ݅ذ, ґଘ, ܁Γฦ͠, etc.• HAͱฒྻॲཧ͕༰қ• ಋೖͰ͖ͣʹ͍Δཧ༝• ݖݶཧ͕ߦ͍ͮΒ͍29
© DeNA Co., Ltd.ੳج൫ͷӡ༻30
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ओͳӡ༻ۀ• ArgusʢμογϡϘʔυʣ/ MedjedʢBulk Loadπʔϧʣͷઃఆ• BigQueryͷ伴ొ• ݖݶͷॳظઃఆ• Jenkinsͷઃఆ• ݖݶઃఆ• αʔόʔӡ༻• ͍ΘΏΔී௨ͷΠϯϑϥӡ༻• ֤λεΫGitHub IssueͰཧ• Issueݪଇશैۀһ͔ΒӾཡՄೳ31
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ओͳαϙʔτۀ• ࣾͷੳج൫ར༻ऀ͚ٕज़αϙʔτ• ϙϦγʔʮੳج൫ΑΖͣ૯ड͚ʯ• ੳج൫ʹ͍ͭͯͷ૬ஊͰ͋Εʮ·ͣड͚Δʯ• αϙʔτରओʹΞφϦετ• ͔͠͠ΞφϦετ৬Ͱͳ͍ਓ͔Βͷ߹ͤ͋Δ• 2018ݱࡏSlackͰͷαϙʔτ͕7ׂ΄Ͳ• ͍࣍Ͱର໘ϛʔςΟϯάɺϝʔϧ32
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.SlackʹΑΔαϙʔτํ• ୭ͰೖΕΔαϙʔτઐ༻Slack WorkspaceΛ༻ҙ͍ͯ͠Δ• DeNAͰશैۀһ͕Slack Enterprise GridΞΧϯτΛ͍࣋ͬͯΔ• ࠔͬͨΒmentionͯ͠Β͏ @support ͱ͍͏άϧʔϓΛ༻ҙ͍ͯ͠Δ• @support ʹAI&ੳج൫ϝϯόʔؚΊෳ໊͕ొ͞Ε͍ͯΔ33
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.SlackʹΑΔαϙʔτͷྫ34"ͱΓ͋͑ͣ"ฉ͍ͯΒͬͯରԠ→ղফͰ͖͍ͯΔ͔֬ೝ
© DeNA Co., Ltd.AIج൫ͷ"ࠓ"35
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.DeNAͷAIج൫• AWS/GCPʹΑΔػցֶशج൫Λߏங/ӡ༻• GPUΠϯελϯεΛ͍ͭͰඞཁͳ͚ͩ• Infra as CodeΛపఈ͍ͯ͠Δ• Terraform• Itamae ( RubyϓϩϏδϣχϯάπʔϧ )• ϓϩδΣΫτൃ͔ΒظؒͰΠϯϑϥఏڙͰ͖͍ͯΔ• ֤छਃؚΊͯ࠷1िؒ36
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.DeNAͷAIج൫37hUps://speakerdeck.com/mazgi/dena-ai-cloud-infrastructure-2018-summary
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.AgendaࣗݾհDeNAͱAIγεςϜ෦ͷ͝հDeNAੳج൫ͷ"ࠓ"⁃ DeNAੳج൫ͷಛ⁃ ੳج൫ͷγεςϜߏ⁃ ੳج൫ͷӡ༻⁃ AIج൫ͷ"ࠓ"2020ʹ͚ͯ ~ AI&ੳج൫ͱͯ͠ ~38( 1 min. )( 4 min. )( 25 min. )( 10 min. )( 5 min. )( 5 min. )( 5 min. )( 10 min. )
© DeNA Co., Ltd.2020ʹ͚ͯ~ AI&ੳج൫ͱͯ͠ ~39
© DeNA Co., Ltd.͜Ε͔ΒͷDeNAੳج൫͕ࢦ࢟͢• ΫϥυωΠςΟϒ• αʔϏεͷΫϥυԽʹ߹Θͤͯੳج൫ΫϥυԽ• ಉ࣌ʹΞφϦετʹطଘͱಉͷUXΛఏڙ• ੳج൫ʹཹ·Βͳ͍AI&ੳج൫• ੳͷߴԽͱAIٕज़ͷಋೖͷͨΊศརͳUXΛఏڙ• σʔλੳ / AI / σʔλαΠΤϯε / Kaggle ѻ͏σʔλͷଟ༷Խ• ΑΓ҆શͳݖݶ• AWSΞΧϯτ/GCPϓϩδΣΫτࣗମΛσʔλͷൿಗੑʹԠͯ͡40
طଘੳج൫© DeNA Co., Ltd.ΫϥυωΠςΟϒͳੳج൫ͷྫ41ArgusDashboardMedjed+EmbulkJenkins &WorkstaIonAnalystWeb UIWeb UI& SSHServiceGoogleBigQueryLogDB SnapshotαʔϏε͕Ϋϥυ্ʹ͋Δ߹ɺ͋͑ͯΦϯϓϨϛεʹData LakeΛ࣋ͭඞཁͳ͍ɻҰํɺΞφϦετ׳ΕͨUXͰੳΛߦ͍͍ͨɻ
© DeNA Co., Ltd.AI&ੳج൫ͱͯ͠Amazon SageMakerΛΈࠐΜͩྫ42ੳͱػցֶशΛJupyter Notebook(Amazon SageMaker)Ͱߦ͑Δɻ
© DeNA Co., Ltd.Amazon SageMaker ( Jupyter Notebook )43Web UI্ͰPythonίʔυ͕࣮ߦͰ͖Δ
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.ϚϧνϝσΟΞσʔλΛѻ͏AIج൫ͷྫ• ࣮Ҋ݅ͷAIٕज़ಋೖͰ੩ࢭը૾ಈը૾Λѻ͏έʔε͕૿͖͑ͯͨ• S3ͷϚϧνϝσΟΞσʔλೖΛτϦΨʔʹॲཧΛ࣮ߦ͢Δ• ੳج൫ͱѻ͏σʔλॲཧͷཻҟͳΔ44GPUΠϯελϯε(ը૾/ಈըॲཧ)
ɹɹɹɹɹɹɹɹɹɹɹɹɹ© DeNA Co., Ltd.͜Ε͔ΒͷDeNAੳج൫• ΫϥυωΠςΟϒ• αʔϏεʹ߹Θͤͯੳج൫ΫϥυωΠςΟϒʹͳ͍ͬͯ͘• ੳج൫ʹཹ·Βͳ͍AI&ੳج൫• ੳରͷσʔλ࣭ɾྔͱʹ૿͍͑ͯ͘• ػցֶशΞϧΰϦζϜͷ࣮αʔϏεͰͷӡ༻Λࢧ͑ΔML Ops͕ඞཁ• 1ͭͷϓϩδΣΫτͰAIٕज़͏͠ੳߦ͏• ʮAI͔ੳʯͰͳ͘ʮAIੳʯߦ͑Δج൫͕ॏཁ• ΑΓ҆શͳݖݶ• ѻ͏σʔλଟ༷ʹͳ͖͍ͬͯͯΔ• దʹݖݶͨ͠ΑΓηΩϡΞͳڥߏங͕ॏཁ45