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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
260
AWSで実現する進化する WEBサービス(SaaS)
yoshiokacb
0
80
AWSで実現する進化するWEBサービス(SaaS)の裏話
yoshiokacb
0
190
モノリスウェブアプリケーションのクラウド最適化について - 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
79
GCPUG-Shimane #04 開催レポート
yoshiokacb
0
75
EC2からECSへ移行を始めたお話
yoshiokacb
2
8.2k
Other Decks in Technology
See All in Technology
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
260
オブザーバビリティを高める AI エージェント体験を考える / Designing AI Agent Experiences That Enhance Observability
aoto
PRO
2
220
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
2
180
SDDの運用にめげずに向き合った話
sansantech
PRO
0
110
インバスケット試験対策アプリを 作って見えたAIエージェント構築 ナレッジ2選
shichijoyuhi
1
110
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
220
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
140
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
18
14k
Meet AgentCore Identity Consent Portal
hironobuiga
3
160
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
420
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
390
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
370
Featured
See All Featured
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
900
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Google's AI Overviews - The New Search
badams
0
1.6k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
320
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
760
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
710
How GitHub (no longer) Works
holman
316
150k
Building AI with AI
inesmontani
PRO
1
1.3k
The Limits of Empathy - UXLibs8
cassininazir
1
700
How Software Deployment tools have changed in the past 20 years
geshan
2
34k
Designing Powerful Visuals for Engaging Learning
tmiket
1
590
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
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Λฒྻ࣮ߦ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ