マイクロチームでの高速な新規開発を支える開発・分析基盤
by
Seiji Takahashi
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ϚΠΫϩνʔϜͰͷ ߴͳ৽ن։ൃΛࢧ͑Δ ։ൃɾੳج൫ @__timakin__ builderscon 2017
Slide 2
Slide 2 text
ࣗݾհ • timakinʢಡΈ: ͪ·͖Μʣ • https://github.com/timakin • https://twitter.com/__timakin__ • Gunosy৽نࣄۀ։ൃࣨ • Contributor of Golang <- New! • Go/SwiftΛϝΠϯʹॻ͍͍ͯ·͢ɻ
Slide 3
Slide 3 text
Copyright© Gunosy Inc. All Rights Reserved 3 Go / Python ΤϯδχΞืूத ▶https://gunosy.co.jp/recruit/ Gunosyɺ౦ژେֶʹ௨͏3ਓͷֶੜͷ ʮใΛੈքதͷਓʹ࠷దʹಧ͚͍ͨʯͱ͍͏͍͔Β࢝·Γ·ͨ͠ɻ ౦ূϚβʔζ্ɺຊώϧζͷΦϑΟεҠసΛܦͯɺ େ͖͍ͯ͘͠ΔձࣾͰ׆༂͍ͨ͠ϝϯόʔΛืू͍ͯ͠·͢ɻ
Slide 4
Slide 4 text
ࠓ͢͜ͱ • ʮLUCRAʯॳظϦϦʔε·ͰͷಓͷΓͱ੍݅ • ͍։ൃظؒͰͬͨ͜ͱɺΒͳ͔ͬͨ͜ͱ • ։ൃج൫ͷհ • ॊೈͳԾઆݕূ͕Մೳͳڥͮ͘Γ
Slide 5
Slide 5 text
ݶΒΕͨϦιʔεԼͰͷ ߴͳ։ൃख๏ খ͍͞νʔϜͰPDCAΛ ճͤΔੳج൫
Slide 6
Slide 6 text
ݶΒΕͨϦιʔεԼͰͷ ߴͳ։ൃख๏
Slide 7
Slide 7 text
࣮ྫɿʮLUCRAʯ
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
ʮLUCRAʯॳظϦϦʔε·Ͱͷ ಓͷΓͱ੍݅
Slide 10
Slide 10 text
εέδϡʔϧͱ੍݅ • εέδϡʔϧ • 3ϲ݄ؒ (3݄~5݄) • ։ൃνʔϜͷن • ৽نϓϩδΣΫτۃྗগͰʂ • ࣄͰGoͷAPIɺSwiftͰͷiOSΞϓϦ։ൃܦݧͳ͠
Slide 11
Slide 11 text
εέδϡʔϧͱ੍݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ
Slide 12
Slide 12 text
εέδϡʔϧͱ੍݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ • هࣄɺάϧʔϐϯάใɺϢʔβʔೝূଞϦιʔεશମʹؔΘ ΔAPI
Slide 13
Slide 13 text
εέδϡʔϧͱ੍݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ • هࣄɺάϧʔϐϯάใɺϢʔβʔೝূଞϦιʔεશମʹؔΘ ΔAPI • هࣄੜɺػցֶशج൫ • Ϋϩʔϥʔ / ίϯςϯπྨ / هࣄςϯϓϨੜAPI
Slide 14
Slide 14 text
εέδϡʔϧͱ੍݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ • هࣄɺάϧʔϐϯάใɺϢʔβʔೝূଞϦιʔεશମʹؔΘ ΔAPI • هࣄੜɺػցֶशج൫ • Ϋϩʔϥʔ / ίϯςϯπྨ / هࣄςϯϓϨੜAPI • पลڥ • Ωϟογϡػߏ / Τϥʔ, syslogࢹ / ཧπʔϧ • Pushج൫ / ϩάੳج൫ / ABςετج൫
Slide 15
Slide 15 text
εέδϡʔϧͱ੍݅ • ϙΠϯτ 1. νʔϜͷਓۃྗ͑Δɻ 2. ߏங͢Δج൫ʹରͯ͠։ൃظ͕͍ؒɻ 3. ੳ͕Ͱ͖ΔڥΛ࠷ॳ͔Βߏங͢Δɻ
Slide 16
Slide 16 text
࣮ࡍʹԿΛ͔ͬͨʁ
Slide 17
Slide 17 text
࣮ࡍͷεέδϡʔϧ ݄ • API • ϞοΫඋʢεϐʔυײʹ߹Θͣ1͘Β͍͔͠ʹཱͨ ͣʣ • هࣄɺάϧʔϐϯάใAPIͷ࡞ + stgڥߏங • ΫϥΠΞϯτ • UtilɺAPIClientɺLoggingɺϧʔςΟϯάपΓͷඋ • ػցֶशɺهࣄੜج൫ • Ϋϩʔϥʔ࡞ + stgʹॾʑͷΠϯϑϥߏங ԼճΓͷඋͱϓϩτλΠϓ࡞
Slide 18
Slide 18 text
࣮ࡍͷεέδϡʔϧ ݄ • API • ϢʔβʔೝূAPIͷ࡞ • ΫϥΠΞϯτͭͳ͗͜Έ • push, ABج൫, Ωϟογϡؔ࿈ͷௐ, ϩάج൫ͷ࡞ • ΫϥΠΞϯτ • هࣄҰཡɺৄࡉը໘σβΠϯͯࠐΈ • ೝূɺpushɺར༻نɾFAQ֤छઃఆɺڧ੍Ξοϓσʔτ • ػցֶशɺهࣄੜج൫ • هࣄྨɺΫϩʔϥʔɺؔ࿈هࣄੜͷ࡞ɺstgڥߏங ࣮٧Ί + σβΠϯͯࠐΈ
Slide 19
Slide 19 text
࣮ࡍͷεέδϡʔϧ ݄ • API • ϩάج൫ɺϛυϧΣΞ(Τϥʔ, syslogࢹɺmemd)ͷ setup • ֤छهࣄࣗಈੜج൫ɺϩάج൫ͱͷͭͳ͗͜Έ • ຊ൪ڥߏங • ΫϥΠΞϯτ • σβΠϯϒϥογϡΞοϓɺจݴɾಈ࡞मਖ਼ɺਃ࡞ۀ • ػցֶशɺهࣄੜج൫ • ྨɺείΞ͚ϩδοΫͷमਖ਼ɺଞAPIͷमਖ਼ɺ֤छຊ൪ ڥߏங ϛυϧΣΞՃɺ֤APIͭͳ͗͜Έɺຊ൪ڥߏங
Slide 20
Slide 20 text
ॕʂϦϦʔεʂ
Slide 21
Slide 21 text
͜ͷظؒͷ։ൃνʔϜͷঢ়گ
Slide 22
Slide 22 text
աࠅͳεέδϡʔϧ
Slide 23
Slide 23 text
աࠅͳεέδϡʔϧ ۀଓ͖ͷʑ
Slide 24
Slide 24 text
աࠅͳεέδϡʔϧ ۀଓ͖ͷʑ ߥΕΔਓؒؔ
Slide 25
Slide 25 text
ʁ
Slide 26
Slide 26 text
աࠅͳεέδϡʔϧ ۀଓ͖ͷʑ ߥΕΔਓؒؔ
Slide 27
Slide 27 text
ΪϦΪϦ ͚ͩͲ Φϯεέ
Slide 28
Slide 28 text
ΪϦΪϦ ͚ͩͲ Φϯεέ ఆ࣌Ͱࣦྱ
Slide 29
Slide 29 text
ΪϦΪϦ ͚ͩͲ Φϯεέ ఆ࣌Ͱࣦྱ ࿕Β͔ͳ ৬
Slide 30
Slide 30 text
ʁ
Slide 31
Slide 31 text
• Δ / Βͳ͍ͷΓ͚ • ج൫෦ͷ๛ͳϊϋ
Slide 32
Slide 32 text
͍։ൃظؒͰ ͬͨ͜ͱɺΒͳ͔ͬͨ͜ͱ
Slide 33
Slide 33 text
Δ/Βͳ͍ͷج४ • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ ݕূ͢Δͷʹඞཁ͔
Slide 34
Slide 34 text
Δ/Βͳ͍ͷج४ • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ ݕূ͢Δͷʹඞཁ͔ • ඦສDAUʹεέʔϧ͢Δମ੍͕͏͔
Slide 35
Slide 35 text
Δ/Βͳ͍ͷج४ • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ ݕূ͢Δͷʹඞཁ͔ • ඦສDAUʹεέʔϧ͢Δମ੍͕͏͔ • ੳɾӡ༻ɾվળͷϑϩʔΛΓͳ͘౿ΉͨΊͷ ػೳ͕ἧ͍ͬͯΔ͔
Slide 36
Slide 36 text
• هࣄྨɾੜج൫ • ੳج൫ • ೝূɺ هࣄͷҰཡɺӾཡɺ γΣΞ • ※৹ࠪʹ͍+α Δ Βͳ͍ • Android • ݫີͳϦϑΝΫλ • “ߴͰແବͷͳ͍”ج൫ • ݕࡧ • ϑΥϩʔɾ͓ؾʹೖΓ • Ӿཡཤྺػೳ
Slide 37
Slide 37 text
ඞཁͳͷهࣄ͕ݟΒΕͯɺ ݕূɺӡ༻Մೳͳج൫Λ࡞Δ͜ͱ
Slide 38
Slide 38 text
طଘϓϩμΫτ͔Β Ԡ༻Ͱ͖Δ෦Λ βΫβΫऔͬͯ͜Α͏
Slide 39
Slide 39 text
Πϯϑϥ
Slide 40
Slide 40 text
Πϯϑϥߏஙฤ • جຊతʹAWS OpsworksͰɺࣗࣾͷΧελϜChefϨγ ϐΛϕʔεʹڥߏங͢Δ • gunosy/gunosy_opsworks_cookbook
Slide 41
Slide 41 text
Πϯϑϥߏஙฤ
Slide 42
Slide 42 text
Πϯϑϥߏஙฤ • middleware • papertrail, td_agent, datadog, nginx, memcached • ଞɺmysql, jq, einhornʢGoͷAPIͷgraceful restart ༻్ʣͳͲΛΆͪΆͪೖΕΔ
Slide 43
Slide 43 text
Πϯϑϥߏஙฤ • codenize-tools • miamʢIAMཧʣ • piculetʢSGʣ • roadworkerʢRoute53ʣ • radiosondeʢCloudWatch Logsʣ • monosasiʢCloudWatch Eventsʣ
Slide 44
Slide 44 text
git pushͨ͠ΒCircleCI্Ͱ֤ίϚϯυΛୟ͖ɺ Slackʹapply݁ՌͷJSONϖΠϩʔυΛ௨
Slide 45
Slide 45 text
API
Slide 46
Slide 46 text
ͱ͜ΖͰ
Slide 47
Slide 47 text
GunosyGoͷར༻ྺ͕͍ʂ
Slide 48
Slide 48 text
ྺ࢙͕ੵΈॏͳΔͱ ੜ·ΕΔͷ
Slide 49
Slide 49 text
ศརͰ झ͕͋ΔUtility܈
Slide 50
Slide 50 text
gunosy/go
Slide 51
Slide 51 text
APIฤ • gunosy/go • mysql, redis, memd, fluent, airbrakeͳͲ ϛυϧΣΞΫϥΠΞϯτ܈͕ೖͬͯΔ • jwt authenticator, fluent-loggerͳͲɺ ֤APIͰඞཁʹͳΔutilΛ·ͱΊͯΔ • OpsWorks࠷దͳઃఆಡΈࠐΈ
Slide 52
Slide 52 text
APIฤ • gunosy/goͷϝϦοτ / σϝϦοτ • ϝϦοτ • OpsWorksͰڥߏஙͯ͠deploy͢Εɺ API͕͍͍͙ͩͨ͢ಈ͘Α͏ʹͳͬͯΔɻ • JWTೝূͳͲ΄΅࣮ʹࠩҟ͕ͳ͍ͷͰɺ ڞ௨ϥΠϒϥϦʹ͢ΔϝϦοτ͕େ͖͍ • ӡ༻ɺࢹपΓͷઃఆ͕OpsWorksͱͷ๊͖߹ΘͤͰ ͔ͳΓγϣʔτΧοτͰ͖Δ
Slide 53
Slide 53 text
APIฤ • gunosy/goͷϝϦοτ / σϝϦοτ • σϝϦοτ • ϛυϧΣΞ܈ɺͻ͍ͯ AWSͷґଘ͕ߴ͍ʂ • loggerͷܗࣜมߋͳͲ͕ॊೈʹͰ͖ͳ͍
Slide 54
Slide 54 text
APIฤ • पลπʔϧ • SQLεΩʔϚgooseʢGomigration toolʣ Ͱཧ • graceful restart༻ʹɺeinhornͰϓϩηεཧ
Slide 55
Slide 55 text
APIฤ • ϑϨʔϜϫʔΫ • guregu/kami
Slide 56
Slide 56 text
APIฤ • guregu/kamiͷ • ContextʢGoͷrequest-scopedͳΛೖΕΔശΈ ͍ͨͳͭʣΛ݁ߏཞ༻͍ͯ͠Δɻ • ΰουΦϒδΣΫτ • panicΛѲΓͭͿͯ͘͠ΕΔ
Slide 57
Slide 57 text
APIฤ • ύοέʔδཧ • ࠷ۙݫີʹͳΓ࢝Ίͨ • աڈؾ߹͍ Ͱ࠷৽ʹ͍͔͍ͭͤͯͨ
Slide 58
Slide 58 text
APIฤ • ֤ͷղফʹ͚ͯ • AWS OpsWorksͷґଘͷߴ͞ • ϑϨʔϜϫʔΫΛguregu/kami -> net/httpʹҠߦ͠ ͯɺϛυϧΣΞ܈ϞσϧͷґଘΛղফɻ • DIύλʔϯͰॻ͘͜ͱͰɺͳΜͰglobalʹ٧Ίͯ ͍ͨॻ͖ํ͔Β٫
Slide 59
Slide 59 text
APIฤ • ֤ͷղফʹ͚ͯ • όʔδϣϯཧ • ґଘύοέʔδglideʹҠߦͯ͠ɺ దͳόʔδϣϯཧΛɻ
Slide 60
Slide 60 text
APIฤ • σϓϩΠϑϩʔ • git push • S3ʹGoͷόΠφϦ੩తϑΝΠϧΛ٧ΊͨtarΛ Ξοϓϩʔυ • OpsWorksͷAPIΛୟ͍ͯS3͔ΒtarΛ͖࣋ͬͯͯ ల։ɺrestart͢Δ
Slide 61
Slide 61 text
ref: https://speakerdeck.com/kyokomi/gunosy-apitimugokai-fa-huro
Slide 62
Slide 62 text
APIฤ • CI • ॳظ։ൃͰϏϧυʹ࣌ؒΛऔΒΕΔͷѹతແବ • => CircleCI2.0ରԠʂ
Slide 63
Slide 63 text
APIฤ • ײಈͷཛྷ • goͷvendor, npm install assets:precompileͳͲ Ωϟογϡ͢Ε ͍͍ͩͨ1~2minsͰऴΘΔ
Slide 64
Slide 64 text
APIฤ • Ϋϩʔϥʔɺྨ • GunosyͰഓͬͨػցֶशج൫ϊϋΛϑϧ׆༻ • ϑϨʔϜϫʔΫ: Django • δϣϒεέδϡʔϥ: Celery • σʔλߏ: GunosyFeed Ver.2 • ref: https://www.slideshare.net/mosa_siru/ss-65205273
Slide 65
Slide 65 text
APIฤ • هࣄྨɺੜʹඞཁͳAPI܈ • Crawler • GunosyFeedʹଇͬͨAPIΛୟ͍ͯσʔλΛऔͬͯ͘Δ • HTMLαχλΠζɺϑΟʔϧυใͷύʔαʔػߏ • CategoryClassifier • هࣄͷΧςΰϦྨث • URL(υϝΠϯ)ʹΑΔϧʔϧϕʔεͷྨ + ػցֶशϞσϧʹΑΔྨ • NGఆ • TabGenerator • ಛఆΧςΰϦ(λϒ)ͷهࣄҰཡΛੜ • ElasticSearchʹੵͨ͠ӾཡɾΫϦοΫϩά͔ΒείΞϦϯάͯ͠อଘ • खಈϐοΫΞοϓͷӡ༻͚API
Slide 66
Slide 66 text
APIฤ • Ωϟογϡ • ϩʔΧϧͱϦϞʔτͷ̎ஈ֊ • memcached • هࣄɺݕࡧ݁ՌɺϚελʔσʔλͷΈΩϟογϡ
Slide 67
Slide 67 text
ref: https://www.slideshare.net/mosa_siru/go-memcached-microservices
Slide 68
Slide 68 text
APIฤ • Pushج൫ • mercari/gaurunΛfork(gunosy/gaurun) • gaurunͷόΠφϦΛS3ʹஔ͍ͱ͍ͯɺ OpsWorksͰdeploy • OpsWorksͷCustom JSONͷઃఆΛ gaurunͷઃఆϑΝΠϧʹஔ͖͑ΔϨγϐ
Slide 69
Slide 69 text
ʂʂ
Slide 70
Slide 70 text
"1/T ($1 '$. AdminͰPush༧ Push API Gaurun API Bulk Publish ௨ड৴ Ұ࿈ͷ௨ϑϩʔ
Slide 71
Slide 71 text
ΞʔΩςΫνϟ
Slide 72
Slide 72 text
ΞʔΩςΫνϟฤ • ϚΠΫϩαʔϏεʹ͗͢͠ͳ͍
Slide 73
Slide 73 text
ref: https://www.slideshare.net/mosa_siru/ss-64839846
Slide 74
Slide 74 text
ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου
Slide 75
Slide 75 text
ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου • SGઃఆͳͲͷఔʹΑΔ։ൃͷԼ
Slide 76
Slide 76 text
ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου • SGઃఆͳͲͷఔʹΑΔ։ൃͷԼ • σϓϩΠ͕͠ΜͲ͍
Slide 77
Slide 77 text
ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου • SGઃఆͳͲͷఔʹΑΔ։ൃͷԼ • σϓϩΠ͕͠ΜͲ͍ • ཧը໘ͷͨΊʹര͢ΔCRUD API܈
Slide 78
Slide 78 text
ΞʔΩςΫνϟฤ • LUCRAͰϚΠΫϩαʔϏεʹ͗͢͠ͳ͍ • هࣄऩूपΓ • ྨɺΫϩʔϥʔɺهࣄੜݸผʹɻ • Client͚ͷAPI • هࣄɺάϧʔϐϯάใɺϢʔβʔใϝΠϯAPI͕શ෦ฦ͢ • PushɺABςετཧAPI͚ͩݸผʹɻ
Slide 79
Slide 79 text
iOS
Slide 80
Slide 80 text
iOSΫϥΠΞϯτฤ • MVVM + Reactive • Extension, APIClient, LoggerपΓͷUtil࠶ར༻Մೳ
Slide 81
Slide 81 text
iOSΫϥΠΞϯτฤ • ϩάૹ৴पΓͷίʔυ͕ଟ͍ -> σόοάେม • LogDebugger͕͋ΔͷͰϩά͕ૹΒΕ͔ͨΛͦͷ ͰσόοάͰ͖Δ • aikizoku/SKLogDebugger-iOS
Slide 82
Slide 82 text
No content
Slide 83
Slide 83 text
iOSΫϥΠΞϯτฤ • ίϯύΠϧ࣌ؒͷݮ • Ϗϧυͪແҙࣝͷ͏ͪʹ૿͍͑͢ແବͳ࣌ؒ • -Xfrontend -debug-time-function-bodies ্هϑϥάͰɺϝιου୯ҐͷίϯύΠϧ࣌ؒΛܭଌ • giginet/xcprofilerͰίϯύΠϧ͕͍ॱʹ֬ೝ
Slide 84
Slide 84 text
ms୯ҐͰϝιου͝ͱͷίϯύΠϧ࣌ؒܦաͷ ্ҐΛදࣔͯ͘͠ΕΔɻ
Slide 85
Slide 85 text
iOSΫϥΠΞϯτฤ • ίϯύΠϧ࣌ؒͷݮ • 50msҎ্ͷϝιου͕૿͑ͨΒվળ • giginet/danger-xcprofilerͰΞϥʔτ௨Մೳ
Slide 86
Slide 86 text
iOSΫϥΠΞϯτฤ • ىಈ࣌ؒͷݮ • DYLD_PRINT_STATISTICSϑϥάͷઃఆ • ґଘϥΠϒϥϦͷ੍ • ܕਪͷݮ • SDKͷηοτΞοϓͷฒྻԽ
Slide 87
Slide 87 text
։ൃڥ·ͱΊ • Infrastructure as Codeపఈ & apply݁ՌͷՄࢹԽ • एׯͷґଘɺటष͍࣮ڐ༰ͭͭ͠ɺ AWS࠷దͳڥʹ͔ͬΔ͜ͱͰΛग़ͯ͠Δ • ࠷ॳ͔ΒΞʔΩςΫνϟΛϚΠΫϩʹ͗͢͠ͳ͍ • ίϯύΠϧɺCIͳͲͷ܁Γฦ͠࡞ۀແବͳ࣌ؒΛ ա͝͞ͳ͍Α͏ʹɺࣗಈԽ & ߴԽ
Slide 88
Slide 88 text
খ͍͞νʔϜͰPDCAΛ ճͤΔੳج൫
Slide 89
Slide 89 text
࣮ࡍͲΜͳϩάΛ ૹ͍ͬͯΔ͔ʁ
Slide 90
Slide 90 text
͜ͷը໘ͰͲΜͳϩά͕ ൃੜ͠͏Δ͔ʁ
Slide 91
Slide 91 text
• launchΠϕϯτϩά • fore/backgroundϩά • push heartbeatϩά • ೝূ, initAPI callϩά • ॳظදࣔ࣌هࣄimpϩά • ΧςΰϦεϫΠϓભҠϩά • ΧςΰϦΫϦοΫભҠϩά • εΫϩʔϧ࣌impϩά • هࣄΫϦοΫϩά • pull-refreshϩά • refresh࣌impϩά • push௨։෧ϩά
Slide 92
Slide 92 text
• launchΠϕϯτϩά • fore/backgroundϩά • push heartbeatϩά • ೝূ, initAPI callϩά • ॳظදࣔ࣌هࣄimpϩά • ΧςΰϦεϫΠϓભҠϩά • ΧςΰϦΫϦοΫભҠϩά • εΫϩʔϧ࣌impϩά • هࣄΫϦοΫϩά • pull-refreshϩά • refresh࣌impϩά • push௨։෧ϩά ͍ͬͺ͍
Slide 93
Slide 93 text
Ͳ͏͍͏ϑϩʔͰ ૹ͍ͬͯΔ͔ʁ
Slide 94
Slide 94 text
ੳσʔλϑϩʔ
Slide 95
Slide 95 text
ੳσʔλϑϩʔ ొɾӾཡɾ ΫϦοΫϩάͷऩू
Slide 96
Slide 96 text
ੳσʔλϑϩʔ ొɾӾཡɾ ΫϦοΫϩάͷऩू td_agentʹΑΔ ϩάͷू
Slide 97
Slide 97 text
ੳσʔλϑϩʔ ొɾӾཡɾ ΫϦοΫϩάͷऩू td_agentʹΑΔ ϩάͷू ϩάछผ͝ͱʹ όοΫΞοϓ & ྲྀ͠ࠐΈ
Slide 98
Slide 98 text
ੳσʔλϑϩʔ ొɾӾཡɾ ΫϦοΫϩάͷऩू td_agentʹΑΔ ϩάͷू ϩάछผ͝ͱʹ όοΫΞοϓ & ྲྀ͠ࠐΈ Redash্Ͱੳ
Slide 99
Slide 99 text
• ΫϥΠΞϯτ͔Βͷϩάcookpad/puree-ios Λ௨ͯ͡redshiftʹૹΔ • td_agent͕ೖͬͨlogूαʔόʔΛհͯ͠ɺ ՃࡁΈσʔλΛRedashʹྲྀ͢ • όοΫΞοϓͷͨΊʹkinesisΛڬΉ ੳσʔλϑϩʔ
Slide 100
Slide 100 text
࣮ࡍͷLogఆٛ (iOS)
Slide 101
Slide 101 text
࣮ࡍͷLogఆٛ (iOS)
Slide 102
Slide 102 text
Ͳ͏ͬͯσʔλΛݟΔ͔ʁ
Slide 103
Slide 103 text
ੳڥ • RedashΛར༻ • ओཁKPIఆظతʹSlackʹ௨ • ӡ༻ɺ։ൃΘͣνʔϜશһ͕ੳ༻SQLΛॻ͘
Slide 104
Slide 104 text
ͲΜͳΛ͍ͬͯΔ͔ʁ
Slide 105
Slide 105 text
ओཁKPI • DAU • 14ޙܧଓ • 7ޙܧଓ • 1ޙܧଓ • ۙ1࣌ؒهࣄCTR • ొܦ࿏ผ֫ಘ • هࣄΫϦοΫճ/DAU • εϫΠϓճ/DAU • ͓ؾʹೖΓొ/DAU • શମ / ొܦ࿏ผίϗʔτ • Pushڐঢ়گ • ΧςΰϦผهࣄӾཡ
Slide 106
Slide 106 text
ੳ݁Ռͷར༻ • ʮ͓͠ΌΕͳΞϓϦʯͷϒϥϯυΠϝʔδΛٻͨ͠ ͍͔Βͱ͍ͬͯɺ ࠜڌͳ͘ʮϑΝογϣϯʯʮίεϝʯΛਪ͢ ͱ͍͏ҙࢥܾఆઈରʹ͠ͳ͍ɻ • ΧςΰϦผͷσʔλΛݟͯɺߴ͍CTRRR͕ ༧͞ΕΔPushػೳՃ͔͠ߦΘͳ͍ɻ
Slide 107
Slide 107 text
·ͱΊ • iOSΫϥΠΞϯτ͔Βܗͭͭ͠ϩάΛૹ৴ • ը໘୯ҐɺΞΫγϣϯ୯ҐͰऔΕΔ͚ͩͷϩάΛऔΔ • ੳπʔϧRedashΛ༻͍͓ͯΓɺνʔϜશମͰ SQLͷϝϯςφϯεΛߦ͏ • σʔλͰ֬৴͕࣋ͯͳ͍ࢪࡦۃྗڐ͞ͳ͍
Slide 108
Slide 108 text
ݶΒΕͨϦιʔεԼͰͷ ߴͳ։ൃख๏ খ͍͞νʔϜͰPDCAΛ ճͤΔੳج൫
Slide 109
Slide 109 text
ݶΒΕͨϦιʔεԼͰͷ ߴͳ։ൃख๏
Slide 110
Slide 110 text
։ൃख๏·ͱΊ • Infrastructure as Codeపఈ & apply݁ՌͷՄࢹԽ • एׯͷґଘɺటष͍࣮ڐ༰ͭͭ͠ɺ AWS࠷దͳڥʹ͔ͬΔ͜ͱͰΛग़ͯ͠Δ • ࠷ॳ͔ΒΞʔΩςΫνϟΛϚΠΫϩʹ͗͢͠ͳ͍ • ίϯύΠϧɺCIͳͲͷ܁Γฦ͠࡞ۀແବͳ࣌ؒΛ ա͝͞ͳ͍Α͏ʹɺࣗಈԽ & ߴԽ
Slide 111
Slide 111 text
খ͍͞νʔϜͰPDCAΛ ճͤΔੳج൫
Slide 112
Slide 112 text
ੳج൫·ͱΊ • iOSΫϥΠΞϯτ͔Βܗͭͭ͠ϩάΛૹ৴ • ը໘୯ҐɺΞΫγϣϯ୯ҐͰऔΕΔ͚ͩͷϩάΛऔΔ • ੳπʔϧRedashΛ༻͍͓ͯΓɺνʔϜશମͰ SQLͷϝϯςφϯεΛߦ͏ • σʔλͰ֬৴͕࣋ͯͳ͍ࢪࡦۃྗڐ͞ͳ͍
Slide 113
Slide 113 text
͝੩ௌ༗͏͍͟͝·ͨ͠ʂ