๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กStudy/Back-End (26)

JiYoung Dev ๐Ÿ–ฅ

ํŒŒ์ด์ฌ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์„ ํ™œ์šฉํ•œ ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•

๐Ÿ“ ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ CPU๊ฐ€ ์‹ฑ๊ธ€ ์ฝ”์–ด๊ฐ€ ์•„๋‹Œ ๋ฉ€ํ‹ฐ ์ฝ”์–ด ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์—…์„ ๋ณด๋‹ค ๋นจ๋ฆฌ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‹ค.  ๐Ÿ’พ ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•1๏ธโƒฃ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ(Multiprocessing)์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ์„œ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC)๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ์€ CPU ์ฝ”์–ด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๋ฉ€ํ‹ฐ์ฝ”์–ด ์‹œ์Šคํ…œ์—์„œ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ์ถฉ๋Œ ์—†์ด ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.  2๏ธโƒฃ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ(Multithreading)ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ..

Study/Back-End 2025. 3. 3. 17:09
Linux ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ• (spawn, fork, exec)

ํŒŒ์ด์ฌ์€ GIL ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์—์„œ ์ œํ•œ์„ ๋ฐ›๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ํŒŒ์ด์ฌ์€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ์„ ํ™œ์šฉํ•˜์—ฌ ๋ณ‘๋ น ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ , ์ œ๋Œ€๋กœ ๋œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.  ** GIL(Global Interpreter Lock) : ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์Šค๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋กœ, ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ์ด ํŒŒ์ด์ฌ ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ํ™˜๊ฒฝ์—์„œ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์ง€๋งŒ, ๋™์‹œ์— ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์›์ธ์ด ๋˜๊ธฐ๋„ ํ•œ๋‹ค.  ๐Ÿ“ fork()fork()๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค(๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค)๋ฅผ ๋ณต์ œํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž์‹ ํ”„๋กœ์„ธ์Šค(child proce..

Study/Back-End 2025. 3. 3. 15:28
ํ™˜๊ฒฝ๋ณ€์ˆ˜(PATH) ์ดํ•ดํ•˜๊ธฐ

Docker๋กœ ๋ฆฌ์•กํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋‹ค๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์–ด์„œ ๊ฐœ๋ฐœ ์„œ๋ฒ„์—์„œ node๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํ„ฐ๋ฏธ๋„ ์ ‘์† ํ›„ export๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•œ ๋’ค ๋…ธ๋“œ๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ๋Š” ์‹คํ–‰์ด ์ •์ƒ์ ์œผ๋กœ ๋˜์—ˆ๋Š”๋ฐ, ๋กœ๊ทธ์•„์›ƒ ํ›„ ๋‹ค์‹œ ํ„ฐ๋ฏธ๋„์— ์ ‘์†ํ•˜๋‹ˆ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •์ด ํ’€๋ ค ๋…ธ๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š์•˜๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด์„œ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ์•„๋ž˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค. ํ™˜๊ฒฝ๋ณ€์ˆ˜ํ™˜๊ฒฝ๋ณ€์ˆ˜(PATH)๋ž€, ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ๋Š” ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋ฅผ ๋งํ•œ๋‹ค. ๋งŒ์•ฝ ์œˆ๋„์šฐ์ธ ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  java -jar์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์œˆ๋„์šฐ CMD ์ฐฝ์— ์ž…๋ ฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • ์—†์ด java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ‘java’์€(๋Š”) ๋‚ด๋ถ€..

Study/Back-End 2024. 11. 20. 21:45
๋กœ๊ทธ ๋ ˆ๋ฒจ ๋ฐ ๋กœ๊ทธ ์ž‘์„ฑ ๊ธฐ์ค€

์šด์˜์ค‘์ธ ์†”๋ฃจ์…˜์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด ์›์ธ์„ ํŒŒ์•…ํ•˜๋ ค๋Š”๋ฐ, ์—๋Ÿฌ๋ฅผ ์ œ์™ธํ•œ debug๋‚˜ info ๋กœ๊ทธ๊ฐ€ ํ•˜๋‚˜๋„ ์ฐํžˆ์ง€ ์•Š์•„ ์›์ธ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์—†๋Š” ์ผ์ด ๋ฐœ์ƒํ•˜์˜€๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์— ๋กœ๊ทธ ์ฐ๋Š” ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด ํŒจ์น˜๋ฅผ ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๋กœ๊ทธ๋ฅผ ์ฐ์–ด์•ผ ์šด์˜ํ•  ๋•Œ ์ƒํƒœ๋ฅผ ์ž˜ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ์ด๋ฒˆ ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.๐Ÿ“– ๋กœ๊ทธ(Log)์˜ ๋ชฉ์ ๋กœ๊ทธ๋Š” ์‹œ์Šคํ…œ์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ์˜ ๊ธฐ๋ก์œผ๋กœ, ๊ฐœ๋ฐœ์ž์™€ ์šด์˜ ํŒ€์ด ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.์„œ๋น„์Šค ๋™์ž‘ ์ƒํƒœ ํŒŒ์•…์žฅ์•  ํŒŒ์•… ๋ฐ ์•Œ๋ฆผ๋กœ๊ทธ ๋ถ„์„์„ ํ†ตํ•œ ์„œ๋น„์Šค ์ง€ํ‘œ์˜ ํ™•์ธ, ํŠธ๋žœ์žญ์…˜, ์„ฑ๋Šฅ ํŒŒ์•…ํ•˜์ง€๋งŒ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋งค์ผ ์ˆ˜์‹ญ GB์— ๋‹ฌํ•˜๋Š” ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์–ด ์ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ..

Study/Back-End 2024. 11. 11. 21:02
[Node.js] Express์˜ listen ๋ฐ Cors ์„ค์ •

์–ด์ œ ์ž‘์„ฑํ–ˆ๋˜ Nginx์—์„œ Reverse Proxy ์„ค์ • ํ›„ Spring Server์—์„œ Cors ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ Spring Security Cors ์„ค์ •์— ์™ธ๋ถ€๋ง ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด ํ•ด๊ฒฐํ•˜์˜€๋‹ค๊ณ  ํ•˜์˜€๋‹ค. ํ•ด๋‹น ๊ธ€์—์„œ๋Š” ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์ง€๋งŒ Node.js Express ์„œ๋ฒ„์—์„œ๋„ Cors ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋Š”๋ฐ Cors ์„ค์ •๊ณผ ํ•จ๊ป˜ app.listen("0.0.0.0")์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.  ์œ„์˜ ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ Cors๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ app.listen("0.0.0.0")์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ๐Ÿ”Ž Cors ์„ค์ •์˜ ์—ญํ• Cors(Cross-Origin Resource Sharing)๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐœ์ƒํ•˜๋Š” ๋ณด์•ˆ ์ •์ฑ…์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ์ถœ์ฒ˜(Origin)์— ๋”ฐ๋ผ ์„œ..

Study/Back-End 2024. 11. 7. 22:10
Nginx๋กœ Reverse Proxy ์„ค์ •ํ•˜๊ธฐ

๐Ÿ”Ž ๋ฌธ์ œ ์ƒํ™ฉ์ „์‹œํšŒ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์‚ฌ๋‚ด ์„œ๋ฒ„(Private๋ง)์— ๊ตฌ์ถ•๋˜์–ด ์žˆ๋Š” ์†”๋ฃจ์…˜์„ ์™ธ๋ถ€๋ง์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„คํŠธ์›Œํฌ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ผ์ด ์žˆ์—ˆ๋‹ค. ๋ผ์šฐํŒ…์„ ํ–ˆ๋Š”์ง€ ์•„๋‹˜ ํฌํŠธํฌ์›Œ๋”ฉ์„ ํ–ˆ๋Š”์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ(์•„๋งˆ๋„ ํฌํŠธํฌ์›Œ๋”ฉ?) ์–ด์จŒ๋“  ๊ฒฐ๋ก ์€ ์‚ฌ๋‚ด๋ง IP๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋˜ ๊ฒƒ์„ ์™ธ๋ถ€๋ง์—์„œ๋„ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ ‡๊ฒŒ ์™ธ๋ถ€๋ง์—์„œ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๋ฆฌ์•กํŠธ ์•ฑ์ด ์—ฐ๊ณ„๋œ API ์„œ๋ฒ„์™€ ์—ฐ๋™์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ ์†”๋ฃจ์…˜์˜ ์•„ํ‚คํ…์ฒ˜๋Š” ์•ฝ๊ฐ„ ๋…ํŠนํ•˜๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ CSR์ธ ๋ฆฌ์•กํŠธ๋ฅผ Node.js ์„œ๋ฒ„ ์œ„์— ์˜ฌ๋ฆฌ๊ณ , ๋ฆฌ์•กํŠธ์—์„œ Node.js, Spring Server ๋ฐ python Server์™€ ํ†ต์‹ ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.  ๋ฆฌ์•กํŠธ ์•ฑ์—์„œ ๊ฐ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” API..

Study/Back-End 2024. 11. 6. 21:43
[Spring - Android] JPA ํ™œ์šฉ ์—ฐ๋™ํ•˜๊ธฐ (2023.07.20~21)

controller : ๋ทฐ๋ฐ˜ํ™˜ restcontroller : ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ Application.java ์œ„์น˜ ๊ธฐ์ค€ ํ•˜์œ„์— ์žˆ๋Š” ๊ฒƒ๋“ค๋งŒ ๊ฐ์ฒด ์ƒ์„ฑ ๋ชจ๋“  ์ปจํŠธ๋กค๋Ÿฌ, ์„œ๋น„์Šค ๋“ฑ์€ ๋ชจ๋‘ boot package ํ•˜์œ„์— ์กด์žฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•จ spring์—์„œ ์‚ฌ์šฉํ•˜๋Š” class => ์–ด๋…ธํ…Œ์ด์…˜ @์„ ๋ถ™์—ฌ์•ผํ•จ. ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ JPA object์™€ ๊ด€๊ณ„ํ˜• ํ…Œ์ด๋ธ” ๋งคํ•‘ jpa ์‚ฌ์šฉ์‹œ ์ฃผ์˜์  - ์ž์ฒด์ ์œผ๋กœ ๊ฐ๊ฐ์˜ ๊ฐ’๋“ค์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” (ex.sequence)๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ด ์•„์ด๋ฅผ primary ํ‚ค๋กœ ์‚ฌ์šฉ ์žญ์Šจ object-json ์‰ฝ๊ฒŒ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Stringํ˜•ํƒœ์˜ json์„ java Object๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ์ฒ˜๋ฆฌ 1. throw : ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•˜๋‹ค 2. try-..

Study/Back-End 2023. 7. 20. 14:17
[Node.js] Socket ํ†ต์‹  (2023.07.10)

http ํ†ต์‹  ํ†ต์‹ ์ˆœ์„œ : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋“ค์–ด์™€์•ผ ์„œ๋ฒ„์ชฝ์—์„œ ๊ทธ์— ์•Œ๋งž๋Š” ์‘๋‹ต์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹ ์„œ๋ฒ„๊ฐ€ ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒŒ ๋ถˆ๊ฐ€๋Šฅํ•จ socket ํ†ต์‹  ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง€๋Š” ํ†ต์‹ ์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ๋„ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ณ  ์„œ๋ฒ„๋„ ํด๋ผ์ด์–ธํŠธ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํ†ต์‹  ์˜ˆ๋ฅผ๋“ค์–ด ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ Node.js์—์„œ๋Š” Socket.IO npm ๋ชจ๋“ˆ์„ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ ๋ชจ๋“ˆ ์„ค์น˜ npm install socket.io ์„œ๋ฒ„์ชฝ ์†Œ์ผ“ //์„œ๋ฒ„์ชฝ ์†Œ์ผ“ ์ž‘์„ฑ const socketIO = require('socket.io') //์–ด๋Š ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์ด ๋œ ์ƒํƒœ๋กœ ์“ธ ๊ฒƒ์ธ์ง€ ์ •์˜๋ฅผ ํ•ด์ค˜์•ผ ํ•จ (ex.port) //express server module.exports = (serve..

Study/Back-End 2023. 7. 10. 13:47