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
Poiboy改善への道
Search
Daichi Toma
January 23, 2019
Programming
1
940
Poiboy改善への道
Daichi Toma
January 23, 2019
Tweet
Share
More Decks by Daichi Toma
See All by Daichi Toma
さよなら、レガシー画像変換システム
amothic
0
2k
Other Decks in Programming
See All in Programming
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
210
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
610
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1k
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
CSC307 Lecture 06
javiergs
PRO
0
690
AtCoder Conference 2025
shindannin
0
1.1k
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
CSC307 Lecture 04
javiergs
PRO
0
660
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
71
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
79
Site-Speed That Sticks
csswizardry
13
1.1k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Abbi's Birthday
coloredviolet
1
4.8k
Making Projects Easy
brettharned
120
6.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Evolving SEO for Evolving Search Engines
ryanjones
0
130
Transcript
Poiboyվળͷಓ Matching Dev Meetup#2 - ServerSide January 23, 2019 Daichi
TOMA
About Me ᙛᚸ େઍ @Amothic גࣜձࣾ Diverse ϛΫγΟʹ৽ଔೖࣾ͠ɺmixi ϞϯελʔετϥΠ ΫͷαʔόαΠυ։ൃʹैࣄ
ձࣾͷมߋʹ͍ɺגࣜձࣾDiverseʹస੶ ݱࡏPoiboyͷαʔόαΠυΠϯϑϥͷվળΛ ߦͬͯ·͢
Poiboy • Πέϝϯָ͕͘͠ݟ͔ͭΔϚονϯάΞϓϦ • 2016ϦϦʔε • ձһ100ສਓಥഁ
None
20174݄ Poiboyͷ։ൃʹδϣΠϯɾɹɹ
৽͍͠ΞϓϦͳͷʹ ົʹݹΊ͔͍͠ॴ͕ଟ͍
ؤு͔ͬͯ͢͠ͳ͍
՝ࢁੵΈ
Ͳͷॱ൪Ͱ͍͔ͯ͘͠
վળͷಓ
վળͷಓ 1. (ࢲͷ) ։ൃͷΔؾ͕ͳ͘ͳΔݪҼΛվળ 2. ์ஔ͍ͯ͠ΔͱΠϯγσϯτ͕ى͖ΔՕॴͷ վળ 3. ਝʹ։ൃͰ͖ͳ͍ཧ༝Λվળ
վળͷಓ 1. ։ൃڥΛDockerԽ 2. GitHubҠߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏཧΛAnsible 5.
ΦϯϓϨϛε͔Βͷ٫ 6. ৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
վળͷಓ 1. ։ൃڥΛDockerԽ 2. GitHubҠߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏཧΛAnsible 5.
ΦϯϓϨϛε͔Βͷ٫ 6. ৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
։ൃڥͷDockerԽ • ࣮ݩ͔ΒDocker͕ͩͬͨɺ ͳ͔ͥ։ൃڥͷηοτΞοϓʹ1͔͔Δ • DockerΛVMͷΑ͏ʹ͍ͬͯͨͷ͕ݪҼ • DockerVMͰͳ͍ • Ұ൪࠷ॳʹਏ͍ؾ࣋ͪʹͳͬͨͷͰɺ
Ұ൪࠷ॳʹΔ͜ͱʹͨ͠
։ൃڥͷDockerԽ • DockerfileΛ࡞Γ͠ɺDocker Hub ͰࣗಈϏϧυ͢ΔΑ͏ʹ • docker-composeΛ׆༻ɺ1ίϯςφ1αʔϏεʹͳΔΑ͏ʹ ཧ • ϕʔεΠϝʔδʹalpineΛ࠾༻ɺΠϝʔδͷαΠζΛ
3GB → 200MBҎԼʹ (ѹॖαΠζ70MBҎԼ) • ηοτΞοϓʹ1͔͔͍ͬͯͨͷ͕ɺ 15ҎͰऴΘΔΑ͏ʹͳͬͨ
վળͷಓ 1. ։ൃڥΛDockerԽ 2. GitHubҠߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏཧΛAnsible 5.
ΦϯϓϨϛε͔Βͷ٫ 6. ৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
GitHubͷҠߦ • ݩʑϩʔΧϧڥͷGitLabΛར༻͍ͯͨ͠ • ͋Μ·ΓΠέͯΔUXͰͳ͍ (ݸਓͷΈͰ͢) • GitLabΛࣗલͰϝϯς͢Δίετ͕ߴ͍ • OSSͷίʔυେମGitHubʹ͋Δ
GitHubʹ׳Ε͓ͯ͘ϝϦοτΘΓͱ͋Δ
GitHubͷҠߦ • ઌʹGitLab CI͔ΒCircleCIςετΛҠߦ (దͳDockerԽ͞Ε͍ͯΕ؆୯) • CIΛҠͨ͠λΠϛϯάͰશҠߦ • શࣾͰ։ൃʹར༻ͨ͠ίʔυ͕ࣾ֎ʹެ։͞ΕΔ Α͏ʹͳͬͨ
(ݱࡏɺDiverse ͷ Public Repositoryͷ 23ݸ)
վળͷಓ 1. ։ൃڥΛDockerԽ 2. GitHubҠߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏཧΛAnsible 5.
ΦϯϓϨϛε͔Βͷ٫ 6. ৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
DBϚΠάϨʔγϣϯπʔϧͷಋೖ • େྔͷsqlϑΝΠϧ͕ϦϙδτϦʹ ஔ͔Ε͍ͯΔ͚ͩͷঢ়ଶͩͬͨ • Ͳ͜·Ͱద༻͔ͨ͠ద༻͍ͯ͠ͳ͍͔ ͔Βͳ͍ • ઈରͦͷ͏ͪࣄނΔ
DBϚΠάϨʔγϣϯπʔϧͷಋೖ • RidgepoleΛಋೖ • SchemafileʹςʔϒϧఆٛΛॻ͍͓ͯ͘ͱ applyίϚϯυͰөͰ͖Δਆπʔϧ • ႈੑ͕͋Γɺ͍͍͢
վળͷಓ 1. ։ൃڥΛDockerԽ 2. GitHubҠߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏཧΛAnsible 5.
ΦϯϓϨϛε͔Βͷ٫ 6. ৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
ߏཧΛAnsible • ߏཧ͕υΩϡϝϯτʹΑΔਓྗ • Α͋͘Δ͜ͱͳͷͰɺͬ͘͞ͱAnsibleʹ͢Δ • RolesΛ্ख͍͘ɺ࠶ར༻ੑΛߴΊ͓ͯ͘ • ॻ͖ํgeerlingguy͞ΜͷϦϙδτϦΛ ࢀߟʹ͢Δͷ͕ϕετϓϥΫςΟε
(ͩͱࢥ͍ͬͯΔ)
վળͷಓ 1. ։ൃڥΛDockerԽ 2. GitHubҠߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏཧΛAnsible 5.
ΦϯϓϨϛε͔Βͷ٫ 6. ৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
ΦϯϓϨϛε͔Βͷ٫ • ΦϯϓϨϛεͰಈ͍͍ͯͨ (ਖ਼֬ʹϗεςΟϯάαʔϏε) • ґཔ͢ΔͷʹϝʔϧΛ͛ͯɺ2~3ͭ ඞཁ͕͋Δ • Γ͍ͨ͜ͱΛ͑Δͷ͕େม
ΦϯϓϨϛε͔Βͷ٫ • ਝʹɺ࣮ͦͯ֬͠ʹ։ൃ͢ΔͨΊ AWSҠߦΛܾҙ • ͳΔ͘ϑϧϚωʔδυαʔϏεΛ׆༻͠ ҠߦίετԼ͛Δ
ΦϯϓϨϛε͔Βͷ٫ • Ҡߦ͢Δ͖ͷҰཡ • DNS • Image Server • DB
• memcached • App
ΦϯϓϨϛε͔Βͷ٫ DNS • Route 53Λར༻ • ଞ͔Βͷґଘ͕গͳ͍ͷͰҰ൪༰қ • ͔͠͠ࣄނΔͱ࣮֬ʹࢮ͵ͷͰɺ ςετ͔ͬ͠ΓΔ
ΦϯϓϨϛε͔Βͷ٫ Image Server • ը૾ͷΩϟογϡͱมΛߦ͏ઐ༻ͷαʔό ͕ෳ͋ͬͨ • ΩϟογϡͱมΛ͚ͯߟ͑Δ • Ωϟογϡ
→ CloudFront • ม → DockerԽ͠ɺECSͰӡ༻
ΦϯϓϨϛε͔Βͷ٫ DB • ࣗલӡ༻ͷMySQL͔ΒAuroraҠߦ • AWSͰAuroraΛΘͳ͍ཧ༝͕͋·Γͳ͍
ΦϯϓϨϛε͔Βͷ٫ memcached • ී௨ʹElastiCacheΛ͏
ΦϯϓϨϛε͔Βͷ٫ App • ansibleΛͦͷ··͍͔ͨͬͨͷͰEC2 • ࠓͩͬͨΒFargateʹ͍ͯͨ͠ͱࢥ͍·͢ • ਝͳεέʔϧ͕Մೳʹͳͬͨ (ࠓ·Ͱ ͔͔ͬͨ)
ΦϯϓϨϛε͔Βͷ٫ ͦͷଞ • AWSҠߦͯ͠োରԠ͕ѹతʹݮͬͨ • ίετظ͕ؒඇৗʹ͔͔ΔݟࠐΈͩͬͨͷ ͰɺDirectConnectΘͣਂʹ4࣌ؒ΄Ͳ ఀࢭͯ͠શҠߦͨ͠
վળͷಓ 1. ։ൃڥΛDockerԽ 2. GitHubҠߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏཧΛAnsible 5.
ΦϯϓϨϛε͔Βͷ٫ 6. ৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
৫ͷϧʔϧΛม͑Δ (൪֎ฤ) • ίϯΣΠͷ๏ଇ γεςϜΛઃܭ͢Δ৫ɺͦͷߏΛͦͬ ͘Γ·ͶͨߏͷઃܭΛੜΈग़ͯ͠͠·͏ • ৫վળ͢Δ͜ͱͰɺγεςϜΛվળͰ͖Δ ˠ ٯίϯΣΠઓུ
৫ͷϧʔϧΛม͑Δ (൪֎ฤ) • ΞδϟΠϧͳ։ൃ͕͚ͨ͠Ε ΞδϟΠϧͳνʔϜʹ͢Δ • ։ൃ͕৫ʹҾͬுΒΕΔ͜ͱଟ͍ • ٕͦͦज़తෛ࠴͕ཷ·ΔݪҼ ৫ͷ͕େ͖͍
վળͷಓ 1. ։ൃڥΛDockerԽ 2. GitHubҠߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏཧΛAnsible 5.
ΦϯϓϨϛε͔Βͷ٫ 6. ৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
վળͷಓ 1. (ࢲͷ) ։ൃͷΔؾ͕ͳ͘ͳΔݪҼΛվળ 2. ์ஔ͍ͯ͠ΔͱΠϯγσϯτ͕ى͖ΔՕॴͷ վળ 3. ਝʹ։ൃͰ͖ͳ͍ཧ༝Λվળ
վળͷಓ • ্͔ΒཁٻϕʔεͰվળ͕߱Γͯ͘Δ͜ͱ ͋·Γͳ͍ • ࣗࣗͰΛݟ͚ͭɺೳಈతʹղܾͯ͠ ͍͘ඞཁ͕͋Δ • ࠷ۙվળσʔΛઃ͚ͯɺνʔϜΈΜͳͰ ΔΑ͏ʹ͍ͯ͠·͢
Join our team! https://diverse-inc.co.jp/recruit/