Speaker Deck
Speaker Deck Pro
Sign in
Sign up
for free
スタートアップのレガシーシステムをAws活用で改善している話
Tomoyuki Sugita
April 21, 2016
Technology
0
420
スタートアップのレガシーシステムをAws活用で改善している話
第2回 関西スタートアップAWS勉強会
2016-04-21(木)18:30 - 21:30
https://kansaistartupaws.doorkeeper.jp/events/41786
Tomoyuki Sugita
April 21, 2016
Tweet
Share
More Decks by Tomoyuki Sugita
See All by Tomoyuki Sugita
tomotomo
0
370
tomotomo
0
2.1k
tomotomo
0
68
tomotomo
2
370
tomotomo
0
200
tomotomo
1
7.5k
tomotomo
0
540
Other Decks in Technology
See All in Technology
iqbocchi
0
520
shimacos
2
290
110y
3
690
shotakashihara
1
1.3k
awsbelaraby
4
1.1k
zaki134rp
1
180
kaga
0
190
yuhta28
1
200
ray_30cm_ns
0
280
pinboro
0
1.9k
torisoup
0
270
tsuyo
0
180
Featured
See All Featured
vanstee
116
4.8k
garrettdimon
287
110k
reverentgeek
168
7.1k
sachag
267
17k
destraynor
146
19k
yeseniaperezcruz
302
31k
addyosmani
1348
190k
marcelosomers
220
15k
colly
66
3k
cherdarchuk
71
260k
mongodb
23
3.8k
pauljervisheath
196
15k
Transcript
ελʔτΞοϓͷϨΨγʔγ εςϜΛAWS׆༻Ͱվળͯ͠ ͍Δ ୈ2ճ ؔελʔτΞοϓAWSษڧձ 2016-04-04 Thu @ άϩʔόϧϕϯνϟʔϋϏλοτେࡕ ΫοΫϏζגࣜձࣾ
ਿా ࢸ 1
ࣗݾհ • ਿా ࢸɹ@tomotomobile • ΫοΫϏζגࣜձࣾɹ։ൃ෦ • Project Management, Growth
hack, Recruiting • WordPress contributor, CoderDojo Umeda 2 < ࠙ձLT͠·ͨ͠
ܦྺհ • ֶੜىۀʢWeb੍࡞ʣ • ഇۀˍແ৬ • Web੍࡞ձࣾۈ • ΫοΫϏζೖࣾ 3
AWSͷཧతͳ͍ํͰͳ͍͔͠Ε·ͤΜ ϨΨγʔγεςϜͱ͖߹͏্ͰAWS͕ ͲͷΑ͏ʹཱͭͷ͔ࢀߟʹͳΕ͍Ͱ͢ 4
ΞδΣϯμ • ΫοΫϏζͷհ • ݱࡏͷ։ൃελΠϧ • ݱࡏʹࢸΔ·Ͱͷվળ • ͍ͬͯΔ՝ •
·ͱΊ 5
ӡ༻தͷWebαʔϏε ҿ৯ɾϑʔυؔ࿈ۀಛԽͷٻਓαΠτ ʮΫοΫϏζʯ ۀʹ;ΕͯɾֶΜͰɾࣄʹ͢Δ ʮϑΝʔϜϏζʯ ϑʔυؔ࿈ϋΠΫϥεٻਓʮϑʔδΣϯτʯ ҿ৯ਓࡐͷϓϩʹΑΔ"৯"ͷΩϡϨʔγϣϯαΠτ ʮΫοΫϏζ૯ݚʯ 6
ӡ༻தͷεϚʔτϑΥϯΞϓϦ 7
Foodion (ϑʔδϣϯ) https://foodion.net/ 04/21 Released 8
ΞΫηεɹ300%UP ʢhttp://cookbiz.jp ୯ମʣ
5ਓҎԼ 6ʙ30ਓ 31ʙ50ਓ 51ʙ99ਓ 100ਓҎ্ 10ԯԁҎ্ େձࣾ 7ԯԁҎ্ தձࣾͷେ 4ԯԁҎ্
தձࣾͷத 4ઍສԁҎ্ தձࣾͷখ 4ઍສԁະຬ খձࣾ ձࣾنʢখചɾαʔϏεʣ 1લ͜ͷΜ ※ඇ্גࣜͷձࣾنͷఆʢ̨̢̗̘ڵূ݊ʣ http://www.smbcnikko.co.jp/corporate/mnr/buyback/buy03.htmlɹ 10
5ਓҎԼ 6ʙ30ਓ 31ʙ50ਓ 51ʙ99ਓ 100ਓҎ্ 10ԯԁҎ্ େձࣾ 7ԯԁҎ্ தձࣾͷେ 4ԯԁҎ্
தձࣾͷத 4ઍສԁҎ্ தձࣾͷখ 4ઍສԁະຬ খձࣾ ձࣾنʢখചɾαʔϏεʣ ※ඇ্גࣜͷձࣾنͷఆʢ̨̢̗̘ڵূ݊ʣ http://www.smbcnikko.co.jp/corporate/mnr/buyback/buy03.htmlɹ 11
ΞδΣϯμ • ΫοΫϏζͷհ • ݱࡏͷ։ൃελΠϧ • ݱࡏʹࢸΔ·Ͱͷվળ • ͍ͬͯΔ՝ •
·ͱΊ 12
ΫοΫϏζͷ։ൃڥ͜Μͳײ͡ • ݴޠɿPHP5.6 / DBɿMySQL5.5 • PCɿMac / IDEɿPhpStorm •
ϑϨʔϜϫʔΫɿΦϦδφϧ / Yii1 / Yii2 • ςετϑϨʔϜϫʔΫɿCodeception • VMɿVagrant + Ansible • αʔόʔɿAWS EC2 + RDS 13
ͱ͋Δ৽نαʔϏεͩͱ͜Μͳײ͡ • ݴޠɿPHP5.6 / DBɿMySQL5.7 + NoSQL • PCɿMac /
IDEɿPhpStorm • ϑϨʔϜϫʔΫɿZendFramework2 • αʔόʔɿAWS EC2 + S3 + RDS + DynamoDB + SES • ςετͱVMݕ౼த 14
։ൃϝϯόʔ 15 cook+biz farm+biz αʔόʔ ϑϩϯτ σβΠϯ ΞϓϦ σβΠϯ αʔόʔ
΅͘ ϩϘ 14໊ʴ1ϩϘ https://cacoo.com/store/items/10023
શϓϩδΣΫτΛεΫϥϜ։ൃͰ • Sprint : 2िؒ • ִि༵ʹRelease • Կ͔͕߹༵ͬͯۚ·ͰʹରԠͰ͖ΔΑ͏ʹ •
લਫ༵Review Day • ͯ͢ͷfeature / bugfix Λ։ൃϝϯόʔ͕ϨϏϡʔ 16
εΫϥϜ։ൃͱ εΫϥϜ (ιϑτΣΞ։ൃ) εΫϥϜʢӳ: Scrumʣɺ ιϑτΣΞ։ൃʹ͓͚Δ෮తͰਐతͳΞδϟΠϧ ιϑτΣΞ։ൃख๏ͷ1ͭͰ͋Δɻ ͜ͷํ๏ʮॊ ೈ͔ͭશਓతͳϓϩμΫτ։ൃετϥςδʔͰ͋Γɺڞ ௨ͷΰʔϧʹ౸ୡ͢ΔͨΊɺ։ൃνʔϜ͕Ұମͱͳͬͯ
ಇ͘͜ͱʯͱ͞ΕΔɻ 2 weeks https://en.wikipedia.org/wiki/Scrum_(software_development) 17
2छྨͷσΠϦʔεΫϥϜ • ։ൃνʔϜ • શϝϯόʔ͕ɺલͬͨ͜ͱ/ࠓΔ͜ͱ/ࠔͬͯ Δ͜ͱΛڞ༗ • ϓϩδΣΫτνʔϜ • ։ൃͰ໎ͬͯΔ͜ͱɺӡ༻Ͱ໎ͬͯΔ͜ͱΛڞ༗
• POࢀՃͯ͠Δʂ 18
ϢχʔΫͳϧʔϧ Review Day Releaseલɺͯ͢ͷfeature / bugfix Λ։ൃϝϯόʔ͕ ϨϏϡʔ͢Δɻͦͷɺ։ൃऀ։ൃͰ͖ͳ͍ɻ • ͲΜͳ͜ͱΛ͢Δͷ͔ʁ
• ಈ࡞ϨϏϡʔ / ίʔυϨϏϡʔ / ϑϦʔσόοά • ༷௨ΓͰ͖ͯΔ͚ͲվળͰ͖Δͷࢦఠ • ։ൃڥͷվળ 19
Gitͷӡ༻ϧʔϧ • feature • ػೳՃɺػೳมߋ • bugfix • όάͷमਖ਼ •
hotfix • ۓٸͰमਖ਼͠ͳ͚ΕͳΒͳ͍όά • bizReq • ςΩετը૾मਖ਼ɾGrowthHackͳͲϏδωεཁٻ(Business Requirement) 20
ΞδΣϯμ • ΫοΫϏζͷհ • ݱࡏͷ։ൃελΠϧ • ݱࡏʹࢸΔ·Ͱͷվળ • ͍ͬͯΔ՝ •
·ͱΊ 21
Program HTML Javascript Server Server Database Database Program HTML Mail
https://pixabay.com/ja/%E3%82%B9%E3%83%91%E3%82%B2%E3%83%83%E3%83%86%E3%82%A3-napolitana-%E3%82%B9%E3%83%91%E3%82%B2%E3%83%83%E3%83%86%E3%82%A3-%E9%A3%9F%E5%93%81-%E7%9A%BF-83745/ 22
࢛ͷޒͷݴΘͣʹGitಋೖ͠·͠ΐ͏ • ͍ͭɺͩΕ͕ɺͲ͜ʹɺͲΜͳมߋΛՃ͑ͨͷ͔ ͯ͢ͷϩά͕͑ΔΑ͏ʹͳΓ·͢ • Git = Ӧۀใ 23 https://github.com/qw3rtman/git-fire
FTP͔͑͠ͳͯ͘Gitಋೖͨ͠ํ͕͍͍Α # αʔόʔʹফ͠ΕͨϑΝΠϧ͕͍ͬͺ͍͋ΔΑ(´ʀωʀʆ) # master ͱͷࠩͰআ͞ΕͨϑΝΠϧͷΈநग़ $ git diff --name-status
master|grep "^D" > diffs.txt # Ξοϓϩʔυ͠ΕͨϑΝΠϧ͕͔Βͳ͍(´ʀωʀʆ) # master ͱͷࠩϑΝΠϧΛuploadsϑΥϧμʹநग़ $ git diff --name-only master | git checkout-index --prefix=uploads/ --stdin 24 ͜Ε͚ͩͰΞοϓϩʔυָ͕ʹͳΓ·͢
Ұ෦Ͱྑ͍͔ΒϑϨʔϜϫʔΫԽ • ٕज़తෛ࠴ͷτʔλϧฦࡁίετ૿͑Δ • ελʔτΞοϓʹۚ࣌ؒΓͳ͍ • શ෦Ұؾʹஔ͖͑ΔͷṶ͔͔ͬͯΒΕྑ͍ 25
WBS๒ͷܸΛड͚AWSҠߦΛܾఆ • େखΦϯϓϨϛεܕαʔόΛར༻ • WBS์ૹʹΑΓ12࣌ؒҎ্ αʔόʔʹΞΫηεग़དྷͳ͍ঢ়گ • AWSͷҠߦ͕࠷༏ઌࣄ߲ʹͳͬͨ 26
Ҡߦ४උͱͯ͠σϓϩΠεΫϦϓτ࡞Γ·ͨ͠ • Git͔ΒAWSʹιʔείʔυΛPull+Buildͯ͠ެ։ྖҬʹrsync • Ξοϓϩʔυ͞Εͨը૾ɺDBΛrsyncͰసૹ • GitೖΕͱ͍ͯΑ͔ͬͨʂʂ 27 Code Image
& DB Code
ҠߦͷϦϋʔαϧೖ೦ʹɺςετڥฤ • ༧ΊDNSR53ʹมߋ • Amazon LinuxͰίʔυ͕ಈ͔͘ςετ • ಈ͔ͳ͍෦मਖ਼͓ͯ͘͠ 28
ҠߦͷϦϋʔαϧೖ೦ʹɺຊ൪ڥฤ • (࣌ͷ)ཧతͳߏΛ࡞Δ • σϓϩΠεΫϦϓτͰσϓϩΠ ͕͋Εमਖ਼ • RDSͷTimezone͕UTCͩͱؾ͖ͮ ΞϓϦέʔγϣϯΛमਖ਼ (ݱࡏTimezoneબͰ͖·͢)
• ຊ൪ҠߦͷखॱΛॻ͖ग़͠ɺҠߦॱ൪ʹ࣮ߦ͢ Δ͚ͩͷঢ়ଶʹ͓ͯ͘͠ 29
͍͟ɺΓସ͑ • EC2ͰϝϯςφϯεαΠτΛ্ཱͪ͛Δ • Route53Ͱຊ൪υϝΠϯΛϝϯςαΠτʹ͚Δ • ҠߦલαʔόͷcronΛࢭΊΔ • Ҡߦલαʔόͷϩά͕ಈ͔ͳ͘ͳΔͷΛͭ •
ը૾ͷࠩΛrsyncͰऔಘɺDBΛΠϯϙʔτ • ಈ࡞ݕূͯ͠ɺؒόονΛ࣮ߦɺcronઃఆ • Route53Ͱຊ൪υϝΠϯΛ৽αʔόʹ͚Δ 30
͍͟ɺΓସ͑ • EC2ͰϝϯςφϯεαΠτΛ্ཱͪ͛Δ • Route53Ͱຊ൪υϝΠϯΛϝϯςαΠτʹ͚Δ • ҠߦલαʔόͷcronΛࢭΊΔ • Ҡߦલαʔόͷϩά͕ಈ͔ͳ͘ͳΔͷΛͭ •
ը૾ͷࠩΛrsyncͰऔಘɺDBΛΠϯϙʔτ • ಈ࡞ݕূͯ͠ɺؒόονΛ࣮ߦɺcronઃఆ • Route53Ͱຊ൪υϝΠϯΛ৽αʔόʹ͚Δ 31
͍͟ɺΓସ͑ • EC2ͰϝϯςφϯεαΠτΛ্ཱͪ͛Δ • Route53Ͱຊ൪υϝΠϯΛϝϯςαΠτʹ͚Δ • ҠߦલαʔόͷcronΛࢭΊΔ • Ҡߦલαʔόͷϩά͕ಈ͔ͳ͘ͳΔͷΛͭ •
ը૾ͷࠩΛrsyncͰऔಘɺDBΛΠϯϙʔτ • ಈ࡞ݕূͯ͠ɺؒόονΛ࣮ߦɺcronઃఆ • Route53Ͱຊ൪υϝΠϯΛ৽αʔόʹ͚Δ 32
AWSͷҠߦͬͯΈͯؾ͍ͮͨ͜ͱ • σϓϩΠεΫϦϓτศར • Ϧϋʔαϧେࣄ • 2ճҐϦϋʔαϧͰ͖ΔͱෆଌͷࣄଶΛආ͚ΒΕΔ • ҎޙɺϦϦʔεϦϋʔαϧ͕ఆணͨ͠ •
Route53͛͢ʔ 33
͠Β͘ฏԺͳʑ͕ଓ͖ ։ൃϝϯόʔ૿һɺ։ൃྗ্͕͕Δ 34
ϦϦʔε͢Δͨͼʹόά͕ग़Δ҉ࠇ࣌ • ։ൃΛੵۃతʹ͢ΔΑ͏ʹͳΓϦϦʔεճ͕૿͑ͨ • ϦϦʔεͯ͠όάमਖ਼ʹΘΕɺεέδϡʔϧ͕࣍ʑ ʹഁ • εέδϡʔϧ͕ϠόΠͷͰɺߋʹ࣭͕ѱԽ શʹෛͷεύΠϥϧʂʂ 35
όάݮͱ্࣭ͷͨΊʹͬͨ͜ͱ • ΧϯόϯํࣜˠεΫϥϜ։ൃ • UIςετͷಋೖ 36
Χϯόϯํ͔ࣜΒεΫϥϜ։ൃ • ͦΕ·Ͱɺͨ͠ίʔυ͔Βॱ࣍σϓϩΠ͍ͯͨ͠ ͷΛ1िؒεϓϦϯτͷεΫϥϜ։ൃʹมߋ • Review DayΛಋೖ (Releaseલɺͯ͢ͷfeature / bugfix
Λ։ൃϝϯόʔ͕ϨϏϡʔ͢Δɻ) • ݁Ռɺ։ൃʹϦζϜ͕ੜ·Εɺશһ͕࣭ʹҙࣝΛ ͚Δ͜ͱ͕ग़དྷɺεέδϡʔϧ่͕Εʹ͘͘ͳͬͨ 37
εΫϥϜ։ൃͬͯΈͯؾ͍ͮͨAWSརศੑ • εςʔδϯάڥ͕ ඞཁͳͷਫ༵͚ͩ • Ր༵༦ํɺEC2+RDSΛى ಈͯ͠ɺσϓϩΠ • ਫ༵ɺEC2+RDSΛఀࢭ •
εςʔδϯάڥͷ ίετΛ1/7ʹઅ 38
Codeception+SeleniumͰUIςετ • ϨΨγʔγεςϜςετίʔυ͕ ॻ͚ͳ͍ • ϒϥβΛૢ࡞ͯ͠ɺಈ࡞͕ਖ਼͍͠ ͔Ͳ͏͔ͷςετΛࣗಈԽ • ػೳมߋޙͷσάϨνΣοΫ͕༰қ ʹͳΓ·ͨ͠
39 http://www.slideshare.net/ FlorentBatard/php-kansai-phpkansai ৄͪ͘͜͠Β
Codeception+SeleniumͰUIςετ • jQueryͷهड़ͷΑ͏ͳΘ͔Γ͢͞ 40
None
UIςετֻ͕͔࣌ؒΔͷͰࣗಈͰ • ςεταʔόʔʹPushͯ͠ ຖ൩ࣗಈͰςετ • RDSͷεφοϓγϣοτ͔Β σʔλϕʔεΛຖϦηοτ 42 ϩϘ
εΫϥϜͱAWS૬ੑ͕ྑ͍Ͷ • ඞཁͳͱ͖ʹඞཁͳ͚ͩαʔόʔΛ༻ҙͰ͖Δ • εΫϥϜͩͱ͍ͭඞཁͳͷ͔͕໌֬ • ΄ͱΜͲͷαʔόϦιʔεΛAPIͰૢ࡞Ͱ͖Δ • αʔόઃఆʹࣦഊͯ͠εφοϓγϣοτ͔Β͙͢෮ ݩͰ͖Δ
43
ΞδΣϯμ • ΫοΫϏζͷհ • ݱࡏͷ։ൃελΠϧ • ݱࡏʹࢸΔ·Ͱͷվળ • ͍ͬͯΔ՝ •
·ͱΊ 44
AWS API͕ඇಉظͳͷͰͪΐͬͱ͚ͩࠔͬͯΔ • εςʔδϯάڥͷىಈΛεέδϡʔϧ࣮ߦ • ΠϯελϯεىಈޙͷϑΟʔυόοΫ͕དྷͳ͍ͷͰɺͦ ΖͦΖ͔ͳʙͱ͍͏λΠϛϯάͰ͍߹ΘͤͯΔ • Lambda͑ྑ͍ͷ͔ͳʁ 45
ϩϘ Πϯελϯεىಈͯ͠ ىಈͰ͖ͨʁ ϩϘ
εέʔϧͷ՝ 46 S3͕ډͳ͍
ը૾Ξοϓϩʔυઐ༻ͷϥΠϒϥϦ࡞Γ·͠ΐ͏ • ΞϓϦέʔγϣϯͷ͋ͪͪ͜ʹ͜Μͳίʔυ͕͋Δͱ Ϡόա͗Δɻ • ΞοϓϩʔυআҰՕॴͰཧ͠·͠ΐ͏ɻ 47 move_uploaded_file( $_FILES['file']['tmp_name'], './image.jpg');
DBͷI/O͕ϠόΠ • EC2RDSCPUͱϝϞϦ༨༟ͳͷʹɺI/OͰ٧·ͬ ͯ͠·͏ • AuroraͬͯΈ͍ͨͶɺ·ͣMySQL5.6ʹ্͛ͳ͍ͱ • ͍ͬͯ͏͔ΞϓϦέʔγϣϯͷίʔυͰվળͰ͖Δ͔ 48 https://ja.wikipedia.org/wiki/%E5%A4%A7%E5%90%8D%E8%A1%8C%E5%88%97
ͬͯΔ՝Λղܾͯ͘͠ΕΔΤϯδχΞืूத http://recruit.cookbiz.co.jp/
WantedlyͰืूͯ͠·͢ 50
ΞδΣϯμ • ΫοΫϏζͷհ • ݱࡏͷ։ൃελΠϧ • ݱࡏʹࢸΔ·Ͱͷվળ • ͍ͬͯΔ՝ •
·ͱΊ 51
ϨΨγʔγεςϜΛAWS׆༻Ͱվળ͍ͯ͠Δ • αʔό؆୯ʹཱͯΒΕΔͷͰɺϦϋʔαϧΛೖ೦͠ ·͠ΐ͏ • εΫϥϜࣗಈԽΛಋೖ͢ΔͳΒɺAPIͰαʔόΛૢ࡞ Ͱ͖ΔAWS͕ͽͬͨΓ • ࠓͷΑ͏ͳษڧձͰৄ͍͠ਓʹ૬ஊ͠·͠ΐ͏ •
ؔʹਗ਼ਫ͞Μ͕͍·͢ɻ૬ஊ͠·͠ΐ͏ 52
Enjoy development!! ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 53