Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スタートアップのレガシーシステムをAws活用で改善している話
Search
Tomoyuki Sugita
April 21, 2016
Technology
0
510
スタートアップのレガシーシステムを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
1
390
ラズパイマガジン 寄稿ネタDEMO
tomotomo
0
940
PHPでLチカ(PHPカンファレンス2018 懇親会)
tomotomo
0
3.3k
IoTデバイスのつらみ isaaxで解消しましょう
tomotomo
0
130
IoTLT 40回 おめでとう!
tomotomo
2
480
「isaax」を使った PoCからプロダクションまでの開発
tomotomo
0
290
2000年頃のフロントエンド技術
tomotomo
1
10k
WordPressとサーバーとお金の話
tomotomo
0
1.1k
Other Decks in Technology
See All in Technology
UIテスト自動化サポート- Testbed for XCUIAutomation practice
notoroid
0
110
Observability в PHP без боли. Олег Мифле, тимлид Altenar
lamodatech
0
280
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
150
Windows 11 で AWS Documentation MCP Server 接続実践/practical-aws-documentation-mcp-server-connection-on-windows-11
emiki
0
720
原則から考える保守しやすいComposable関数設計
moriatsushi
3
500
白金鉱業Meetup_Vol.19_PoCはデモで語れ!顧客の本音とインサイトを引き出すソリューション構築
brainpadpr
2
490
Workflows から Agents へ ~ 生成 AI アプリの成長過程とアプローチ~
belongadmin
3
170
Абьюзим random_bytes(). Фёдор Кулаков, разработчик Lamoda Tech
lamodatech
0
280
rubygem開発で鍛える設計力
joker1007
1
120
Clineを含めたAIエージェントを 大規模組織に導入し、投資対効果を考える / Introducing AI agents into your organization
i35_267
4
1.4k
ObsidianをMCP連携させてみる
ttnyt8701
2
140
第9回情シス転職ミートアップ_テックタッチ株式会社
forester3003
0
150
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
A better future with KSS
kneath
239
17k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
The Invisible Side of Design
smashingmag
299
51k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Facilitating Awesome Meetings
lara
54
6.4k
Building Adaptive Systems
keathley
43
2.6k
A Tale of Four Properties
chriscoyier
160
23k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
GraphQLとの向き合い方2022年版
quramy
46
14k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
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