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.3k
デプロイのたびに障害が起こるシステムを安全にした話
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
72
なぜCLIツールはGoで書くべきなのか? Go beyond Python
doloopwhile
7
7.6k
Other Decks in Programming
See All in Programming
AWSのLambdaで PHPを動かす選択肢
rinchoku
2
410
CloudNativePGがCNCF Sandboxプロジェクトになったぞ! 〜CloudNativePGの仕組みの紹介〜
nnaka2992
0
170
Linux && Docker 研修/Linux && Docker training
forrep
17
3.3k
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
140
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
180
SRE、開発、QAが協業して挑んだリリースプロセス改革@SRE Kaigi 2025
nealle
1
3k
令和7年版 あなたが使ってよいフロントエンド機能とは
mugi_uno
12
5.9k
Amazon Nova Reelの可能性
hideg
0
240
Lookerは可視化だけじゃない。UIコンポーネントもあるんだ!
ymd65536
1
140
“あなた” の開発を支援する AI エージェント Bedrock Engineer / introducing-bedrock-engineer
gawa
9
1.1k
Amazon Bedrock Multi Agentsを試してきた
tm2
1
190
ErdMap: Thinking about a map for Rails applications
makicamel
1
980
Featured
See All Featured
Facilitating Awesome Meetings
lara
51
6.2k
Side Projects
sachag
452
42k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
590
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
260
Navigating Team Friction
lara
183
15k
Making Projects Easy
brettharned
116
6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Git: the NoSQL Database
bkeepers
PRO
427
64k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
YesSQL, Process and Tooling at Scale
rocio
170
14k
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/ ΤϯδχΞؒืूதͰ͢