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
490
スタートアップのレガシーシステムを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
360
ラズパイマガジン 寄稿ネタDEMO
tomotomo
0
910
PHPでLチカ(PHPカンファレンス2018 懇親会)
tomotomo
0
3.3k
IoTデバイスのつらみ isaaxで解消しましょう
tomotomo
0
120
IoTLT 40回 おめでとう!
tomotomo
2
460
「isaax」を使った PoCからプロダクションまでの開発
tomotomo
0
270
2000年頃のフロントエンド技術
tomotomo
1
10k
WordPressとサーバーとお金の話
tomotomo
0
1.1k
Other Decks in Technology
See All in Technology
Pwned Labsのすゝめ
ken5scal
2
520
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
190
Oracle Database Technology Night #87-1 : Exadata Database Service on Exascale Infrastructure(ExaDB-XS)サービス詳細
oracle4engineer
PRO
1
210
EDRの検知の仕組みと検知回避について
chayakonanaika
12
5.2k
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
320
Amazon Athenaから利用時のGlueのIcebergテーブルのメンテナンスについて
nayuts
0
110
ディスプレイ広告(Yahoo!広告・LINE広告)におけるバックエンド開発
lycorptech_jp
PRO
0
500
AWS Well-Architected Frameworkで学ぶAmazon ECSのセキュリティ対策
umekou
2
150
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
9
2.5k
手を動かしてレベルアップしよう!
maruto
0
240
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
3.9k
4th place solution Eedi - Mining Misconceptions in Mathematics
rist
0
150
Featured
See All Featured
The Invisible Side of Design
smashingmag
299
50k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
GitHub's CSS Performance
jonrohan
1030
460k
Site-Speed That Sticks
csswizardry
4
410
Measuring & Analyzing Core Web Vitals
bluesmoon
6
260
Raft: Consensus for Rubyists
vanstee
137
6.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
A designer walks into a library…
pauljervisheath
205
24k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
GraphQLとの向き合い方2022年版
quramy
44
14k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
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