Save 37% off PRO during our Black Friday Sale! »

デプロイのたびに障害が起こるシステムを安全にした話

C92ba51ed4d3babede0c3bb605171fa1?s=47 OMOTO Kenji
November 22, 2018

 デプロイのたびに障害が起こるシステムを安全にした話

Sansan×M3 Tech Night ~レガシーシステムに立ち向かえ!~

C92ba51ed4d3babede0c3bb605171fa1?s=128

OMOTO Kenji

November 22, 2018
Tweet

Transcript

  1.  σϓϩΠͷͨͼʹো֐͕ى͜ΔγεςϜΛ ҆શʹͨ͠࿩ Sansan×M3 Tech Night ʙϨΨγʔγεςϜʹཱͪ޲͔͑ʂʙ M3 খຊ݈࢘ 

    
  2.   

  3.  • ϓϩάϥϚʔ̒೥൒ / ΤϜεϦʔ̏೥൒ • ΤϜεϦʔͰ͸ɺج൫։ൃνʔϜ • ෳ਺ࣄۀͰ࢖༻͢ΔαʔϏεͷ։ൃɾӡ༻ •

    ࣾ಺ͷ։ൃ؀ڥͷվળ • ϓϩάϥϛϯάݴޠ: Python, Ruby, Java, Kotlin, Scalaʢͭ·Γશͯʣ খຊ݈࢘ʢ͓΋ͱ͚Μ͡, doloopwhileʣ  
  4.  ϝʔϧίϯγΣϧδϡ • ಺੡ͷձһ޲͚ϝϧϚΨ഑৴γεςϜ • Ruby on Rails੡ • ߴػೳʢ։෧਺ܭଌɺA/BςετɺαʔϏεؒ࿈ܞͳͲʣ

    • ຖ݄500ສ௨Ҏ্ͷϝʔϧΛૹ৴ • ॏཁͳϨΨγʔγεςϜ ͚ͩͲɾɾɾ2016೥͝Ζ·Ͱ͸ σϓϩΠ͕ਏ͔ͬͨʂʂ  
  5.  ೉͗͢͠ΔσϓϩΠ • αʔόʔʹSSH͠ɺख࡞ۀͰσϓϩΠ • εςοϓ਺͕ଟ͍ • ϦϦʔε಺༰ʹΑͬͯ࡞ۀखॱ͕ҟͳΔ • ࣌ؒత੍໿ʢϝϧϚΨΛࢭΊͯɺͦͷؒʹ࡞ۀ͢Δʣ

    • खॱ͸υΩϡϝϯτԽ͞Ε͍ͯͳ͍  
  6.  ೉͗͢͠ΔσϓϩΠ • αʔόʔʹSSH͠ɺख࡞ۀͰσϓϩΠ • εςοϓ਺͕ଟ͍ • ϦϦʔε಺༰ʹΑͬͯ࡞ۀखॱ͕ҟͳΔ • ࣌ؒత੍໿ʢϝϧϚΨΛࢭΊͯɺͦͷؒʹ࡞ۀ͢Δʣ

    • खॱ͸υΩϡϝϯτԽ͞Ε͍ͯͳ͍ →৽ਓ͕࡞ۀ͢Δͱඞͣো֐Λى͜͢  
  7.  σϓϩΠͰ๩ͯ͘͠։ൃͰ͖ͳ͍ ੒ޭͨ͠৔߹Ͱ΋ • σϓϩΠத͸഑৴Ͱ͖ͳ͍ͷͰɺεέδϡʔϧௐ੔͕ඞཁ • σϓϩΠ࡞ۀʹ30෼ • σϓϩΠޙͷ֬ೝ࡞ۀʹ15෼ ো֐͕͓͖Δͱ

    • ௐࠪͱ෮چ࡞ۀʹ30෼ • ૹΕͳ͔ͬͨѼઌʹ࠶ૹ৴͢Δͷʹ̎ɾ̏࣌ؒ • σϓϩΠ͠௚ͨ͢Ίʹɺ΋͏Ұ౓εέδϡʔϧௐ੔  
  8.  ʢσϓϩΠ͢Δͷʹ͕͔͔࣌ؒΔ͔Βʣ ͦΜͳখ͞ͳෆ۩߹Λ௚͢ͷ͸࣌ؒͷແବͰ͠ΐ ౰࣌ݴΘΕͨ͜ͱ  

  9.  ͜Μͳͷ͓͔͘͠ͳ͍ʁ @2016೥ य़ Github͸1೔175ճσϓϩΠ͍ͯ͠Δͷʹʂʢ2012೥ࠒͷ਺஋ʣ ΋ͬͱ։ൃ͢Δ͕࣌ؒཉ͍͠ʂ  

  10.  Ͱ΋ɺࠓಈ͍͍ͯΔ΋ͷ͸ࢭΊΒΕͳ͍ • ໌೔΋ɺϝϧϚΨͷ഑৴͕͋Δ • དྷि΋ɺࢪࡦͷͨΊʹػೳΛ௥Ճ͢Δ • དྷ݄΋ɺ৽͍͠ϝϧϚΨΛ௥Ճ͢Δ • ͦ΋ͦ΋ࠓͷঢ়ଶͰԿ͔มߋΛՃ͑Δ͜ͱ͸ةݥʂʂ

    → ࠓ͋Δ΋ͷΛগͣͭ͠վྑ͢Δ͜ͱʹ  
  11.  σϓϩΠखॱॻΛ࡞ͬͨ サーバーにSSHする cd /app/mail_concierge/mail_concierge/ git pull origin master サーバーを再起動

    テスト配信する ͦΕ·Ͱͷखॱॻ ۩ମతʹ͸ԿΛ͢Ε͹͍͍ͷʁ ৽ਓʹ͸෼͔Βͳ͍  
  12.  ςετ഑৴͢Δ NBJMDPOUFOUTYMTΛμ΢ϯϩʔυ͢Δ ʮࣄલੜ੒ίϯςϯπʯը໘͔ΒNBJMDPOUFOUTYMTΛΞοϓϩʔυ͢Δ ͜ͷ࣌ʮ೔෇ʯ͸ࠓ೔Λࢦఆ͢Δ ʮ഑৴ొ࿥ʯը໘͔ΒҎԼͷ಺༰Λೖྗ͠ɺʮ഑৴ొ࿥ʯ͢Δ αʔϏεʮ഑৴ςετʯ ϝϧϚΨʮ഑৴ςετʗ)5.-ʯ ϝʔϧςϯϓϨʔτʮσϓϩΠ࣌ࢼݧ഑৴ʯʮσϓϩΠ࣌ࢼݧ഑৴ʯ ഑৴Ϧετʮ഑৴ϦετͷछྨΛબ୒഑৴ςετ༻Ϧετʯ

    ഑৴໊ʮσϓϩΠ࣌ࢼݧ഑৴::::..%%ʯ ϓϨ഑৴཰ʮʯ উऀܾఆϩδοΫʮ։෧෼ͷΫϦοΫ཰ʯ ϓϨ഑৴։࢝೔࣌ݱࡏ࣌ࠁ͔Β෼ޙ ຊ഑৴։࢝೔࣌ݱࡏ࣌ࠁ͔Β෼ޙ ഑৴ର৅ϥϯΫʮ഑৴ର৅ϥϯΫΛࢦఆ͢Δ/0ʯ ৽͍͠खॱॻ ίϐϖ͢Δ͚ͩͰΑ͍ͷͰɺ୭Ͱ΋҆શʹ࡞ۀͰ͖Δɻ  
  13.  σϓϩΠͷࣗಈԽ • FabricɾCapistranoͳͲ͸࢖Θͳ͔ͬͨ • ϝϯόʔʹ࢖༻ܦݧ͕ͳ͍ʢௐ΂Δ͕࣌ؒ΋͍ͬͨͳ͍ʣ • ࣾ಺Ͱਪ͍ͯ͠Δਓ΋͍ͳ͍ • ΦʔόʔεϖοΫʢॱʹίϚϯυΛ࣮ߦͰ͖Ε͹े෼ʣ

    • ֤αʔόʔʹஔ͍ͨBashεΫϦϓτΛSSHͰ࣮ߦ͢Δ • ࣗಈԽͰ͖Δͷ͸ɺRubyίʔυͷσϓϩΠͷΈ  
  14.  νΣοΫ࡞ۀͷࣗಈԽ • DB઀ଓͷ֬ೝ • աڈʹDB઀ଓपΓͰো֐͕ଟ͔ͬͨ • ֤DBʹ઀ଓ͠ΫΤϦ͢ΔεΫϦϓτΛ௥Ճ • ςετ഑৴ΛSeleniumͰࣗಈԽ

    • σϓϩΠޙͷ֬ೝ࡞ۀ͕ෆཁʹͳͬͨ • ࣦഊ࣌ʹ͸௨஌͞ΕΔͷͰσϓϩΠޙ͸์ஔͰOK  
  15.  վྑ & վྑ • εϐʔυΞοϓ • Git ͷϛϥʔϦϯάϨϙδτϦ •

    Ruby ͷϥΠϒϥϦΛΩϟογϡ • ͨ·ʹߦ͏ख࡞ۀʹ΋πʔϧΛಋೖ • crontab ͷॻ͖׵͑ɿ whenever • DBͷϚελʔσʔλߋ৽ɿ seed_fu  
  16.  σϓϩΠ͸΋͏ා͘ͳ͍ʂ վળʹཁͨ͠ظؒɿ2016೥4݄ʙ12݄ σϓϩΠ࡞ۀ͸5෼Ͱ׬ྃ͠·͢ ϝϧϚΨΛࢭΊΔඞཁ΋͋Γ·ͤΜ ࣄނ͸΄ͱΜͲى͖·ͤΜ ։ൃʹ࣌ؒΛׂ͚ΔΑ͏ʹͳΓ·ͨ͠  

  17.  ͳ্ͥख͍ͬͨ͘ͷ͔ʁ গͣͭ͠ʮࠓ͙͢ޮՌ͕͋Δ΋ͷʯ͔ΒखΛ͚ͭͨ • ʮվળͰ࣌ؒઅ໿ → ༨ͬͨ࣌ؒͰ͞Βʹվળʯ • Ұ౓վળ͢Δͱ৽ͨͳվળ఺͕ݟ͔ͭΔ •

    ্࢘΍ར༻ऀͱͷަব͕ෆཁͩͬͨ  
  18.  ૣ͍ஈ֊Ͱʮݟ͑ΔԽʯ͢Δͷ͕େࣄ ࠷ॳʹʢෆ֨޷Ͱ΋ʣखॱॻ΍ίʔυΛ࡞ͬͨ • ݟ͑Δ΋ͷ͸վળͰ͖Δ • ϨϏϡʔͰ͖Δ • มߋ͢Ε͹ɺϝϯόʔશһ͕ԸܙΛड͚Δ 

    
  19.  ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ https://m3.recruitment.jp/engineer/   ΤϯδχΞ஥ؒืूதͰ͢

  20.