Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Couples開発裏話
Search
koni
April 21, 2015
93
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Couples開発裏話
2015/4/17 第三回ナカノヒトカンファレンス
koni
April 21, 2015
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Tell your own story through comics
letsgokoyo
1
1.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
220
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Transcript
Couples ։ൃཪ גࣜձࣾΤϨΧɹখ ক࢙ 2015/4/17 ୈ3ճφΧϊώτΧϯϑΝϨϯε
খ ক࢙ (Masafumi Konishi) ‣ גࣜձࣾΤϨΧɹCouples ։ൃऀ ‣ WebΤϯδχΞ ‣
Ҏલɺࠗ׆ϚονϯάαʔϏεʮpairsʯͷ։ൃ ‣ େֶ࣌ɿΣϒαʔϏεΛ࡞Δͷ͕झຯ ʮwhotwiʯͳͲ ‣ 1989ੜ·Ε ‣ Twitter: @koni ࣗݾհ
Couplesͱ
ࠃ࠷େͷ “Χοϓϧઐ༻ΞϓϦ” iPhone ΞϓϦɾAndroid ΞϓϦ 20145݄ϦϦʔε Couples ͱ
‣ ;ͨΓͷࢥ͍ग़Λ؆୯ʹڞ༗Ͱ͖ΔΞϓϦ Couples ͱ τʔΫ ΞϧόϜ ΧϨ ϯμ ʔ ه೦
Couples ͱ 10ϲ݄Ͱࠃ࠷େͷΧοϓϧΞϓϦʹ TVCM Χοϓϧઐ༻ΞϓϦࠃDL
‣ ྦྷܭDLɿ 200ສ ʢϦϦʔε͔Β9ϲ݄ʣ ‣ ྦྷܭτʔΫ݅ɿ 10ԯ݅ ‣ ྦྷܭࣸਅຕɿ 5,000ສຕ
‣ ྦྷܭ༧ఆ݅ɿ 500ສ݅ ΞϓϦͷن
‣ Couples ͱʢࡁʣ ‣ ϦϦʔε͔Β͜Ε·Ͱ ‣ ΞϓϦฤ ‣ Πϯϑϥɾαʔόฤ ‣
൪֎ฤ ຊͷ༰
ϦϦʔε͔Β͜Ε·Ͱ ʻΞϓϦฤʼ
‣ গਓνʔϜʢ֤os 2,3ਓ) ‣ ଟগͷόά͕͋ͬͯɺͱʹ͔͘ಈ͘ͷΛૣ͘࡞Δ ‣ μϝͳΒमਖ਼ˠ࡞Δˠमਖ਼ͷ܁Γฦ͠… ‣ ࣮CouplesɺϓϩτλΠϓ͔Β͔ͳΓमਖ਼͕ೖͬͨ ಉ͡ΞϓϦͱࢥ͑ͳ͍΄Ͳ
‣ ϦϦʔεલϢʔβ͕͍ͳ͍ͷͰɺࢥ͍ͬͨେ͖ͳมߋՄೳ ϦϦʔεޙͷ༷มߋσʔλߏ͕มΘͬͯ։ൃେม ‣ DeployGateTestFlightΛ׆༻ͯ͠ɺ ϦϦʔεલʹؔऀͰͬͯΈΔ ΞϓϦͷॳظόʔδϣϯϦϦʔε·Ͱ
‣ ։ൃνʔϜ7ਓ ‣ ΞϓϦͷϨϏϡʔɺ͓͍߹ΘͤͰ Α͘͝ཁ͍ͨͩ͘ՕॴΛ༏ઌ࣮ͯ͠ ‣ Ϣʔβʔ͕ٻΊ͍ͯΔͷɺ ৽ػೳͰͳ͘طଘػೳͷϒϥογϡΞοϓ ‣ جຊػೳἧ͍͕ͬͯͨɺ
ॳظʹεϐʔυΛॏࢹͨ͜͠ͱʹΑΓߥΓͳՕॴ͕ଟ͔ͬͨ ࡉ͔͍վળͳͲΛਐΊΔ ϦϦʔεޙ3ϲ݄͘Β͍·Ͱ
‣ ։ൃνʔϜ13ਓ ‣ ࡉ͔ͳػೳͷϒϥογϡΞοϓͰ࣭͕མͪண͍ͨ ‣ ৽ػೳΛϦϦʔε ‣ ৽ػೳεϐʔυΛॏࢹͯ͠։ൃ ‣ ίʔυͷ࣭ॏཁ͕ͩɺϦϦʔεΛૣ͘͢Δ͜ͱॏཁ
‣ େ͖ΊͷϦϦʔεޙɺඞͣখ͞ͳमਖ਼Λߦ͏ΞοϓσʔτΛߦ͍ ൃੜٕͨ͠ज़తෛ࠴Λฦࡁ͍ͯ͘͠ ϦϦʔεޙ6ϲ݄͘Β͍(2014/11)ʙݱࡏ
‣ ෆ۩߹୲ΤϯδχΞɺ͝ҙݟɾ͝ײɿ෦ࢪࡦσΟϨΫλʔ ‣ ͓٬༷͔Βͷ͝ҙݟɾۤΛݟͯ ʮରԠ͠ͳ͍ͱ͍ʯͱ͍͏ҙࣝΛνʔϜશମͰڞ༗Ͱ͖Δ ‣ ͍߹Θ͕ͤ݅ेରԠ͖͠ΕΔྔͩͬͨͨΊՄೳͩͬͨ ‣ ͓͍߹Θͤ࣌ʹεΫϦʔϯγϣοτΛ ૹΕΔػೳ
‣ ͓٬༷ͷঢ়گ͕͙͢ʹΘ͔ΔͷͰɺ ରԠ͍͢͠ ͓͍߹ΘͤରԠΛ୲ऀ͕ߦ͏ମ੍ʹ
‣ ϖΞղআͯ͠͠·ͬͨͷͰ͕͢ɺσʔλΛͱʹͤ·ͤΜ͔ʁ ‣ ྸ͕एΊͳͷͰɺ ʮผΕΔʯʮผΕ͙ͯ͢ʹ෮ԑʯʮผͷਓͱ͖߹͏ʯ ͕සൟʹൃੜ… ‣ ϝʔϧΞυϨεΛొ͍ͯͯ͠ɺ͔ͭϖΞղআ͔Β1ϲ݄ҎͳΒ ૬खʹʮϖΞղআʯͷΩϟϯηϧਃΛ͢Εσʔλ෮׆Մೳʹ ‣
࠷ॳखಈͰରԠ͍͕ͯͨ͠ɺରԠ͕͔͔ΔͷͰࣗಈԽ ‣ Ϧϕϯδϙϧϊରࡦ ͜Μͳ͓͍߹Θͤ...
‣ 1ਓͰ͑ͳ͍ͷͰ͔͢ʁ ‣ Χοϓϧઐ༻ΞϓϦͰ͢ͷͰɺ͓ҰਓͰ͓͍͍͚ͨͩ·ͤΜ ‣ 3ਓͰ͑ͳ͍ͷͰ͔͢ʁ ‣ Χοϓϧઐ༻ΞϓϦͰ͢ͷͰɺ3ਓҎ্Ͱ͓͍͍͚ͨͩ·ͤΜ ‣ ࣮ࡍʹ༑ୡಉ࢜Ͱ͍ͬͯΔྫ͋Δ
‣ LINEͰങͬͨελϯϓ͑ͳ͍ͷͰ͔͢ʁ ‣ ਃ͠༁͋Γ·ͤΜ͕ɺLINEͰͳ͍ͷͰ͓͍͍͚ͨͩ·ͤΜɻ ͜Μͳ͓͍߹Θͤ...
‣ τʔΫػೳɺLINEͱൺֱ͞ΕΔ͜ͱ͕ඇৗʹଟ͍ ‣ LINE͕τʔΫػೳͷσϑΝΫτ ‣ ͦΕҎԼͷΫΦϦςΟϢʔβʹड͚ೖΕΒΕͳ͍ ‣ Ͳ͜·Ͱ͚ۙͮΔ͔ɺͦͯ͠Ͳ͔͜ΒࠩผԽ͍͔ͯ͘͠ ‣ ͪͳΈʹɿ
LINE͔ΒͷτʔΫͷҠߦΛଅͨ͢Ίɺ ʮLINEͷτʔΫཤྺΛCouplesʹҾ͖ܧ͙ػೳʯ͋Γ·͢ ϢʔβʔͷΛฉ͘ͱ…
‣ Android ΞϓϦͷΞοϓσʔτΛ Ұ෦ͷϢʔβ͔Βঃʑʹߦ͏Έ ‣ ສ͕ҰςετΛ͢Γൈ͚ͯ க໋తͳෆ۩߹͕ͬͨ߹ɺ 100% ެ։લʹमਖ਼Ͱ͖ΔͨΊɺ ඃΛ࠷খݶʹ৯͍ࢭΊΒΕΔͷͰɺ
ੵۃతʹ׆༻͍ͯ͠Δ ‣ Couples ͷ߹ɺ 5% ެ։Ͱ༷ࢠΛݟ͍ͯΔ Google Play ͷʮஈ֊తެ։ʯػೳ
‣ ʮམͪͳ͍ʯʮαΫαΫಈ͘ʯ ‣ جຊ͕ͩɺඇৗʹॏཁ ‣ ΞϓϦͷΫϥογϡͷਪҠΛ ཧը໘ͷμογϡϘʔυͰݟΒΕΔΈΛಋೖ ʮΫϥογϡʯͱͷઓ͍ ˛ΫϥογϡͷਪҠ
ϦϦʔε͔Β͜Ε·Ͱ ʻαʔόʔɾΠϯϑϥฤʼ
‣ Amazon Web Service ‣ ैྔ՝ۚͰεϞʔϧελʔτͰ͖Δ ‣ ͋ͱ͔ΒॳظͷߏΛࣺͯͯɺεέʔϥϒϧͳߏʹͰ͖Δ ‣ ٸதͰͲΜͲΜϦιʔεΛՃͰ͖Δ
‣ ϋʔυΣΞͷ͜ͱΛߟ͑ͳ͍͍ͯ͘ ‣ pairsͰར༻͍ͯͨ͠ͷͰಋೖָ͕ͩͬͨ ΠϯϑϥAWSΛར༻ͯ͠εϞʔϧελʔτ
‣ ͋ͱ͔Βม͑ͮΒ͍ॴ͚ͩ৻ॏʹߟ͑Δ ଞͱΓ͋͑ͣಈ͘ঢ়ଶʹ͠ɺ ඞཁͳͱ͖͕དྷͨΒεέʔϧͤ͞Ε͍͍ ‣ CDNͱ͔ ‣ ্ཱ͔ͪ͛࣌Β࠷ݶεέʔϧͰ͖Δߏʹ ‣ WebαʔόͱDBαʔόΛ͚͓ͯ͘
‣ ӬଓԽͷඞཁ͕͋ΔσʔλEC2ʹஔ͔ͳ͍ ʢS3, DB, DynamoͳͲʹஔ͘ʣ ‣ σʔλ͕ͲΜͲΜ૿͍͑ͯ͘ͷͷσʔλετΞ৻ॏʹ AWSͰεϞʔϧελʔτ͢Δͱ͖ʹߟ͑Δ͜ͱ
‣ ઐΠϯϑϥΤϯδχΞ͕͍ͳ͍ͷͰɺ Ͱ͖Δ͚ͩखؒͷ͔͔Βͳ͍γεςϜΛࢦ͢ ‣ AWSͷϑϧϚωʔδυαʔϏεΛ׆༻ ‣ ྫʣDynamoDB: εϧʔϓοτͷௐ͢Δ͚ͩͰ͍͍ Πϯϑϥํ
‣ ຖ19࣌ʹQ&Aͱ͍͏ίϯςϯπΛߋ৽͠ɺ ϓογϡ௨Λଧͭ͜ͱʹͳͬͨ ‣ ௨ৗͷഒͷΞΫηε͕ϓογϡ௨ͷ৴5ඵޙ͔Β10ඵ΄Ͳଓ͘ 2014/9 ϓογϡ௨ͱͷઓ͍ ϐʔΫ →͜Εʹ͑ΔαʔόΛ ɹ༻ҙ͢Δඞཁ͕͋Δ
⾢ඵؒϦΫΤετͷਪҠ ͋Δͷ18:59 ʙ 19:05 20ඵ͘Β͍ ϓογϡ௨
‣ ରࡦ1: AutoScalingߏ ‣ ෛՙʹΑΓαʔόʔΛม͑Δ ‣ αʔόʔͷ૿ݮ͕ϘλϯͻͱͭͰͰ͖ΔΑ͏ʹͳΔ ‣ ඞવతʹΠϯϑϥपΓΛඋ͠ͳ͍ͱ͍͚ͳ͘ͳΔ 2014/9
ϓογϡ௨ͱͷઓ͍ ⾢͋Δ1ͷαʔόʔͷมԽ
‣ ରࡦ2: Spot Instanceͷ׆༻ ‣ ΦʔΫγϣϯܗࣜͰ୯Ձ͕ܾ·ΔEC2ͷΠϯελϯε ‣ ࢢՁ͕֨ೖࡳՁ֨Λ͑Δͱམͱ͞ΕΔ ‣ ఆՁͷ10-20%ఔͷՁ֨ʢReserveΑΓ͍҆)
2014/9 ϓογϡ௨ͱͷઓ͍ ⾢SpotInstanceͷ࣌ؒ୯Ձ(2݄ʙ4݄) 3݄ࠒ͔ΒٸʹՁ͕֨ཚߴԼ… ํͳ͍ͷͰΦϯσϚϯυͱซ༻
‣ ରࡦ3ɿඵͣͭेճʹΘ͚ͯૹ৴͢ΔΈΛߏங ‣ DBʹ৴ݪߘͱ৴࣌ͳͲΛೖΕ͓͚ͯͩ͘ɻ ‣ (ੲ) खಈͰ5ճૹ৴… ←ࠓࣗಈԽ͠·ͨ͠ 2014/9 ϓογϡ௨ͱͷઓ͍
‣ ͋Δɺར༻ٸ૿ͰΞϥʔτ͕དྷͨ ݪҼɺେ͖Ίͷ͕ى͖ɺύʔτφʔʹ࿈བྷͨ͠ਓ͕ଟ͔ͬͨ͜ ͱͩͬͨ ‣ ίϛχϡέʔγϣϯΞϓϦͳͷͰɺ͕ى͖ΔͱΞΫηε͕૿͑Δ ‣ ରࡦ ‣ AutoScalingͱ૬ੑ͕ྑ͍
‣ ෛՙͷߴ·ΓͰউखʹαʔόʔ͕૿͑Δ ‣ αʔόʔཱͭͷʹ͔͔ΔͷͲ͏͠Α͏ͳ͍… ‣ 5Ҏ্ͰSlackʹ௨ ʮʯͱͷઓ͍
‣ 12/31ʹαʔόΛ௨ৗ࣌ΑΓ૿ڧͯ͠ྟΜ͕ͩ… 2015/1/1 ʮ͚͓͋Ίʯͱͷઓ͍ 23:59:00 23:59:10 23:59:20 23:59:30 23:59:40 23:59:50
00:00:00 00:00:10 00:00:20 00:00:30 00:00:40 00:00:50 00:01:00 00:01:10 00:01:20 00:01:30 00:01:40 00:01:50 00:02:00 00:02:10 00:02:20 00:02:30 00:02:40 00:02:50 00:03:00 2014/12/31 23:59 ͔Β4ؒͷඵؒτʔΫ Λӽ͔ͯ͠Βͷ10ඵͰ 4ഒͷτʔΫૹ৴͕ൃੜ
‣ ΞϓϦͷॏཁࣈΛ·ͱΊͨμογϡϘʔυ ‣ ΞϓϦͷΛײ͡ΒΕΔ ‣ ͜ͷը໘͚ͩσβΠφʔ͕σβΠϯ ‣ ΤϯδχΞར༻ࣈΛݟͨ͘ͳΔ ‣ ʑΞϓϦͷΛײ͡ΒΕΔͷͰɺ
ॳظ͔Β͜͏͍͏ը໘Λ࡞Δͷ͓͢͢Ί ‣ 1ޙʮ͋ͷͱ͖ສDLͩͬͨͷʹͳʔʯ ཧը໘
‣ ΞϓϦར༻ࣈ ʢػೳར༻ճɾར༻ɾఆணɾ ɹར༻߹͍ผػೳར༻ɺͳͲɾɾʣ ‣ ֎෦API͔Βऔಘ ‣ ΞϓϦDLɾϨϏϡʔʢAppAnnie͔Βʣ ‣ Ϋϥογϡ
‣ ΞϓϦʹ͍ͭͨϨϏϡʔΛSlackྲྀ͢ ཧը໘
൪֎ฤɿ ར༻͍ͯ͠Δ֎෦αʔϏε
‣ ։ൃ ‣ ΞϓϦϕʔλ൛ ʢTestFlight, DeployGate, fabric betaʣ ‣ ΫϥογϡϩάʢCrashlyticsʣ
‣ λεΫཧʢJIRAʣ ‣ ίʔυϨϏϡʔʢGitHubʣ ‣ ϊϋڞ༗ʢQiita:Team) ར༻͍ͯ͠Δ֎෦αʔϏε
‣ ੳ ‣ ΞϓϦετΞੳʢAppAnnieʣ ‣ ΞΫηεੳʢGoogle Analyticsʣ ‣ ։ൃϝϯόʔ͕Ұ൪ݟ͍ͯΔͷ ʮϦΞϧλΠϜʯ
‣ ίϛχϡέʔγϣϯ ‣ ίϛχϡέʔγϣϯπʔϧʢSlackɾyammerʣ ‣ υΩϡϝϯτʢGoogle DriveʗConfluenceʣ ར༻͍ͯ͠Δ֎෦αʔϏε
ࠓύʔτφʔͷํͱ ͬͯΈͯʁ
͋Γ͕ͱ͏͍͟͝·ͨ͠