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
ホスティングサービスのインフラ環境を再構築!
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Takayuki Yoshioka
June 24, 2020
Technology
4.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ホスティングサービスのインフラ環境を再構築!
Takayuki Yoshioka
June 24, 2020
More Decks by Takayuki Yoshioka
See All by Takayuki Yoshioka
RedmineをAIで効率的に使う検証
yoshiokacb
0
270
AWSで実現する進化する WEBサービス(SaaS)
yoshiokacb
0
84
AWSで実現する進化するWEBサービス(SaaS)の裏話
yoshiokacb
0
200
モノリスウェブアプリケーションのクラウド最適化について - SaaSの運用 -
yoshiokacb
1
1.5k
My Redmine Gen.2を支えるインフラストラクチャー
yoshiokacb
0
2.5k
Scalable structure for AWS
yoshiokacb
1
1.4k
GDG Cloud Shimane #02
yoshiokacb
0
81
GCPUG-Shimane #04 開催レポート
yoshiokacb
0
75
EC2からECSへ移行を始めたお話
yoshiokacb
2
8.2k
Other Decks in Technology
See All in Technology
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
3
270
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
120
企画を Software Factory-ready にする——開発が高速になったとき、PdMの仕事はどう変わったか
yachibit
1
150
freeeにおけるSoftware Factory
freee
PRO
0
320
LLM-as-a-Judgeは本当に信頼できるのか――評価器を評価する話
taka_aki
3
1.1k
Optunaの最新リリースv5.0について
pfn
PRO
0
140
Steerable Visual Representations
sansantech
PRO
0
190
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
320
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
160
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
220
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
190
国際カードブランドルール変更に伴うクレジットカード決済取引仕様変更について
k1style
0
160
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
Testing 201, or: Great Expectations
jmmastey
46
8.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
330
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Exploring anti-patterns in Rails
aemeredith
4
540
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Bash Introduction
62gerente
615
220k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Code Review Best Practice
trishagee
74
20k
Transcript
ϗεςΟϯάαʔϏεͷ ΠϯϑϥڥΛ࠶ߏஙʂ 5BLBZVLJ:PTIJPLB 'BS&OE5FDIOPMPHJFT$PSQPSBUJPO ʙAWS Fargateͷ͓͔͛ͰͤʹͳΕͨʙ
ࣗݾհ
٢Ԭོߦ 5BLBZVLJ:PTIJPLB ॴଐ ϑΝʔΤϯυςΫϊϩδʔʢגʣ ίϛϡχςΟʔ .BUTVFSC εϓϥτSC +"846(4IJNBOF ͖ͳαʔϏε "NQMJGZ
ΞδΣϯμ ߏங ߏਤͷհʢ#FGPSF "GUFSʣ ϙΠϯτ 3FENJOF
3BJMT ͷίϯςφԽ Ϛϧνςφϯτʹ͍ͭͯ ӡ༻ $PEF1JQFMJOF 4UFQ'VODUJPOT .JHSBUJPOͷ࣮ࢪํ๏ ϗεςΟϯάαʔϏεͷΠϯϑϥڥΛ࠶ߏஙʂ
ߏஙͷ .Z3FENJOFͷΠϯϑϥͷ࠶ߏங
w 3FENJOFͷϗεςΟϯάαʔϏεʢ4BB4ʣ w ඦͷ͓٬༷ʹ͝ར༻͍͍͍ͨͩͯΔαʔϏε w 3FE.JDBͱͯ͠ఏڙத ϑΝʔΤϯυςΫϊϩδʔ͕։ൃ͢Δ3FENJOFޓͷσΟετϦϏϡʔγϣϯ 3FENJOFͷ࣍ظόʔδϣϯͷ৽ػೳΛઌߦͯ͠ར༻Ͱ͖·͢ɻ
αʔϏεબఆͷํ ӡ༻ίετΛݮΒ͍ͨ͠ͷͰ ϚωʔδυαʔϏεத৺Ͱߏங͢Δʂ ʢ͓ۚΑΓਓతϦιʔεͷʣ
#FGPSF
AWS Cloud Internet Amazon RDS Proxy Server (EC2) App Server
(EC2) ϗεςΟϯάαʔϏε αʔϏεఏڙதͷγεςϜͳͷͰৄࡉ΅͔͠ؾຯʜ Mail Server (EC2)
"GUFS
SBJMTDPOTPMF SBLFUBTLʜ
࠶ߏஙͷϙΠϯτ ۤ࿑ͨ͠ʹ͍ͭͯ 3FENJOFʢ3BJMTʣͷίϯςφԽ ϚϧνςφϯτͷΞʔΩςΫνϟ
࠶ߏஙͷϙΠϯτ ۤ࿑ͨ͠ʹ͍ͭͯ 3FENJOFʢ3BJMTʣͷίϯςφԽ ϚϧνςφϯτͷΞʔΩςΫνϟ
3FENJOFͰߟྀ͕ඞཁͳ͜ͱ ʢӬଓ͕ඞཁͳσʔλʣ w%#ʢσʔλϕʔεʣ wϩά wఴϑΝΠϧ
%#ʢσʔλϕʔεʣʹ͍ͭͯ 3%4"VSPSB1PTUHSF42-ޓΤσΟγϣϯ
-PHͷѻ͍ 4JEFDBS1BUUFSOʢίϯςφΛೋͭ༻ʣͰ ϩάऩू༻ίϯςφʢqVFOUEʣΛ༻ͯ͠ϩάͷऩू
ఴϑΝΠϧ "NB[PO4 "NB[PO&'4 ΞϓϦέʔγϣϯͷมߋ͕ෆཁ ΞϓϦέʔγϣϯͷมߋ͕ඞཁ ʢϓϥάΠϯͳͲʣ ϥϯχϯάίετ͕͍҆ ϥϯχϯάίετ͕ߴΊ ͦͦ։ൃ࣌'BSHBUFͰ&'4࿈ܞ͕Ͱ͖ͳ͔ͬͨɻ ީิͷൺֱ
ఴϑΝΠϧ ఴϑΝΠϧͷอଘઌΛ4ʹͰ͖Δ 1MVHJOΛ։ൃʢSFENJDB@Tʣ
https://github.com/redmica/redmica_s3
࠶ߏஙͷϙΠϯτ ۤ࿑ͨ͠ʹ͍ͭͯ 3FENJOFʢ3BJMTʣͷίϯςφԽ ϚϧνςφϯτͷΞʔΩςΫνϟ
ϗεςΟϯάαʔϏε ʢ4BB4ʣ ϏδωεϞσϧͷ γϯάϧςφϯτΑΓϚϧνςφϯτͰ୯ՁΛ͍͑ͨ ʢސ٬αʔόݫ͍͠ɻෳͷސ٬ͰαʔόΛڞ༗͢Δʣ
͓٬͞Μ͝ͱʹ&$4ͷ4FSWJDFΛىಈ ʢސ٬4FSWJDFʣ ಉ͡ίϯςφΠϝʔδΛ͏͜ͱͰίʔυΛڞ௨Խ ߏྫ̍ ίετͷϝϦοτ͕ͳ͍ɻ λεΫఆٛΛސ٬͝ͱʹཧ͢Δͷඍົ
ཧ͢ΔͷͳΔ͘গͳ͍ͨ͘͠
ΞϓϦέʔγϣϯͰରԠΛ͢ΔͨΊʹ "QBSUNFOUʢ(FNʣͷར༻ݕ౼ IUUQTHJUIVCDPNJOqVJUJWFBQBSUNFOU ߏྫ̎ "QBSUNFOUͷϝϯςφϯε NJHSBUJPOؔ࿈Ͱ৭ʑͱͭΒΈ͕ग़ͦ͏ ϝϯςφϯε͕ෆ҆
࠷ऴతͳ࣮ํ๏ "QBDIF 1BTTFOHFSΛબ ϓϩηε͝ͱʹڥมΛସ͑Δʂ "QBDIFͷ7JSUVBM)PTUΛͬͯɺϓϩηε͝ͱʹڥมΛઃఆͯ͠ɺ ଓ͢Δ%#ɺετϨʔδΛΓସ͑ͨΒͰ͖ΔͷͰʁʁ
ߏਤ
ߏਤ %PDLFSىಈ࣌ʹ4͔Β ڥมͷใΛऔಘ
db: name: [db_name] user: [user_name] password: [password] s3: bucket: [user_bucket]
folder: [user_folder] property: sub_domain: [sub_domain] limit_ips: - ‘192.168.xx.xx' - '192.168.xx.xx' ઃఆใ4ʹอଘ ˞αϯϓϧΠϝʔδ
ߏਤ %PDLFSىಈ࣌ʹ4͔Β ڥมͷใΛऔಘ
$POGϑΝΠϧΛੜ ˞αϯϓϧΠϝʔδ <VirtualHost *:80> ServerName siteA.example.jp DocumentRoot /var/lib/siteA/public RailsEnv production
PassengerEnabled on SetEnv RAILS_DB db001 SetEnv RAILS_DB_USERNAME dbuser001 SetEnv RAILS_DB_PASSWORD xxxxxxxx SetEnv S3_FOLDER_NAME user001 ... </VirtualHost>
ߏਤ %PDLFSىಈ࣌ʹ4͔Β ڥมͷใΛऔಘ 4JUF"ΞΫηε
3FENJOFͷઃఆϑΝΠϧͷมߋ # database.yml production: adapter: postgresql database: <%= ENV['RAILS_DB'] %>
username: <%= ENV['RAILS_DB_USERNAME'] %> password: <%= ENV['RAILS_DB_PASSWORD'] %> host: <%= ENV['RAILS_DB_HOST'] %> # s3.yml production: bucket: <%= ENV['S3_BUCKET_NAME'] %> folder: <%= ENV['S3_FOLDER_NAME'] %> ˞αϯϓϧΠϝʔδ
ߏਤ %PDLFSىಈ࣌ʹ4͔Β ڥมͷใΛऔಘ 4JUF"ΞΫηε
4FSWJDF͋ͨΓαΠτΛ҆ʹӡ༻த
ར༻αʔϏεʹ͍ͭͯ 2ͳͥ&$4ʁɹ,VCFSOFUFTʢ&,4ʣʁ w ϓϩδΣΫτ͕ελʔτͨ͠ɺ݄ ࣌ɺ&,4౦ژϦʔδϣϯͳ͔ͬͨɻ w &,4ͷΫϥελʔྉ͕ۚߴ͔ͬͨɻ 2&$Ͱͳ͘'BSHBUFΛͬͯΔཧ༝ w &$ͷཧ໘ɻʢϦιʔεͷܭࢉʣ
'BSHBUF ϝϦοτ σϝϦοτ αʔόʹೖΕͳ͍͜ͱɻ ཧίετ͕͍ɻ ͪΐͬͱߴ͍ɻʢ&$ͱൺֱͯ͠ʣ αʔόʹೖΔඞཁ͕ͳ͍ɻ ো࣌ͷௐࠪൣғΛݶఆͰ͖Δɻ
'BSHBUF ϩάΠϯճආ๏ &$4ʢ&$λΠϓʣಉ࣌ ʹىಈ͓ͯ͘͠ &-#ʢ"-#ʣͰϩάΛΈ͍ͨ ಛఆͷαΠτΛ&$Ͱىಈ͠ ͍ͯΔ&$4ϧʔςΟϯά
&$44)ͰϩάΠϯͰ͖Δ
ӡ༻ʹ͍ͭͯ
$PEF1JQFMJOF ΞϓϦέʔγϣϯͷσϓϩΠʹར༻
None
4UFQ'VODUJPOT ϗεςΟϯάαʔϏεʢ4BB4ʣͷཧʹ༻
%PDLFSͷߏͷ
%PDLFSͷߏͷ … if [ $DB_CREATE = 'true' ]; then bundle
exec rake db:create fi if [ $DB_MIGRATE = 'true' ]; then bundle exec rake db:migrate bundle exec rake redmine:plugins fi … b&/503:10*/5`ʹ%#ઃఆܥͷίϚϯυΛ͋Β͔͡ΊࠐΜͰ͓͘ FOUSZQPJOUTI
%PDLFSͷߏͷ "NB[PO-BNCEB task_prop = { cluster: cluster_name, task_definition: task_def_name, launch_type:
"Fargate", overrides: { container_overrides: [ { name: [redmine_container_name], command: [ "rake", "redmine:load_default_data"], environment: [ { name: "RAILS_DB", value: db }, { name: "RAILS_DB_USERNAME", value: user }, { name: "RAILS_DB_PASSWORD", value: password }, { name: "DB_CREATE", value: 'true'}, { name: "DB_MIGRATE", value: 'true'}, ] }, ], }, network_configuration: network_config, } client = Aws::ECS::Client.new() client.run_task(task_prop) ࡞ࡁΈͷ5BTL%FpOJUJPOΛར༻ͯ͠ ৽نొɺ.JHSBUJPOͷ࣮ߦͳͲ͕Ͱ͖Δɻ
˞αϯϓϧ
αʔϏεΞΧϯτͷ৽نొ ˞αϯϓϧ
αʔϏεΞΧϯτͷઃఆมߋ ˞αϯϓϧ
αʔϏεΞΧϯτͷαϒυϝΠϯมߋ ˞αϯϓϧ
αʔϏεఀࢭ σʔλআ ˞αϯϓϧ
.JHSBUJPO 3BJMTͷ`SBJMTECNJHSBUF`ΛͲ͏࣮ͬͯߦ͢Δ͔
None
4UFQ'VODUJPOT αΠτͷ͚ͩSBLFECNJHSBUFΛฒྻ࣮ߦ
·ͱΊ
·ͱΊ Ϛϧνςφϯτͷ࣮ํ๏ɻ
ߏਤ
·ͱΊ Ϛϧνςφϯτͷ࣮ํ๏ɻ &$λΠϓͷซ༻ɻ
'BSHBUF ϩάΠϯճආ๏ &$4ʢ&$λΠϓʣಉ࣌ ʹىಈ͓ͯ͘͠ &-#ʢ"-#ʣͰϩάΛΈ͍ͨ ಛఆͷαΠτΛ&$Ͱىಈ͠ ͍ͯΔ&$4ϧʔςΟϯά
&$44)ͰϩάΠϯͰ͖Δ
·ͱΊ Ϛϧνςφϯτͷ࣮ํ๏ɻ &$λΠϓͷซ༻ɻ όονॲཧʢNJHSBUJPO SBLFUBTLʣͳͲͷฒྻ࣮ߦɻ
4UFQ'VODUJPOT αΠτͷ͚ͩSBLFECNJHSBUJFΛฒྻ࣮ߦ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ