Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
80
なぜCLIツールはGoで書くべきなのか? Go beyond Python
doloopwhile
7
7.7k
Other Decks in Programming
See All in Programming
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
26
21k
AIと協働し、イベントソーシングとアクターモデルで作る後悔しないアーキテクチャ Regret-Free Architecture with AI, Event Sourcing, and Actors
tomohisa
5
19k
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
170
エディターってAIで操作できるんだぜ
kis9a
0
660
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
110
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
400
関数実行の裏側では何が起きているのか?
minop1205
1
630
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
110
『実践MLOps』から学ぶ DevOps for ML
nsakki55
2
560
チームをチームにするEM
hitode909
0
110
FluorTracer / RayTracingCamp11
kugimasa
0
200
分散DBって何者なんだ... Spannerから学ぶRDBとの違い
iwashi623
0
180
Featured
See All Featured
Practical Orchestrator
shlominoach
190
11k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
700
The Pragmatic Product Professional
lauravandoore
37
7.1k
The World Runs on Bad Software
bkeepers
PRO
72
12k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
86
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Bash Introduction
62gerente
615
210k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Faster Mobile Websites
deanohume
310
31k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
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/ ΤϯδχΞؒืूதͰ͢