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
デプロイのたびに障害が起こるシステムを安全にした話
Search
OMOTO Kenji
November 22, 2018
Programming
0
2.4k
デプロイのたびに障害が起こるシステムを安全にした話
Sansan×M3 Tech Night ~レガシーシステムに立ち向かえ!~
OMOTO Kenji
November 22, 2018
Tweet
Share
More Decks by OMOTO Kenji
See All by OMOTO Kenji
Micro editor
doloopwhile
0
75
なぜCLIツールはGoで書くべきなのか? Go beyond Python
doloopwhile
7
7.7k
Other Decks in Programming
See All in Programming
エラーって何種類あるの?
kajitack
5
320
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
330
Result型で“失敗”を型にするPHPコードの書き方
kajitack
4
520
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
260
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
590
WebViewの現在地 - SwiftUI時代のWebKit - / The Current State Of WebView
marcy731
0
100
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
320
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
240
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.7k
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
230
童醫院敏捷轉型的實踐經驗
cclai999
0
200
エンジニア向け採用ピッチ資料
inusan
0
170
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Bash Introduction
62gerente
614
210k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
How to train your dragon (web standard)
notwaldorf
94
6.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
BBQ
matthewcrist
89
9.7k
Designing for humans not robots
tammielis
253
25k
Automating Front-end Workflow
addyosmani
1370
200k
Become a Pro
speakerdeck
PRO
28
5.4k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
RailsConf 2023
tenderlove
30
1.1k
Transcript
σϓϩΠͷͨͼʹো͕ى͜ΔγεςϜΛ ҆શʹͨ͠ Sansan×M3 Tech Night ʙϨΨγʔγεςϜʹཱ͔ͪ͑ʂʙ M3 খຊ݈࢘
• ϓϩάϥϚʔ̒ / ΤϜεϦʔ̏ • ΤϜεϦʔͰɺج൫։ൃνʔϜ • ෳࣄۀͰ༻͢ΔαʔϏεͷ։ൃɾӡ༻ •
ࣾͷ։ൃڥͷվળ • ϓϩάϥϛϯάݴޠ: Python, Ruby, Java, Kotlin, Scalaʢͭ·Γશͯʣ খຊ݈࢘ʢ͓ͱ͚Μ͡, doloopwhileʣ
ϝʔϧίϯγΣϧδϡ • ͷձһ͚ϝϧϚΨ৴γεςϜ • Ruby on Rails • ߴػೳʢ։෧ܭଌɺA/BςετɺαʔϏεؒ࿈ܞͳͲʣ
• ຖ݄500ສ௨Ҏ্ͷϝʔϧΛૹ৴ • ॏཁͳϨΨγʔγεςϜ ͚ͩͲɾɾɾ2016͝Ζ·Ͱ σϓϩΠ͕ਏ͔ͬͨʂʂ
͗͢͠ΔσϓϩΠ • αʔόʔʹSSH͠ɺख࡞ۀͰσϓϩΠ • εςοϓ͕ଟ͍ • ϦϦʔε༰ʹΑͬͯ࡞ۀखॱ͕ҟͳΔ • ࣌ؒత੍ʢϝϧϚΨΛࢭΊͯɺͦͷؒʹ࡞ۀ͢Δʣ
• खॱυΩϡϝϯτԽ͞Ε͍ͯͳ͍
͗͢͠ΔσϓϩΠ • αʔόʔʹSSH͠ɺख࡞ۀͰσϓϩΠ • εςοϓ͕ଟ͍ • ϦϦʔε༰ʹΑͬͯ࡞ۀखॱ͕ҟͳΔ • ࣌ؒత੍ʢϝϧϚΨΛࢭΊͯɺͦͷؒʹ࡞ۀ͢Δʣ
• खॱυΩϡϝϯτԽ͞Ε͍ͯͳ͍ →৽ਓ͕࡞ۀ͢ΔͱඞͣোΛى͜͢
σϓϩΠͰͯ͘͠։ൃͰ͖ͳ͍ ޭͨ͠߹Ͱ • σϓϩΠத৴Ͱ͖ͳ͍ͷͰɺεέδϡʔϧௐ͕ඞཁ • σϓϩΠ࡞ۀʹ30 • σϓϩΠޙͷ֬ೝ࡞ۀʹ15 ো͕͓͖Δͱ
• ௐࠪͱ෮چ࡞ۀʹ30 • ૹΕͳ͔ͬͨѼઌʹ࠶ૹ৴͢Δͷʹ̎ɾ̏࣌ؒ • σϓϩΠͨ͢͠Ίʹɺ͏Ұεέδϡʔϧௐ
ʢσϓϩΠ͢Δͷʹ͕͔͔࣌ؒΔ͔Βʣ ͦΜͳখ͞ͳෆ۩߹Λ͢ͷ࣌ؒͷແବͰ͠ΐ ࣌ݴΘΕͨ͜ͱ
͜Μͳͷ͓͔͘͠ͳ͍ʁ @2016 य़ Github1175ճσϓϩΠ͍ͯ͠Δͷʹʂʢ2012ࠒͷʣ ͬͱ։ൃ͢Δ͕࣌ؒཉ͍͠ʂ
Ͱɺࠓಈ͍͍ͯΔͷࢭΊΒΕͳ͍ • ໌ɺϝϧϚΨͷ৴͕͋Δ • དྷिɺࢪࡦͷͨΊʹػೳΛՃ͢Δ • དྷ݄ɺ৽͍͠ϝϧϚΨΛՃ͢Δ • ͦͦࠓͷঢ়ଶͰԿ͔มߋΛՃ͑Δ͜ͱةݥʂʂ
→ ࠓ͋ΔͷΛগͣͭ͠վྑ͢Δ͜ͱʹ
σϓϩΠखॱॻΛ࡞ͬͨ サーバーにSSHする cd /app/mail_concierge/mail_concierge/ git pull origin master サーバーを再起動
テスト配信する ͦΕ·Ͱͷखॱॻ ۩ମతʹԿΛ͢Ε͍͍ͷʁ ৽ਓʹ͔Βͳ͍
ςετ৴͢Δ NBJMDPOUFOUTYMTΛμϯϩʔυ͢Δ ʮࣄલੜίϯςϯπʯը໘͔ΒNBJMDPOUFOUTYMTΛΞοϓϩʔυ͢Δ ͜ͷ࣌ʮʯࠓΛࢦఆ͢Δ ʮ৴ొʯը໘͔ΒҎԼͷ༰Λೖྗ͠ɺʮ৴ొʯ͢Δ αʔϏεʮ৴ςετʯ ϝϧϚΨʮ৴ςετʗ)5.-ʯ ϝʔϧςϯϓϨʔτʮσϓϩΠ࣌ࢼݧ৴ʯʮσϓϩΠ࣌ࢼݧ৴ʯ ৴Ϧετʮ৴ϦετͷछྨΛબ৴ςετ༻Ϧετʯ
৴໊ʮσϓϩΠ࣌ࢼݧ৴::::..%%ʯ ϓϨ৴ʮʯ উऀܾఆϩδοΫʮ։෧ͷΫϦοΫʯ ϓϨ৴։࢝࣌ݱࡏ࣌ࠁ͔Βޙ ຊ৴։࢝࣌ݱࡏ࣌ࠁ͔Βޙ ৴ରϥϯΫʮ৴ରϥϯΫΛࢦఆ͢Δ/0ʯ ৽͍͠खॱॻ ίϐϖ͢Δ͚ͩͰΑ͍ͷͰɺ୭Ͱ҆શʹ࡞ۀͰ͖Δɻ
σϓϩΠͷࣗಈԽ • FabricɾCapistranoͳͲΘͳ͔ͬͨ • ϝϯόʔʹ༻ܦݧ͕ͳ͍ʢௐΔ͕͍࣌ؒͬͨͳ͍ʣ • ࣾͰਪ͍ͯ͠Δਓ͍ͳ͍ • ΦʔόʔεϖοΫʢॱʹίϚϯυΛ࣮ߦͰ͖Εेʣ
• ֤αʔόʔʹஔ͍ͨBashεΫϦϓτΛSSHͰ࣮ߦ͢Δ • ࣗಈԽͰ͖ΔͷɺRubyίʔυͷσϓϩΠͷΈ
νΣοΫ࡞ۀͷࣗಈԽ • DBଓͷ֬ೝ • աڈʹDBଓपΓͰো͕ଟ͔ͬͨ • ֤DBʹଓ͠ΫΤϦ͢ΔεΫϦϓτΛՃ • ςετ৴ΛSeleniumͰࣗಈԽ
• σϓϩΠޙͷ֬ೝ࡞ۀ͕ෆཁʹͳͬͨ • ࣦഊ࣌ʹ௨͞ΕΔͷͰσϓϩΠޙ์ஔͰOK
վྑ & վྑ • εϐʔυΞοϓ • Git ͷϛϥʔϦϯάϨϙδτϦ •
Ruby ͷϥΠϒϥϦΛΩϟογϡ • ͨ·ʹߦ͏ख࡞ۀʹπʔϧΛಋೖ • crontab ͷॻ͖͑ɿ whenever • DBͷϚελʔσʔλߋ৽ɿ seed_fu
σϓϩΠ͏ා͘ͳ͍ʂ վળʹཁͨ͠ظؒɿ20164݄ʙ12݄ σϓϩΠ࡞ۀ5Ͱྃ͠·͢ ϝϧϚΨΛࢭΊΔඞཁ͋Γ·ͤΜ ࣄނ΄ͱΜͲى͖·ͤΜ ։ൃʹ࣌ؒΛׂ͚ΔΑ͏ʹͳΓ·ͨ͠
ͳ্ͥख͍ͬͨ͘ͷ͔ʁ গͣͭ͠ʮࠓ͙͢ޮՌ͕͋Δͷʯ͔ΒखΛ͚ͭͨ • ʮվળͰ࣌ؒઅ → ༨ͬͨ࣌ؒͰ͞Βʹվળʯ • Ұվળ͢Δͱ৽ͨͳվળ͕ݟ͔ͭΔ •
্࢘ར༻ऀͱͷަব͕ෆཁͩͬͨ
ૣ͍ஈ֊Ͱʮݟ͑ΔԽʯ͢Δͷ͕େࣄ ࠷ॳʹʢෆ֨ͰʣखॱॻίʔυΛ࡞ͬͨ • ݟ͑ΔͷվળͰ͖Δ • ϨϏϡʔͰ͖Δ • มߋ͢Εɺϝϯόʔશһ͕ԸܙΛड͚Δ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ https://m3.recruitment.jp/engineer/ ΤϯδχΞؒืूதͰ͢