# ๐Ÿ‘ [J6] 8์ฃผ์ฐจ ํ”ผ์–ด์„ธ์…˜ ## ๐Ÿ˜€ ์ฐธ์—ฌ์ž |[J130 ์œ ์ •ํ•œ(J02B)](https://github.com/youjeonghan)|[J039 ๊น€์˜์ง„(J02B)](https://github.com/jin-Pro)|[J138 ์ด๊ด‘๋ฏผ(J01B)](https://github.com/LeeKwang-min)|[J102 ์„ค๋ฏผ์šฑ(J11A)](https://github.com/blogSoul)|[J049 ๊น€์ผํ˜(J11A)](https://github.com/illlama)|[J187 ์ •์š”ํ•œ(J01B)](https://github.com/ingyeoking13)|[J042 ๊น€์šฉ์ง„(J16A)](http://github.com/Yongjin9660) |---|---|---|---|---|---|---| |<img src="https://github.com/youjeonghan.png" width="80"> |<img src="https://github.com/jin-Pro.png" width="80">|<img src="https://github.com/LeeKwang-min.png" width="80">|<img src="https://github.com/blogSoul.png" width="80">|<img src="https://github.com/illlama.png" width="80">|<img src="https://github.com/ingyeoking13.png" width="80">|<img src="https://github.com/Yongjin9660.png" width="80"> ## ๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ ๊ณ„ํš 2:30~2:40 ์ž๊ธฐ์†Œ๊ฐœ 2:40~4:00 ์ž์œ ์งˆ๋ฌธ + ๋ฆฌ๋ทฐ ๋‚ด์šฉ ๊ณต์œ  4:00~ ์ž์œ ํ† ๋ก  ## ๐Ÿ“œ ํ‚ค์›Œ๋“œ - Canvas - React ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ (axios, fetch) - socket.io - pm2 - ์ธ์Šคํ„ด์Šค ๋ถ„๋ฆฌ - ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„ ๋ฐฉ์‹ - nginx ## ๐Ÿง ์ž์œ ์งˆ๋ฌธ --- - ์ €๋Š” ์บ๋ฆญํ„ฐ,๋งต,์˜ค๋ธŒ์ ํŠธ ํ•˜๋‚˜๋‹น canvas๋กœ ๊ทธ๋ ค์ฃผ์—ˆ๊ณ , ๋งค๋ฒˆ ๋ฆฌ๋ Œ๋”๋ง๋ ๋•Œ๋งˆ๋‹ค image๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋Š”๋ฐ ์ž˜๋ชป๋œ ๋ฐฉ๋ฒ•์ธ ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋Š”๋ฐ์š”, ํ˜น์‹œ canvasํ•˜๋‚˜์— ์บ๋ฆญํ„ฐ, ๋งต, ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ทธ๋ ค์ฃผ์‹ ๋ถ„๋“ค ์ฝ”๋“œ๋ฅผ ๋„ˆ๋ฌด ๊นŠ์ง€์•Š๊ฒŒ ์Šค-์œฝ ๋ณด๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค! - ์บ๋ฆญํ„ฐ๊ฐ€ 5๊ฐœ๋ฉด canvas๋„ 5๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„์„ ํ•˜์˜€๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋  ๊ฒฝ์šฐ canvas๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์จ์„œ ์ฐจ๋ผ๋ฆฌ canvas๋ฅผ ํ•˜๋‚˜๋งŒ ์“ฐ๋Š”๊ฒŒ ๋” ๋‚˜์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. canvas๋ฅผ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์ขŒํ‘œ๊ฐ’์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ ค์ฃผ๋Š” ๋ฐฉ์‹์˜ ๊ตฌํ˜„์„ ํ•˜์‹ ๋ถ„์ด ์žˆ๋‹ค๋ฉด ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค. - ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ๋„ฃ๋Š” ๋ฐฉ์‹์ด 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ด๋ฏธ์ง€ ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹, ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ์ง์ ‘ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค. ์ด ์ค‘์—์„œ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘๊ณ  ์ด๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. CSS ํŠน์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜์˜€๋‹ค. - ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ๊ด€๋ฆฌํ•œ ๋ฐฉ์‹์€ canvas ํƒœ๊ทธ ํ•˜์œ„์— ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ๋„ฃ์–ด๋‘๊ณ  className, id๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌํ•˜์˜€๋‹ค. - ์ด๋ฏธ์ง€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์ €์˜ ์œ„์น˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ setInterval์„ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ, ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ด์ฃผ์–ด ๊ณ„์†ํ•ด์„œ ๋‹ค์‹œ ๊ทธ๋ ค์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค. --- - ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ฐ›์•„์™€์„œ ์ฒ˜๋ฆฌํ–ˆ๋‚˜์š”? ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ์ด์šฉํ•œ ๋ถ„์ด ์žˆ์„๊นŒ์š”?? - fetch๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์กฐ๊ธˆ ์žˆ์–ด์„œ axios๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. - nginx๋ฅผ ์ด๋ฒˆ์— ์ฒ˜์Œ ์ด์šฉํ–ˆ๋Š”๋ฐ get ์ด์™ธ์˜ post, put ์š”์ฒญ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋˜๋ฐ ๋‹ค๋ฅธ๋ถ„๋“ค์€ get ์ด์™ธ์˜ http method์—์„œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜์…จ๋‚˜์š”? - ์–ด๋–ค ์—๋Ÿฌ๊ฐ€ ๋‚˜์…จ๋‚˜์š”? - > get ์ด์™ธ์˜ ์š”์ฒญ์—์„œ 405 ์—๋Ÿฌ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—๋Ÿฌ์˜€์Šต๋‹ˆ๋‹ค! (nginx 405 Not Allowed ๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋งŽ์ด ๋‚˜์˜ค๋”๋ผ๊ตฌ์š”) - > header์—์„œ credential : true ์ถ”๊ฐ€ํ•˜์…จ๋‚˜์š”? ์•„๋‡จ... - > ํ—ค๋” ์„ค์ • ๋ฌธ์ œ์ผ ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค! - > ์•„๋‹ˆ๋ฉด " nginx์—์„œ๋Š” .html ํŒŒ์ผ์— ๋Œ€ํ•œ post ์š”์ฒญ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. " ๋ผ๊ณ  ํ•˜๋‹ค๊ณ  ํ•˜๋„ค์š”. - ๋กœ๊ทธ์ธ์„ ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๋“ค์ด ๋ช‡๊ฐ€์ง€ ์žˆ๋‹ค. - ์œ„์—์„œ ์„œ์ˆ ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด header ๋ฌธ์ œ์ผ ์ˆ˜๋„ ์žˆ๋‹ค. header์—์„œ credential์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉด `CORS` ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋‹ค. - 405 ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด ์ด๋ฅผ ํ™•์ธํ•˜์—ฌ 200๋ฒˆ๋Œ€ ์ƒํƒœ๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค. [ํ™•์ธ](https://stackoverflow.com/questions/24415376/post-request-not-allowed-405-not-allowed-nginx-even-with-headers-included) - axios์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ๋•Œ `data`๋กœ ๊ฐ์‹ธ์ง€๊ธฐ ๋•Œ๋ฌธ์— `data.data`๋กœ ๋ฐ›์ง€์•Š์•„์„œ ๊ทธ๋Ÿฐ๊ฒƒ์ผ ์ˆ˜ ์žˆ๋‹ค. - jwt๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•œ ๋ถ„์ด ์žˆ์œผ๋ฉด ํ† ํฐ ๋งŒ๋ฃŒ์‹œ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์ด์šฉํ•ด์„œ ๊ฐฑ์‹ ์„ ์–ด๋–ป๊ฒŒ ์‹œํ‚ค๋Š”์ง€ ํ”Œ๋กœ์šฐ๋ฅผ ์ข€ ๋ณด๊ฑฐ๋‚˜ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. - ์•„๋ฌด๋„ ์‚ฌ์šฉ์„ ์•ˆํ•˜์‹ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. --- - ์ €ํฌ ํŒ€์€ ์บ”๋ฒ„์Šค ๊ทธ๋ฆด ๋•Œ, setInterval์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ draw ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์‹  ํŒ€๋“ค์ด ์žˆ์„๊นŒ์š”? ์‚ฌ์šฉ ์˜๊ฒฌ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค! ์šฐ์„  setInterval์€ ์šฐ๋ ค ์™ธ๋กœ ์ž˜ ๋˜์—ˆ์–ด์š” :) - Canvas๋ฅผ ๊ทธ๋ฆด ๋•Œ requestAnimationFrame๊ณผ setInterval, OffscreenCanvas ๋“ฑ์ด ์žˆ๋Š”๋ฐ ๊ทธ ์ค‘์—์„œ setInterval์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์‹ ๋ถ„๋“ค์ด ์žˆ๋‹ค๋ฉด ๊ตฌํ˜„ํ•  ๋•Œ ์–ด๋– ์…จ๋Š”์ง€ ์˜๊ฒฌ์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. - requestAnimationFrame์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Canvas๋ฅผ ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์žฌ๊ท€์ ์œผ๋กœ ๋ฐ›์•„์˜ค๋„๋ก ์ฒ˜๋ฆฌํ•œ๋‹ค. - ๋‹ค๋ฅธ ์œ ์ €๋“ค์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ด€๋ฆฌํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•˜์˜€๋‹ค. socketํ†ต์‹ ์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์—์„œ ๋„˜๊ฒจ์ค€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ์œ ์ €๋“ค์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉ - OffscreenCanvas์˜ ๊ฒฝ์šฐ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๋งต๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋“ค์„ ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ํ›จ์”ฌ ๋ถ€ํ•˜๊ฐ€ ์ค„์–ด๋“œ๋Š” ๊ฒฝํ—˜์„ ํ•œ ์ ์ด ์žˆ๋‹ค. - ์ „์ฒด์ ์ธ ๊ตฌํ˜„ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ณ ๋ฏผ ๋งŽ์ด ํ–ˆ๋˜ point ์žˆ์„๊นŒ์š”? ์ €๋Š” ์ถฉ๋Œ ์ฒ˜๋ฆฌ๋ฅผ ์„œ๋ฒ„์—์„œ ํ• ์ง€ ํด๋ผ์ด์–ธํŠธ์—์„œ ํ• ์ง€ ๊ณ ๋ฏผ ํ–ˆ์—ˆ์–ด์š”. - ์ด๋ฒˆ ๋ฏธ์…˜์„ ๊ตฌํ˜„ํ•จ์— ์žˆ์–ด ์–ด๋–ค ๋ถ€๋ถ„์—์„œ ๊ฐ€์žฅ ๋งŽ์€ ์ž์›์„ ์‚ฌ์šฉํ•˜์…จ๋Š”์ง€ - ์ „ setInterval๋กœ ๊ตฌํ˜„ํ•˜์˜€๋Š”๋ฐ, ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ์ด ์˜ค๋Š” ๊ฒƒ์ด ์šฐ๋ ค๊ฐ€ ๋˜์„œ ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ์ ๋‹นํ•œ ์š”์ฒญ ํšŸ์ˆ˜๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ ๋ฏผํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. - lodash์˜ debounce ๋ฉ”์†Œ๋“œ - Dead Reckoning ๋ฐ๋“œ ๋ ˆ์ปค๋‹ - TypeScript : ์‹ค๋ฌด์—์„œ ์™œ ์“ฐ๋Š”์ง€ ์•Œ๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ์— ์ œ๋Œ€๋กœ ํ•™์Šตํ•ด๋ณธ ๊ฒƒ ๊ฐ™๋‹ค. - recoil : redux ๋ณด๋‹ค boilerplate ๊ฐ€ ์ ๋‹ค. ์ƒํƒœ๋ฅผ ์ „์—ญ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ํŽธํ•˜๋‹ค. --- - ์ด๋ฒˆ ๋ฏธ์…˜๊ณผ ๊ฐ™์ด ํŠน์ • ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•ด ๋‘๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ํ•˜์—ฌ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ์‹๊ณผ ํด๋ผ์ด์–ธํŠธ๋‹จ์— ๋‘๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด ๋‚˜๋‰˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์˜๊ฒฌ์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. - ์›€์ง์ž„๋งˆ๋‹ค ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•˜๋Š”๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ณ , ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์‹œ์ž‘ํ•  ๋•Œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค๋“ค์„ ๋ชจ๋‘ ๋ฐ›์•„์™€์„œ ์ €์žฅํ•ด๋‘๊ณ  ์‚ฌ์šฉํ•˜๋„๋กํ•œ๋‹ค. - ์–ด๋А ํ•œ์ชฝ์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋ฉด ๋‹ค๋ฅธ ํ•œ์ชฝ์˜ ๋ถ€ํ•˜๊ฐ€ ๋Š˜์–ด๋‚  ์ˆ˜ ๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ •๋‹ต์€ ์—†๋‹ค. ํŠน์ • ์ƒํ™ฉ์— ์žˆ์–ด์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์„, ๊ณ„์†ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. --- - db ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜์‹  ๋ถ„์ด ๊ณ„์‹ ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋ถ„๋ฆฌํ•˜์…จ๋‹ค๋ฉด, ์–ด๋–ค ์‹์œผ๋กœ db์— ์ ‘๊ทผํ•˜์…จ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. - ์„œ๋ฒ„์™€ db ์ธ์Šคํ„ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ssh ํ„ฐ๋„๋ง์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋™์ผํ•œ ์ฝ”๋“œ๋กœ ์›ํ™œํ•œ ํ†ต์‹ ์ด ์–ด๋ ค์› ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ์‹์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค. - mongodb์„œ๋ฒ„๋ฅผ ๋”ฐ๋กœ ์„œ๋ฒ„๋กœ ๋ฐฐํฌํ•˜์—ฌ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. mongoose ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด DB ์„œ๋ฒ„์™€ ์—ฐ๋™ ํ›„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค! (ssh ์ ‘์†๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค) --- - ์ž๋™ ๋ฐฐํฌ ๊ตฌํ˜„ํ•˜์‹  ๋ถ„ ๊ณ„์‹ ๊ฐ€์š”? ์žˆ๋‹ค๋ฉด ์‰ก ์Šคํฌ๋ฆฝํŠธ ์–ด๋–ป๊ฒŒ ์งœ์…จ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. - github action์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ : ssh-action์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. - ๋‹ค๋“ค ์‹ค์‹œ๊ฐ„์œผ๋กœ canvas์— ๊ทธ๋ ค์•ผ ํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜์…จ์„ํ…๋ฐ, ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•˜์…จ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. - `๋กœ๊ทธ์ธ -> ์บ๋ฆญํ„ฐ ์„ ํƒ ์ •๋ณด, ์บ๋ฆญํ„ฐ ์œ„์น˜ ์ •๋ณด ์ €์žฅ -> ํ•ด๋‹น ์ •๋ณด๊ฐ€ ์ €์žฅ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฟŒ๋ ค์„œ ์ฒ˜๋ฆฌ`ํ•˜๊ณ ์ž ํ•˜์˜€๋Š”๋ฐ, ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ๊ตฌํ˜„ ํ๋ฆ„์— ๋Œ€ํ•ด ์•Œ๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค. - ์žฌ์ ‘์†์‹œ์— ์ด ์ „์˜ ์œ„์น˜๋ฅผ DB์— ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ์‹ (์˜จ๋ผ์ธ/์˜คํ”„๋ผ์ธ ์ •๋ณด๋ฅผ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜์˜€๋‹ค) - ์žฌ์ ‘์†์‹œ์— default๊ฐ’์˜ ์œ„์น˜์— ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹ - ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ ‘์†์ค‘์ธ ์œ ์ € ์ •๋ณด๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉ - ์†Œ์ผ“์—์„œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋„๋Š”๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. (disconnecting ์ด๋ฒคํŠธ ์‚ฌ์šฉ) - ์†Œ์ผ“ ํ†ต์‹ ์€ ๊ฐ€๋ฒผ์šด ๋А๋‚Œ์ด ๋“ค์–ด์„œ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. - disconnecting : ์†Œ์ผ“ ํ†ต์‹ ์ด ๋Š๊ธฐ๊ธฐ ์ „์— ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ (์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜๊ฐ€๊ธฐ ์ „์— ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ : ๋‚˜๊ฐ€๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ ์ €์žฅ) - disconnect : ์†Œ์ผ“ ํ†ต์‹ ์ด ๋Š๊ธฐ๊ณ  ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ (์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜๊ฐ€๊ณ  ๋‚˜์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ : ๋‚˜๊ฐ„ ์œ ์ €์— ๋Œ€ํ•œ ์•Œ๋ฆผ)