"AI ๋”ธ๊น์˜ ์‹œ๋Œ€" ์›๋ฆฌ๋กœ ๋ŒํŒŒํ•˜๋Š” Node.js์™€ CS Part 3: TCP/UDP ์†Œ์ผ“๊ณผ ๋„คํŠธ์›Œํฌ ์ฝ”์–ด

AI๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋Œ€์‹  ์งœ์ฃผ๋Š” ์‹œ๋Œ€์ผ์ˆ˜๋ก ์‹œ์Šคํ…œ์˜ ๊ฑฐ์‹œ์ ์ธ ๋ผˆ๋Œ€๋ฅผ ๊ฟฐ๋šซ์–ด ๋ณด๊ณ  ํ†ต์ œํ•˜๋Š” '์ง„์งœ ์•„ํ‚คํ…ํŠธ'์˜ ๊ฐ€์น˜๋Š” ์••๋„์ ์œผ๋กœ ๋†’์•„์ง‘๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ๋’ค์— ์ˆจ๊ฒจ์ง„ ๋กœ์šฐ ๋ ˆ๋ฒจ ๋„คํŠธ์›Œํฌ์™€ TCP/UDP ์†Œ์ผ“์˜ ๋ณธ์งˆ์„ ํŒŒํ—ค์ณ, ์ˆ˜๋ฐฑ๋งŒ ํŠธ๋ž˜ํ”ฝ๊ณผ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์•ž์—์„œ๋„ ์ ˆ๋Œ€ ํ„ฐ์ง€์ง€ ์•Š๋Š” ๊ฒฌ๊ณ ํ•œ ์ฝ”์–ด ์—”์ง„ ์„ค๊ณ„ ๋Šฅ๋ ฅ์„ ๊ธธ๋Ÿฌ์ค๋‹ˆ๋‹ค. ๋ฌด์ž‘์ • ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ๋งŒ ๋ฐ˜๋ณตํ•˜๋Š” ์ฝ”๋”๋ฅผ ๋„˜์–ด AI์—๊ฒŒ ๋ช…ํ™•ํ•œ ์‹œ์Šคํ…œ ๋‹จ์œ„์˜ ์ •๋‹ต์„ ์ง€์‹œํ•˜๊ณ  ํ†ต์ œํ•˜๋Š” ๋Œ€์ฒด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋งˆ์Šคํ„ฐ๋กœ ๋„์•ฝํ•ด ๋ณด์„ธ์š”

2๋ช… ์ด ์ˆ˜๊ฐ•ํ•˜๊ณ  ์žˆ์–ด์š”.

๋‚œ์ด๋„ ์ดˆ๊ธ‰

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
์‹ค๋ฌด์ ์šฉ
์‹ค๋ฌด์ ์šฉ
AI ํ™œ์šฉ๋ฒ•
AI ํ™œ์šฉ๋ฒ•
์ปดํ“จํ„ฐ๊ตฌ์กฐ
์ปดํ“จํ„ฐ๊ตฌ์กฐ
์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
์‹ค๋ฌด์ ์šฉ
์‹ค๋ฌด์ ์šฉ
AI ํ™œ์šฉ๋ฒ•
AI ํ™œ์šฉ๋ฒ•
์ปดํ“จํ„ฐ๊ตฌ์กฐ
์ปดํ“จํ„ฐ๊ตฌ์กฐ

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • AI ํ”„๋กฌํ”„ํŒ… ๊ณ ๋„ํ™”: AI์—๊ฒŒ ๋‹จ์ˆœํžˆ ์—๋Ÿฌ ์ˆ˜์ •์„ ๊ตฌ๊ฑธํ•˜๋Š” ๋Œ€์‹ , ์ •ํ™•ํ•œ CS ์šฉ์–ด๋กœ ์•„ํ‚คํ…์ฒ˜ ๋‹จ์œ„์˜ ํ•ด๊ฒฐ์ฑ…์„ ์ง€์‹œํ•˜๋Š” ์‹œ์Šคํ…œ ํ†ต์ œ๋ ฅ์„ ๊ฐ–์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ํ”„๋ ˆ์ž„์›Œํฌ ๋…๋ฆฝ์„ฑ ํ™•๋ณด: Express๋‚˜ NestJS์˜ ๊ป๋ฐ๊ธฐ๋ฅผ ๊ฑท์–ด๋‚ด๊ณ , ์ˆœ์ˆ˜ Node.js ๋‚ด์žฅ ๋ชจ๋“ˆ๋งŒ์œผ๋กœ ๊ณ ์„ฑ๋Šฅ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” '์ง„์งœ ๋ฐฑ์—”๋“œ' ์‹ค๋ ฅ์„ ์–ป์Šต๋‹ˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ํญ๋ฐœ(OOM) ๋ฐฉ์–ด: ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ(GB) ๋‹จ์œ„์˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์„œ๋ฒ„ ํฌ๋ž˜์‹œ์˜ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ณ  ๋žจ(RAM) ์ ์œ ์œจ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ์ˆ˜๋™ ๋ฐฑํ”„๋ ˆ์…”(Backpressure) ํ†ต์ œ: ๋””์Šคํฌ์™€ ๋„คํŠธ์›Œํฌ ๊ฐ„์˜ I/O ์†๋„ ๋ถˆ๊ท ํ˜•์„ OS ๋ ˆ๋ฒจ์˜ ๋ฐธ๋ธŒ ์ œ์–ด(pause, resume, drain)๋กœ ์šฐ์•„ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  • ์ŠคํŠธ๋ฆผ ํŒŒ์ดํ”„๋ผ์ธ ์ž๋™ํ™”: .pipe() ๋ฉ”์„œ๋“œ์˜ ๋‚ด๋ถ€ ์ƒํƒœ ๋จธ์‹  ์›๋ฆฌ๋ฅผ ๊ฟฐ๋šซ๊ณ , ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ ๋ฐฐ์••์„ ์•Œ์•„์„œ ์กฐ์ ˆํ•˜๋Š” ๊ณ ๋„ํ™”๋œ ์ŠคํŠธ๋ฆผ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

  • ์ปค์Šคํ…€ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ ์„ค๊ณ„: HTTP์— ์˜์กดํ•˜์ง€ ์•Š๊ณ , ํŒจํ‚ท ๋งจ ์•ž๋‹จ์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์กฐ๋ฆฝํ•˜๊ณ  ํŒŒ์‹ฑํ•˜๋Š” ๋‚˜๋งŒ์˜ ํ†ต์‹  ๊ทœ์•ฝ์„ ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์ฐฝ์กฐํ•ฉ๋‹ˆ๋‹ค.

  • TCP ๋‹จํŽธํ™” ๋ฐ ๋ณ‘ํ•ฉ ์ œ์–ด: ๋Š์ž„์—†์ด ํ๋ฅด๋Š” TCP ๋ฌผ๊ฒฐ ์†์—์„œ ์ชผ๊ฐœ์ง€๊ฑฐ๋‚˜ ๋ญ‰์ณ์„œ ๋„์ฐฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ '๋ˆ„์  ๋ฒ„ํผ๋ง'๊ณผ 'NDJSON' ๊ธฐ๋ฒ•์œผ๋กœ ์œ ์‹ค ์—†์ด ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

  • O(1) ์ž๋ฃŒ๊ตฌ์กฐ ์ตœ์ ํ™”: ์„ ํ˜• ํƒ์ƒ‰์˜ ๋ณ‘๋ชฉ์„ ์งš์–ด๋‚ด๊ณ , ํ•ด์‹œ ํ…Œ์ด๋ธ”(Map)์„ ๋„์ž…ํ•ด ์ˆ˜๋งŒ ๋ช…์˜ ์ ‘์†์ž๋ฅผ ์ง€์—ฐ ์—†์ด ํ†ต์ œํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋กœ ๋ฆฌํŒฉํ† ๋งํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹ค์ค‘ ์ ‘์† ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ ๊ตฌํ˜„: 1:1๋กœ ๊ณ ๋ฆฝ๋œ ์†Œ์ผ“ ํ™˜๊ฒฝ์„ ๋›ฐ์–ด๋„˜์–ด, ์ˆ˜๋งŽ์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…ํ•˜๋Š” ์ค‘๊ณ„ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ์ข€๋น„ ์†Œ์ผ“ ๋ฐ ์˜ˆ์™ธ ์ƒํ™ฉ ๋ฐฉ์–ด: ํด๋ผ์ด์–ธํŠธ ๊ฐ•์ œ ์ข…๋ฃŒ๋‚˜ ํšŒ์„  ์žฅ์•  ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ปค๋„ ๋ฆฌ์†Œ์Šค ๊ณ ๊ฐˆ์„ ๋ฐฉ์–ดํ•˜์—ฌ ์„œ๋ฒ„์˜ ์ƒ์กด์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • OSI 7๊ณ„์ธต์˜ ์‹ค์ฒดํ™”: ์ด๋ก ์œผ๋กœ๋งŒ ์™ธ์šฐ๋˜ ๊ณ„์ธต ๋ชจ๋ธ์„ ์‹ค์ œ ์ฝ”๋“œ(๋ฒ„ํผ, ํŒจํ‚ท, ์ง๋ ฌํ™”)์™€ 1:1๋กœ ๋งคํ•‘ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋“ค์—ฌ๋‹ค๋ณด๋Š” ์‹œ์•ผ๋ฅผ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

  • TCP์™€ UDP์˜ ๋ช…ํ™•ํ•œ ์‹ค๋ฌด ์ ์šฉ: ๋ฌด๊ฒฐ์„ฑ์ด ํ•„์š”ํ•œ ๊ณณ(TCP)๊ณผ ๊ทนํ•œ์˜ ์†๋„๊ฐ€ ํ•„์š”ํ•œ ์‹ค์‹œ๊ฐ„ ์„œ๋ฒ„(UDP)๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ , ๊ฐ ํŠน์„ฑ์— ๋งž๋Š” ์†Œ์ผ“์„ ์ž์œ ์ž์žฌ๋กœ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  • ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ ๋ผˆ๋Œ€ ์ง„๋‹จ: IPv4, ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๋น„ํŠธ ์—ฐ์‚ฐ, NAT(๊ณต์œ ๊ธฐ)์˜ ํฌํŠธ ํฌ์›Œ๋”ฉ ์›๋ฆฌ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ ๋ฐฐํฌ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ”„๋ผ ๋ฌธ์ œ๋ฅผ ์Šค์Šค๋กœ ์ง„๋‹จํ•ฉ๋‹ˆ๋‹ค.

  • ์ฐจ์„ธ๋Œ€ ์ธํ”„๋ผ IPv6 ๋งˆ์Šคํ„ฐ: 43์–ต ๊ฐœ์˜ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด์„  128๋น„ํŠธ ์ฃผ์†Œ ์ฒด๊ณ„์™€ SLAAC ์ž์œจ ์ฃผํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋“ฑ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ์ƒˆ๋กœ์šด ํ‘œ์ค€์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธ€๋กœ๋ฒŒ ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜ ์ดํ•ด ๋ฐ ํฌํŠธํด๋ฆฌ์˜ค ์™„์„ฑ: DNS ๋ฃฉ์—…๊ณผ GSLB ์‹œ์Šคํ…œ์˜ ํฐ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ '๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด CLI ์ฑ„ํŒ… ์„œ๋ฒ„'์™€ 'OOM ํ”„๋ฆฌ ๋Œ€์šฉ๋Ÿ‰ ์—…๋กœ๋”'๋ฅผ ์ง์ ‘ ์™„์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๋„คํŠธ์›Œํฌ ์ฝ”์–ด ์—”์ง„ ํ•ด๋ถ€: ๋ฌผ๋ฆฌ์  ์ „๊ธฐ ์‹ ํ˜ธ๋ถ€ํ„ฐ MAC, IP, Port๋ฅผ ๊ฑฐ์ณ Node.js V8 ์—”์ง„์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฝ‚ํžˆ๋Š” 6๋‹จ๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ.

  • TCP/UDP ์†Œ์ผ“ ๋งˆ์Šคํ„ฐ๋ฆฌ: ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” 3-Way Handshake ํ†ต์‹ ๊ณผ 8๋ฐ”์ดํŠธ ํ—ค๋”๋กœ ๊ทนํ•œ์˜ ์†๋„๋ฅผ ๋‚ด๋Š” Datagram ํ†ต์‹ ์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„.

  • ์ปดํ“จํ„ฐ ๊ณตํ•™์  ์ธํ”„๋ผ ๊ตฌ์กฐ๋ก : ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๋น„ํŠธ ์—ฐ์‚ฐ, NAT์˜ ์‚ฌ์„ค/๊ณต์ธ IP ๋‘”๊ฐ‘์ˆ , DNS ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜, IPv6 ์Šค์ฝ”ํ”„(Scope).

  • ํ”„๋กœ๋•์…˜ ๋ ˆ๋ฒจ ๋ณด์•ˆ/์˜ˆ์™ธ ์ฒ˜๋ฆฌ: ์Šคํ‘ธํ•‘(Spoofing), ์Šค๋‹ˆํ•‘(Sniffing)์˜ ์œ„ํ—˜์„ฑ ํŒŒ์•… ๋ฐ ์„œ๋ฒ„ ํฌ๋ž˜์‹œ๋ฅผ ๋ง‰๋Š” ๋ฐฑ์—”๋“œ ์ตœ์ ํ™” ๋กœ์ง.

๐ŸŽ“ "AI ๋”ธ๊น์˜ ์‹œ๋Œ€" ์›๋ฆฌ๋กœ ๋ŒํŒŒํ•˜๋Š” Node.js์™€ CS Part 3: TCP/UDP ์†Œ์ผ“๊ณผ ๋„คํŠธ์›Œํฌ ์ฝ”์–ด

AI๊ฐ€ ์ฝ”๋“œ๋ฅผ ์Ÿ์•„๋‚ด๋Š” ์‹œ๋Œ€, ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์˜ ์ง„์งœ ๋ฌด๊ธฐ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

๋‹จ์ˆœํžˆ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ API๋ฅผ '์ฐ์–ด๋‚ด๋Š” ๊ฒƒ'์„ ๋„˜์–ด, ์ˆ˜๋ฐฑ๋งŒ ํŠธ๋ž˜ํ”ฝ์ด ์Ÿ์•„์ง€๋Š” '๋„คํŠธ์›Œํฌ ์ฝ”์–ด ์—”์ง„'์„ ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ํ†ต์ œํ•˜๋Š” ํž˜์ž…๋‹ˆ๋‹ค. "๋”ธ๊น" ๋ช‡ ๋ฒˆ์˜ ํ”„๋กฌํ”„ํŠธ๋ฉด ๊ทธ๋Ÿด์‹ธํ•œ ์„œ๋ฒ„๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ์‹œ๋Œ€์ž…๋‹ˆ๋‹ค.

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

์ด ๊ฐ•์˜๋Š” Express์™€ NestJS์˜ ๋ณด๋‹›์„ ์™„์ „ํžˆ ์—ด์–ด์ –ํžˆ๊ณ , OS ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋žœ์นด๋“œ(NIC)๊ฐ€ ์†Œํ†ตํ•˜๋Š” Low-level ํŒŒ์ดํ”„๋ผ์ธ์„ ์ง์ ‘ ๋šซ์–ด๋‚ด๋Š” ํ•˜์ด์—”๋“œ ์•„ํ‚คํ…์ฒ˜ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” "๋„คํŠธ์›Œํฌ์˜ ๊ฐ€์žฅ ๋ฐ‘๋ฐ”๋‹ฅ์—์„œ ํŒจํ‚ท์€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ด๋™ํ•˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ๋ฐฉ์–ด๋˜๋Š”๊ฐ€?"๋ผ๋Š” ๊ทผ๋ณธ์ ์ธ ์ปดํ“จํ„ฐ ๊ณตํ•™์  ์งˆ๋ฌธ์—์„œ ์ถœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฌด๊ฒฐ์„ฑ์˜ TCP์™€ ๊ทนํ•œ์˜ ์†๋„ UDP์— ๋Œ€ํ•œ ํ•˜๋“œ์›จ์–ด์  ์ œ์–ด

  • TCP ์ŠคํŠธ๋ฆผ ๋‹จํŽธํ™”(Fragmentation)ํ•จ์ •์˜ ์™„๋ฒฝํ•œ ๋ณต์›

  • ๋ฉ”๋ชจ๋ฆฌ ํญ๋ฐœ์„ ๋ง‰๋Š” ๋ฐฐ์••(Backpressure) ์ˆ˜๋™ ํ†ต์ œ์™€ .pipe() ์ž๋™ํ™”

  • ๋‚˜๋งŒ์˜ ์ปค์Šคํ…€ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ(NDJSON) ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์ฐฝ์กฐ

  • IPv6 ์ž์œจ ์ฃผํ–‰๊ณผ DNS/GSLB ๊ธฐ๋ฐ˜์˜ ๊ธ€๋กœ๋ฒŒ ๋ถ„์‚ฐ ์ธํ”„๋ผ ๋งคํ•‘๊นŒ์ง€

๋„คํŠธ์›Œํฌ์™€ ์‹œ์Šคํ…œ์˜ ๊ฑฐ๋Œ€ํ•œ ๋ผˆ๋Œ€๋ฅผ ์™„๋ฒฝํžˆ ์ •๋ณตํ•˜๋ฉฐ, ๋‹จ 1๋ฐ”์ดํŠธ์˜ ์œ ์‹ค์ด๋‚˜ ํ•œ ๋ฒˆ์˜ ์„œ๋ฒ„ ํฌ๋ž˜์‹œ๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฌด๊ฒฐ์  ๋ฐฉ์–ด ๋กœ์ง์„ 2๊ฐœ์˜ ์‹ค์ „ ํ”„๋กœ์ ํŠธ(๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด CLI ์ฑ„ํŒ… ์„œ๋ฒ„, 10GB ๋™์˜์ƒ ์—…๋กœ๋” ๊ตฌ์ถ•)๋ฅผ ํ†ตํ•ด ์†๋์œผ๋กœ ์ฒด๋“ํ•ฉ๋‹ˆ๋‹ค.

AI๊ฐ€ ์จ์ฃผ๋Š” ์ฝ”๋“œ์— ์ˆ˜๋™์ ์œผ๋กœ ๊ธฐ๋Œ€๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์ด์ œ๋Š” ๊นŠ์ด ์žˆ๋Š” ์ปดํ“จํ„ฐ ๊ณตํ•™ ์›๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ AI์—๊ฒŒ ๋ช…ํ™•ํ•œ '์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜'๋ฅผ ์ง€์‹œํ•˜๊ณ  ํ†ต์ œํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ๋Œ€์ฒด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒ์œ„ 1%์˜ ์—”์ง„ ์„ค๊ณ„์ž๋กœ ๋„์•ฝํ•˜๋Š” ์—ฌ์ •, ์ง€๊ธˆ ๋ฐ”๋กœ ์‹œ์ž‘ํ•ด ๋ด…์‹œ๋‹ค.


๐Ÿงฑ ๊ฐ•์˜ ๊ตฌ์„ฑ์˜ ํ•ต์‹ฌ ์ฒ ํ•™

๐Ÿ“Œ โ€œํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋งˆ๋ฒ•์— ๊ธฐ๋Œ€์ง€ ๋ง๊ณ , ์‹œ์Šคํ…œ์˜ ๋ผˆ๋Œ€๋ฅผ ์ง์ ‘ ํ†ต์ œํ•˜๋ผ.โ€

โ†’ AI๋Š” Express๋‚˜ NestJS ๊ฐ™์€ ์ƒ์œ„ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ดˆ ๋‹จ์œ„๋กœ ์ฐ์–ด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋ ˆ์ž„์›Œํฌ ๋’ค์— ์ˆจ๊ฒจ์ง„ ๋ธ”๋ž™๋ฐ•์Šค ์ž์ฒด๋ฅผ ํ†ต์ œํ•˜์ง€ ๋ชปํ•˜๋ฉด ์ธํ”„๋ผ ๋ณ‘๋ชฉ ์•ž์—์„œ ๋ฌด๋ ฅํ•ด์ง‘๋‹ˆ๋‹ค. ์™ธ์šฐ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ๋ฒ•์„ ๊ณผ๊ฐํžˆ ๋ฒ„๋ฆฌ๊ณ , ์ˆœ์ˆ˜ Node.js ๋‚ด์žฅ ๋ชจ๋“ˆ๋งŒ์œผ๋กœ ์šด์˜์ฒด์ œ(OS) ์ปค๋„๊ณผ ๋žœ์นด๋“œ(NIC)๊ฐ€ ์†Œํ†ตํ•˜๋Š” ๋กœ์šฐ ๋ ˆ๋ฒจ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ง์ ‘ ๋šซ์–ด๋‚ด๋ฉฐ AI๊ฐ€ ์ ˆ๋Œ€ ํ‰๋‚ด ๋‚ผ ์ˆ˜ ์—†๋Š” '์—”์ง„ ์„ค๊ณ„์ž'์˜ ํ†ต์ œ๊ถŒ์„ ์ฅก๋‹ˆ๋‹ค.

๐Ÿ“Œ โ€œ๋ฐ์ดํ„ฐ๋Š” ์ •์ง€๋œ ๋ฉ์–ด๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ, ํญ์ฃผํ•˜๋Š” ๋ฌผ๊ฒฐ์ด๋‹ค.โ€

โ†’ ์ˆ˜ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ(GB)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ํŒŒ์ผ์„ ํ•œ ๋ฒˆ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋ ค๋Š” ์ˆœ์ง„ํ•œ ์ฝ”๋“œ๋Š” ์„œ๋ฒ„๋ฅผ ์ฆ‰์‹œ ์ฃฝ์Œ(OOM)์œผ๋กœ ๋ชฐ๊ณ  ๊ฐ‘๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฑฐ์ณ ๋„คํŠธ์›Œํฌ๋กœ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ์†๋„์˜ ๋ถˆ๊ท ํ˜•์„ ์ธ์ง€ํ•˜๊ณ , ์ŠคํŠธ๋ฆผ(Stream)์˜ ๋‚ด๋ถ€ ๋ฒ„ํผ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ฉฐ ์ˆ˜๋ฌธ์„ ์—ด๊ณ  ๋‹ซ๋Š” '๋ฐฑํ”„๋ ˆ์…”(Backpressure)' ์ œ์–ด์™€ .pipe() ์ž๋™ํ™” ํ๋ฆ„์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฑฐ์‹œ์  ํ๋ฆ„์„ ์žฅ์•…ํ•ด์•ผ๋งŒ ์–ด๋–ค ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฐ๋ ค์™€๋„ ์ ˆ๋Œ€ ํ„ฐ์ง€์ง€ ์•Š๋Š” ๊ฐ•์ธํ•œ ์„œ๋ฒ„๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ โ€œ๋ชจ๋“  ์ „์†ก์— ๊ผผ๊ผผํ•œ ๋„์ฐฉ ํ™•์ธ์ฆ์ด ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.โ€

โ†’ ์ฒ ์ €ํ•œ ๋ฌด๊ฒฐ์„ฑ์ด ์ƒ๋ช…์ธ TCP์™€ ๊ทนํ•œ์˜ ์†๋„๊ฐ€ ์ƒ๋ช…์ธ UDP์˜ ์ฒ ํ•™์  ์ฐจ์ด๋ฅผ ํ•˜๋“œ์›จ์–ด ๋ ˆ๋ฒจ์—์„œ ํ•ด๋ถ€ํ•ฉ๋‹ˆ๋‹ค. 1์ดˆ์— ์ˆ˜๋ฐฑ ๋ฒˆ ์บ๋ฆญํ„ฐ ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ๋Š” ์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„ ์„œ๋ฒ„๋‚˜ ์ŠคํŠธ๋ฆฌ๋ฐ ํ™˜๊ฒฝ์—์„œ TCP์˜ ํ™•์ธ ์‘๋‹ต์ด ์–ผ๋งˆ๋‚˜ ์น˜๋ช…์ ์ธ ๋…์ด ๋˜๋Š”์ง€ ๊นจ๋‹ซ๊ณ , ๋‹จ 8๋ฐ”์ดํŠธ์˜ ๊ฐ€๋ฒผ์šด ํ—ค๋”์™€ DMA(Direct Memory Access) ๊ธฐ์ˆ ๋กœ ์ง์„ ๋ฒ—์–ด๋˜์ง€๊ณ  ์งˆ์ฃผํ•˜๋Š” UDP ์†Œ์ผ“ ์•„ํ‚คํ…์ฒ˜์˜ ์ง„๊ฐ€๋ฅผ ๊ฒฝํ—˜ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ โ€œ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์€ ์ฃผ์–ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.โ€

โ†’ ๋Š์ž„์—†์ด ํ๋ฅด๋Š” TCP ๋ฌผ๊ฒฐ ์†์—์„œ ํŒจํ‚ท์ด ์ชผ๊ฐœ์ง€๊ฑฐ๋‚˜ ๋ญ‰์น˜๋Š” ๋‹จํŽธํ™”(Fragmentation)์™€ ๋ณ‘ํ•ฉ ๋”œ๋ ˆ๋งˆ๋ฅผ ๋งˆ์ฃผํ–ˆ์„ ๋•Œ, ๋‚จ์ด ๋งŒ๋“  HTTP ๊ทœ์•ฝ ๋’ค๋กœ ์ˆจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋งจ ์•ž๋‹จ์— ์ง์ ‘ ํŒŒ์ผ๋ช… ๊ผฌ๋ฆฌํ‘œ(ํ—ค๋”)๋ฅผ ์กฐ๋ฆฝํ•ด ๋„ฃ๊ณ , ๋ˆ„์  ๋ฒ„ํผ๋ง๊ณผ ๊ธ€๋กœ๋ฒŒ ํ‘œ์ค€์ธ NDJSON ํ”„๋กœํ† ์ฝœ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋‚˜๋งŒ์˜ ์ปค์Šคํ…€ ํ†ต์‹  ๊ทœ์•ฝ์„ ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์ฐฝ์กฐํ•ด ๋ƒ…๋‹ˆ๋‹ค.

๐Ÿ“Œ โ€œ๋‚ด ์ฝ”๋“œ๊ฐ€ ๋ฌผ๋ฆฌ์  ์„ธ์ƒ์„ ๋งŒ๋‚˜๋Š” ์ˆœ๊ฐ„์˜ ์ง€๋„๋ฅผ ๊ทธ๋ ค๋ผ.โ€

โ†’ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ํ—ˆ๊ณต์„ ๋‚ ์•„๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๋น„ํŠธ ์—ฐ์‚ฐ, NAT์˜ ์‚ฌ์„ค/๊ณต์ธ IP ๋‘”๊ฐ‘์ˆ , ARP / MAC ์ฃผ์†Œ์˜ ๋ฆด๋ ˆ์ด ์‹œ์Šคํ…œ๋ถ€ํ„ฐ ์‚ฌ์„ค๋ง์„ ์™„๋ฒฝํžˆ ํ˜์‹ ํ•˜๋Š” ์ฐจ์„ธ๋Œ€ IPv6์˜ ์ž์œจ ์ฃผํ–‰(SLAAC) ๋ฉ”์ปค๋‹ˆ์ฆ˜๊นŒ์ง€, ๋ฐ์ดํ„ฐ๊ฐ€ ๋ผ์šฐํ„ฐ๋ฅผ ๋šซ๊ณ  ์ „ ์„ธ๊ณ„๋กœ ๋ป—์–ด๋‚˜๊ฐ€๋Š” ์ธํ”„๋ผ์˜ ๋ฌผ๋ฆฌ์  ํ๋ฆ„์„ ์™„๋ฒฝํ•˜๊ฒŒ ์žฅ์•…ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ โ€œ๋‹จ์ผ ์„œ๋ฒ„์˜ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด, ๊ธ€๋กœ๋ฒŒ ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜๋กœ ์กฐ๋งํ•˜๋ผ.โ€

โ†’ ์ˆ˜์ฒœ๋งŒ ํŠธ๋ž˜ํ”ฝ ์•ž์—์„œ๋„ ์˜์—…์„ ๋ฉˆ์ถ”์ง€ ์•Š๋Š” ์ƒ์šฉ ์„œ๋น„์Šค๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด DNS ๋ฃฉ์—…์˜ 5๋‹จ๊ณ„ ๋ฆด๋ ˆ์ด ๊ณผ์ •์„ ํ†ต๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ IP๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๊ณ„๋ฅผ ๋„˜์–ด ์‚ฌ์šฉ์ž์˜ ๋ฌผ๋ฆฌ์  ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•ด ์ตœ์ ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฝ• ์ง‘์–ด์ฃผ๊ณ  ์žฌํ•ด ๋ณต๊ตฌ(DR)๊นŒ์ง€ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” GSLB์™€ CDN, ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์˜ ๊ฑฐ๋Œ€ํ•œ ์ฒญ์‚ฌ์ง„์„ ๋จธ๋ฆฟ์†์— ๊ฐ์ธ์‹œํ‚ต๋‹ˆ๋‹ค.

๐Ÿ“Œ โ€œAI ์‹œ๋Œ€์˜ ์ง„์งœ ๊ฒฝ์Ÿ๋ ฅ์€ ์ฝ”๋“œ ์ƒ์‚ฐ์ด ์•„๋‹Œ, ๋ธ”๋ž™๋ฐ•์Šค๋ฅผ ํ•ด์ฒดํ•˜๋Š” ๋””๋ฒ„๊น… ๋Šฅ๋ ฅ์ด๋‹ค.โ€

โ†’ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ถœ๋ ฅํ•˜๋Š” ์ผ์€ AI๊ฐ€ ๋” ์ž˜ํ•˜๋Š” ์‹œ๋Œ€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ AI๊ฐ€ ์ƒ์„ฑํ•œ ๋„คํŠธ์›Œํฌ ์ฝ”๋“œ์—์„œ ๋ฏธ์„ธํ•œ ์†Œ์ผ“ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ๋น„๋™๊ธฐ ๋ฐฐ์•• ์ œ์–ด๊ฐ€ ๋ฌด๋„ˆ์ ธ ์„œ๋ฒ„๊ฐ€ ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ํฌ๋ž˜์‹œ๋  ๋•Œ, ๊ทธ ์›์ธ์„ ์ฐพ์•„ ์ˆ˜์ˆ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์˜ค์ง ๋กœ์šฐ ๋ ˆ๋ฒจ ์›๋ฆฌ๋ฅผ ์•„๋Š” ์ธ๊ฐ„ ์—”์ง€๋‹ˆ์–ด๋ฟ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๋‚ด๋ถ€๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋“ค์—ฌ๋‹ค๋ณด๋Š” ํž˜์ด์•ผ๋ง๋กœ AI ์‹œ๋Œ€์— ๋„ํƒœ๋˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ์ ˆ๋Œ€ ์—ญ๋Ÿ‰์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ โ€œAI์—๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ตฌ๊ฑธํ•˜์ง€ ๋ง๊ณ , ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋ฅผ ์ง€์‹œํ•˜๋ผ.โ€

โ†’ "์ด ์—๋Ÿฌ ๊ณ ์ณ์ค˜"๋ผ๋Š” ๋‹จํŽธ์ ์ธ ์งˆ๋ฌธ์€ ๋ฌด์˜๋ฏธํ•œ ํ† ํฐ๊ณผ ๋น„์šฉ๋งŒ ๋‚ญ๋น„ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ ๊ณตํ•™์˜ ๊นŠ์€ ์›๋ฆฌ๋ฅผ ๋ผˆ๋Œ€์— ์ƒˆ๊น€์œผ๋กœ์จ, AI์—๊ฒŒ "TCP ๋‹จํŽธํ™”๋ฅผ ๋ฐฉ์–ดํ•  NDJSON ๋ฒ„ํผ๋ง ๋กœ์ง๊ณผ ๋ฐฐ์•• ํ†ต์ œ ์ฝ”๋“œ๋ฅผ ์„ค๊ณ„ํ•ด ์ค˜"์™€ ๊ฐ™์ด ์‹œ์Šคํ…œ ๋‹จ์œ„์˜ ๋ช…ํ™•ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ •ํ™•ํ•œ CS ์šฉ์–ด๋กœ ์ง€์‹œํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ์ƒ์œ„ 1%์˜ 'ํ•˜์ด ์ปจํ…์ŠคํŠธ ์•„ํ‚คํ…ํŠธ'๋กœ ์ง„ํ™”ํ•ฉ๋‹ˆ๋‹ค.


โœจ ์ด ๊ฐ•์˜์˜ ํŠน์ง•

  • ์ˆœ์ˆ˜ Node.js ๋„คํŠธ์›Œํฌ ์ฝ”์–ด ๋ชจ๋“ˆ ์™„๋ฒฝ ํ†ต์ œ โ†’ ์™ธ๋ถ€ ํŒจํ‚ค์ง€์™€ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ถ”์ƒํ™”๋œ ํฌ์žฅ์ง€๋ฅผ ๊ฑท์–ด๋‚ด๊ณ  net, dgram, fs ๋ชจ๋“ˆ๋งŒ์œผ๋กœ L4 ๊ณ„์ธต์˜ ์†Œ์ผ“ ํ†ต์‹ ์„ ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์•ˆ์ „ํ•˜๊ฒŒ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

  • OOM ์ œ๋กœ, ์ŠคํŠธ๋ฆผ ๋ฐฐ์••(Backpressure) ์ž๋™ํ™” โ†’ pause, resume, drain์„ ํ™œ์šฉํ•œ ์ •๊ตํ•œ ์ˆ˜๋™ ๋ฐธ๋ธŒ ํ†ต์ œ๋ถ€ํ„ฐ .pipe() ๋‚ด๋ถ€ ์ƒํƒœ ๋จธ์‹ ์˜ ์ž๋™ ๋ฌผ ๋นผ๊ธฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊นŒ์ง€ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์ •์ˆ˜๋ฅผ ๋งˆ์Šคํ„ฐํ•ฉ๋‹ˆ๋‹ค.

  • ๋‚˜๋งŒ์˜ ์ปค์Šคํ…€ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ โ†’ ํŒจํ‚ท์˜ ๊ฒฝ๊ณ„๊ฐ€ ์—†๋Š” TCP ์ŠคํŠธ๋ฆผ์„ ํ†ต์ œํ•˜๊ธฐ ์œ„ํ•ด, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฒ„ํผ์— ์ง์ ‘ ๊ณ ์œ ํ•œ ๊ตฌ๋ถ„์ž(-----BOF-----)๋ฅผ ์‹ฌ๊ณ  ๋™์ ์œผ๋กœ ํŒŒ์‹ฑํ•˜๋Š” ๋…๋ฆฝ์  ํ”„๋กœํ† ์ฝœ์„ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • AI๋ฅผ ์ง€๋ฐฐํ•˜๋Š” 'ํ•˜์ด ์ปจํ…์ŠคํŠธ(High-Context)' ์–ธ์–ด ํƒ‘์žฌ โ†’ ๋ชจํ˜ธํ•œ ์„ค๋ช… ๋Œ€์‹  ์ •๊ตํ•œ ์ปดํ“จํ„ฐ ๊ณตํ•™ ์šฉ์–ด๋กœ ์‹œ์Šคํ…œ์„ ์ •์˜ํ•˜์—ฌ, AI๋กœ๋ถ€ํ„ฐ ๋‹จ ํ•œ ๋ฒˆ์˜ ํ”„๋กฌํ”„ํŠธ ๋งŒ์œผ๋กœ ์™„๋ฒฝํ•œ ์•„ํ‚คํ…์ฒ˜ ์ฝ”๋“œ๋ฅผ ๋ฝ‘์•„๋‚ด๋Š” ์ตœ์ƒ์œ„ ํ†ต์ œ๋ ฅ์„ ํš๋“ํ•ฉ๋‹ˆ๋‹ค.

  • O(N) ์„ ํ˜• ํƒ์ƒ‰ ๋ณ‘๋ชฉ์„ O(1) ์˜์—ญ์œผ๋กœ ์ตœ์ ํ™” โ†’ ๋ฐฐ์—ด ๊ตฌ์กฐ ์žฅ๋ถ€์˜ ์น˜๋ช…์ ์ธ ๋น„ํšจ์œจ์„ฑ์„ ํ•ด์‹œ ํ…Œ์ด๋ธ”(Map) ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ „๋ฉด ๊ฐœ์กฐํ•˜์—ฌ, ์œ ์ € ์ˆ˜๊ฐ€ ๋ฐฑ ๋ช…์ด๋“  ๋ฐฑ๋งŒ ๋ช…์ด๋“  ๋‹จ ํ•œ ๋ฒˆ์˜ ์—ฐ์‚ฐ ์†๋„๋กœ ์„ธ์…˜์„ ์ดˆ๊ณ ์† ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ํ•˜๋“œ์›จ์–ด ๋ฐ ๋Ÿฐํƒ€์ž„ ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ์ œ์–ด โ†’ process.stdin / process.stdout ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ๊ณผ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ(FD)๋ฅผ ์™„๋ฒฝํžˆ ํ†ต์ œํ•˜๊ณ , ํ„ฐ๋ฏธ๋„ ์ปค์„œ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ANSI ์ด์Šค์ผ€์ดํ”„ ์ฝ”๋“œ์™€ process.argv ๊ธฐ๋ฐ˜์˜ CLI ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฐจ์„ธ๋Œ€ ์ธํ”„๋ผ ๋ฐ ๊ธ€๋กœ๋ฒŒ ๋ถ„์‚ฐ ๋งต ์žฅ์•… โ†’ IPv4 / IPv6, Subnet, NAT์˜ ์›๋ฆฌ๋ฅผ ๋„˜์–ด DNS ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜์™€ GSLB, CDN, ๊ทธ๋ฆฌ๊ณ  ๋ฌด๊ฑฐ์šด TCP๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๊ฐ€๋ฒผ์šด UDP ์†Œ์ผ“ ์œ„์— ์‹ ๋ขฐ์„ฑ์„ ์–น์€ ํ˜„๋Œ€ HTTP/3 (QUIC) ํŒจ๋Ÿฌ๋‹ค์ž„๊นŒ์ง€ ํ†ต์ฐฐํ•ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœ๋•์…˜ ๋ ˆ๋ฒจ์˜ 2๋Œ€ ํ•ต์‹ฌ ์ฝ”์–ด ์—”์ง„ ์ง์ ‘ ๊ตฌ์ถ• โ†’ ํ•ด์‹œ ํ…Œ์ด๋ธ” ์„ธ์…˜ ๊ด€๋ฆฌ๊ฐ€ ์œตํ•ฉ๋œ '์‹ค์‹œ๊ฐ„ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด CLI ์ฑ„ํŒ… ์„œ๋ฒ„'์™€, ๋ฉ”๋ชจ๋ฆฌ ํญ๋ฐœ ์—†์ด 10GB ๋น„๋””์˜ค๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์˜์•„ ์˜ฌ๋ฆฌ๋Š” '๋ฌด๊ฒฐ์  ๋Œ€์šฉ๋Ÿ‰ TCP ํŒŒ์ผ ์—…๋กœ๋” ํ”„๋กœ๊ทธ๋žจ'์„ ์†์ˆ˜ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์ข€๋น„ ์†Œ์ผ“ ๋ฐ ์„œ๋ฒ„ ํฌ๋ž˜์‹œ 2์ค‘ ๋ฐฉ์–ด๋ง ์„ค๊ณ„ โ†’ ํด๋ผ์ด์–ธํŠธ์˜ ๋น„์ •์ƒ ๊ฐ•์ œ ์ข…๋ฃŒ(ECONNRESET)์™€ ์•…์„ฑ ์“ฐ๋ ˆ๊ธฐ ๋ฐ์ดํ„ฐ ํญ๊ฒฉ ์•ž์—์„œ๋„ ์„œ๋ฒ„๊ฐ€ ์ ˆ๋Œ€ ์ฃฝ์ง€ ์•Š๋„๋ก, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜์™€ ์ž์› ๊ณ ๊ฐˆ์„ ์›์ฒœ ์ฐจ๋‹จํ•˜๋Š” ์˜ˆ์™ธ ๋ฐฉ์–ด ์ „๋žต์„ ์ฒด๋“ํ•ฉ๋‹ˆ๋‹ค.


1๏ธโƒฃ ์šด์˜์ฒด์ œ ์งํ†ต ํ†ต์‹  ํ—ˆ๋ธŒ ๊ตฌ์ถ•:
์™ธ๋ถ€ ํ•˜๋“œ์›จ์–ด(NIC)๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š” ์ดˆ๊ณ ์† ๋กœ์ปฌ ํ†ต์‹ (IPC)๊ณผ ์ธํ„ฐ๋„ท๋ง์„ ํƒ€๋Š” ๊ธ€๋กœ๋ฒŒ TCP ํ†ต์‹ ์˜ ๊ฒฝ๊ณ„๋ฅผ ํ•ด์ฒดํ•˜๋ฉฐ, ํ”„๋ ˆ์ž„์›Œํฌ ์—†์ด net ๋ชจ๋“ˆ๋งŒ์œผ๋กœ ์†Œ์ผ“ ํ„ฐ๋„์„ ๊ฐœํ†ตํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ๊ณผ ํ•˜๋“œ์›จ์–ด ์ œ์–ด:
process.stdin๊ณผ process.stdout ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์„ ์™„๋ฒฝํžˆ ํ†ต์ œํ•˜๊ณ , ANSI ์ด์Šค์ผ€์ดํ”„ ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•ด ํ„ฐ๋ฏธ๋„ ํ™”๋ฉด ์ถฉ๋Œ ์—†๋Š” ์–‘๋ฐฉํ–ฅ CLI UI๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ๋ฌผ๋ฆฌยท๋…ผ๋ฆฌ ๊ณ ์œ  ์‹๋ณ„์ž ์•„ํ‚คํ…์ฒ˜:
์šด์˜์ฒด์ œ๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ํ• ๋‹นํ•˜๋Š” ์ž„์‹œ ๋ฌผ๋ฆฌ ํฌํŠธ(Ephemeral Port)์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ , ์†Œ์ผ“ ์—ฐ๊ฒฐ์ด ๋Š๊ฒจ๋„ ์œ ์ €๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ถ”์ ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต๋งŒ์˜ ์„ธ์…˜ ์žฅ๋ถ€๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.


5๏ธโƒฃ ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ ๊ทœ์•ฝ ํ™•๋ฆฝ:
๋ฌธ์ž์—ด์„ ๊ธฐ๊ณ„์ ์œผ๋กœ ์ž๋ฅด๋˜ ์œ„ํ—˜ํ•œ ๋ฐฉ์‹์„ ๋ฒ„๋ฆฌ๊ณ , ๋ฐ์ดํ„ฐ ๊ฐ์ฒด์˜ JSON ์ง๋ ฌํ™”์™€ ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ฐ˜ ๋ถ„๊ธฐ ๋ผ์šฐํŒ…์„ ๋„์ž…ํ•ด ์˜ˆ์™ธ ์ƒํ™ฉ์— ๋ฌด๋„ˆ์ง€์ง€ ์•Š๋Š” ๋‚˜๋งŒ์˜ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์„ ์ฐฝ์กฐํ•ฉ๋‹ˆ๋‹ค.


4๏ธโƒฃ ์„ ํ˜• ํƒ์ƒ‰ ๋ณ‘๋ชฉ์˜ O(1) ๋ฌด๋ ฅํ™”:
๋ฐฐ์—ด ์žฅ๋ถ€์˜ ํŒŒ๊ดด์ ์ธ O(N) ํƒ์ƒ‰์„ ์ปดํ“จํ„ฐ ๊ณตํ•™์˜ ๊ฝƒ์ธ ํ•ด์‹œ ํ…Œ์ด๋ธ”(Map)๋กœ ์ „๋ฉด ๊ฐœ์กฐํ•˜์—ฌ, ์ ‘์†์ž ๊ทœ๋ชจ์— ์ƒ๊ด€์—†์ด O(1) ์ƒ์ˆ˜์˜ ์†๋„๋กœ ์„ธ์…˜์„ ์ดˆ๊ณ ์† ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


6๏ธโƒฃ TCP ์ŠคํŠธ๋ฆผ ๋‹จํŽธํ™”(Fragmentation) ๋”œ๋ ˆ๋งˆ: ๋„คํŠธ์›Œํฌ ํšจ์œจ์„ฑ ๋ฌธ์ œ๋กœ ํŒจํ‚ท์ด ๋ญ‰์น˜๊ฑฐ๋‚˜ ์ชผ๊ฐœ์ ธ์„œ ๋„์ฐฉํ•˜๋Š” TCP ์ŠคํŠธ๋ฆผ์˜ ํƒœ์ƒ์  ํ•œ๊ณ„๋ฅผ ๋งˆ์ฃผํ•˜๊ณ , ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ๊ณ„์„ ์„ ์ง์ ‘ ์กฐ๋ฆฝํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(ํ—ค๋”) ํŒŒ์‹ฑ ์ „๋žต์„ ์ˆ˜๋ฆฝํ•ฉ๋‹ˆ๋‹ค.

7๏ธโƒฃ NDJSON ๊ธฐ๋ฐ˜ ๋ฌด๊ฒฐ์  ๋ฒ„ํผ๋ง ๋ณต์›:
์œ ์ €๋ณ„ ํด๋กœ์ € ๊ณต๊ฐ„์„ ํ™œ์šฉํ•œ ๋ˆ„์  ๋ฒ„ํผ๋ง ๊ธฐ์ˆ ๊ณผ ๊ธ€๋กœ๋ฒŒ ์ŠคํŠธ๋ฆฌ๋ฐ ํ‘œ์ค€์ธ NDJSON ๊ทœ๊ฒฉ์„ ๊ฒฐํ•ฉํ•˜์—ฌ, ๋‹จ 1๋ฐ”์ดํŠธ์˜ ์œ ์‹ค๋„ ์—†์ด ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งค๋„๋Ÿฝ๊ฒŒ ๋ณต์›ํ•ด ๋ƒ…๋‹ˆ๋‹ค.

8๏ธโƒฃ์†๋„ ๋ถˆ๊ท ํ˜•๊ณผ ์ˆ˜๋™ ๋ฐฐ์••(Backpressure) ํ†ต์ œ:
์ดˆ๊ณ ์† ๋””์Šคํฌ์™€ ๋А๋ฆฐ ๋„คํŠธ์›Œํฌ ๊ฐ„์˜ ๋ณ‘๋ชฉ์ด ์–ด๋–ป๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ํญ๋ฐœ(OOM)์„ ์ผ์œผํ‚ค๋Š”์ง€ ๋ถ„์„ํ•˜๊ณ , pause(), resume(), drain ๋ฐธ๋ธŒ๋ฅผ ์ง์ ‘ ์กฐ์ ˆํ•˜๋Š” ์ˆ˜๋™ ๋ฐฐ์•• ์ œ์–ด๋ฅผ ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.

9๏ธโƒฃ .pipe() ์ž๋™ํ™”์™€ ๋™์  ํ—ค๋” ์•„ํ‚คํ…์ฒ˜:
์ˆ˜๋™ ๋ฐธ๋ธŒ ์ œ์–ด๋ฅผ ๋‹จ ํ•œ ์ค„์˜ ์ˆ˜๋„๊ด€์ธ .pipe() ๋‚ด๋ถ€ ์ƒํƒœ ๋จธ์‹ ์œผ๋กœ ์ž๋™ํ™”ํ•˜๊ณ , process.argv ๊ธฐ๋ฐ˜์˜ CLI ๋™์  ์ธ์ž ์ „์†ก ๊ธฐ๋ฒ•์„ ๊ฒฐํ•ฉํ•ด ํ”„๋กœ๋•์…˜ ๋ ˆ๋ฒจ์˜ ํŒŒ์ผ ์—…๋กœ๋”๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”Ÿ ๊ธ€๋กœ๋ฒŒ ์ธํ”„๋ผ ๋ฐ UDP ์พŒ์† ํ†ต์‹  ๋งˆ์Šคํ„ฐ:
์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ, NAT, IPv6 ์ž์œจ ์ฃผํ–‰(SLAAC) ๋ฉ”์ปค๋‹ˆ์ฆ˜๋ถ€ํ„ฐ DNS ๋ฃฉ์—…๊ณผ GSLB ์ฒญ์‚ฌ์ง„์„ ๊ทธ๋ฆฌ๊ณ , ๊ทนํ•œ์˜ ์†๋„๋ฅผ ๋‚ด๋Š” UDP ์†Œ์ผ“ ํ†ต์‹ ๊นŒ์ง€ ๊ธ€๋กœ๋ฒŒ ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ •๋ณตํ•ฉ๋‹ˆ๋‹ค.

AI ์ฝ”๋“œ ๋ณต๋ถ™์— ์˜์กดํ•˜๋‹ค ๋กœ์ง ํ™•์žฅ๊ณผ ํŠธ๋ž˜ํ”ฝ ๋ณ‘๋ชฉ ์•ž์—์„œ ์„ฑ์žฅ์ด ๋ง‰ํžŒ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ฉด์˜ ๋กœ์šฐ ๋ ˆ๋ฒจ ๋ณ‘๋ชฉ(TCP ๋‹จํŽธํ™”, ๋ฐฐ์•• ์ œ์–ด ๋“ฑ)์„ ๊ฐ„ํŒŒํ•˜๊ณ  ์ง์ ‘ ํ†ต์ œํ•˜๊ณ  ์‹ถ์€ ์—”์ง€๋‹ˆ์–ด

DNS, GSLB, CDN ๋“ฑ ๊ธ€๋กœ๋ฒŒ ์Šค์ผ€์ผ์˜ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ๊ณผ ์ฐจ์„ธ๋Œ€ ์ธํ”„๋ผ ์ฒญ์‚ฌ์ง„์„ ๊ทธ๋ฆฌ๊ณ  ์‹ถ์€ ์„ค๊ณ„์ž

์ •ํ™•ํ•œ CS ์šฉ์–ด์™€ ์•„ํ‚คํ…์ฒ˜ ์›๋ฆฌ๋กœ AI๋ฅผ ์ฃผ๋„์ ์œผ๋กœ ํ†ต์ œํ•ด ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์„ ์•„๋ผ๊ณ  ์‹ถ์€ ๋ถ„

๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ๋ฐ ์‹ค์‹œ๊ฐ„ ํ†ต์‹  ์ฒ˜๋ฆฌ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ(OOM) ๋ฌธ์ œ๋กœ ๋ฐค์ƒˆ์›Œ๋ณธ ๊ฐœ๋ฐœ์ž


์ด๋ก ์œผ๋กœ๋งŒ ๋ฐฐ์šด TCP, UDP, Socket ๋“ฑ CS ์ง€์‹์„ ์‹ค์ œ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด๊ณ  ์‹ถ์€ ๋ถ„

๋‹จ์ˆœ ์ฝ”๋”๋ฅผ ๋„˜์–ด ์ „์ฒด ์‹œ์Šคํ…œ์˜ ํฐ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ๋Œ€์ฒด ๋ถˆ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…ํŠธ๋กœ ๋„์•ฝํ•˜๊ณ  ์‹ถ์€ ๋ถ„

Express, NestJS ์‚ฌ์šฉ๋ฒ•์„ ๋„˜์–ด Node.js ์ŠคํŠธ๋ฆผ๊ณผ OS/ํ•˜๋“œ์›จ์–ด ๋ ˆ๋ฒจ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๊นŠ์ด ํŒŒ๊ณ ๋“ค๊ณ  ์‹ถ์€ ๋ถ„

๋กœ์ปฌ ์„œ๋ฒ„๊ฐ€ ์™ธ๋ถ€ ๋ง์—์„œ ์—ด๋ฆฌ์ง€ ์•Š๋Š” ์ด์œ ์™€ 0.0.0.0 ๋ฐ”์ธ๋”ฉ์˜ ๋ฌผ๋ฆฌ์  ์˜๋ฏธ๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ๊ณ  ์‹ถ์€ ๋ถ„

๐Ÿ‘ฅ ์ด๋Ÿฐ ๋ถ„๋“ค์—๊ฒŒ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค

  • "์—๋Ÿฌ๊ฐ€ ํ„ฐ์ง€๋ฉด ์–ด๋””๋ฅผ ๊ณ ์ณ์•ผ ํ• ์ง€ ๋ชฐ๋ผ AI์—๊ฒŒ ์ฝ”๋“œ๋ฅผ ํ†ต์งธ๋กœ ๋ณต๋ถ™ํ•˜๋ฉฐ '๊ธฐ๋„ ๋ฉ”ํƒ€'๋กœ ์ฝ”๋”ฉํ•˜๋Š” ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž."

  • "๊ธฐ๋Šฅ ๊ตฌํ˜„์€ ์–ด๋–ป๊ฒŒ๋“  ํ•˜๊ฒ ๋Š”๋ฐ, ์‹ค๋ฌด์—์„œ ์ˆ˜๋ฐฑ๋งŒ ํŠธ๋ž˜ํ”ฝ์ด๋‚˜ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ํŒŒ์ผ์ด ๋“ค์–ด์˜ค๋ฉด ์„œ๋ฒ„๊ฐ€ ์™œ ๋ป—์–ด๋ฒ„๋ฆฌ๋Š”์ง€ ๋ชฐ๋ผ ์‹œ์Šคํ…œ ํ™•์žฅ์„ ํฌ๊ธฐํ•ด ๋ฒ„๋ฆฌ๋Š” ์—”์ง€๋‹ˆ์–ด."

  • "์ „์ฒด ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜์˜ ํฐ ๊ทธ๋ฆผ์ด ์—†๋‹ค ๋ณด๋‹ˆ, AI์—๊ฒŒ '๊ตฌ์กฐ๋ฅผ ์ตœ์ ํ™”ํ•ด ์ค˜' ๊ฐ™์€ ๋ญ‰๋šฑ๊ทธ๋ฆฐ ์งˆ๋ฌธ๋งŒ ๋˜์ง€๋‹ค๊ฐ€ ์—‰๋šฑํ•œ ๊ฒฐ๊ณผ๋ฌผ๋งŒ ๋ฐ›์•„ ํ† ํฐ ๋น„์šฉ๋งŒ ํƒ•์ง„ํ•˜๋Š” ๋ถ„."

  • "AI๊ฐ€ ์งœ์ค€ ์ฝ”๋“œ๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์œ ์ง€๋ณด์ˆ˜ํ•˜์ง€ ๋ชปํ•ด ๋ผˆ์ €๋ฆฐ ํ•œ๊ณ„๋ฅผ ๋А๋ผ๊ณ  ์„ฑ์žฅ์ด ๋ฉˆ์ถ˜ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž."

  • "์ฝ”๋“œ ์ƒ์‚ฐ ์†๋„๋ณด๋‹ค 'ํฐ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์—ญ๋Ÿ‰'์ด ๋” ์ค‘์š”ํ•ด์กŒ์Œ์„ ๊นจ๋‹ฌ์€ ๊ฐœ๋ฐœ์ž."

  • "Express, NestJS ๋“ฑ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ป๋ฐ๊ธฐ๋ฅผ ๊ฑท์–ด๋‚ด๊ณ  ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์˜ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ง์ ‘ ํ†ต์ œํ•˜๊ณ  ์‹ถ์€ ๋ถ„."

  • "๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ(OOM) ๋ฌธ์ œ๋กœ ๋ฉฐ์น  ๋ฐค์„ ์ƒˆ์›Œ๋ณธ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž."

  • "TCP, UDP, Socket, Port ๋“ฑ ๋Œ€ํ•™๊ต์—์„œ ์•”๊ธฐ์‹์œผ๋กœ ๋ฐฐ์šด CS ์ง€์‹์„ ์‚ด์•„ ์ˆจ ์‰ฌ๋Š” ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด๊ณ  ์‹ถ์€ ์ „๊ณต์ž."

  • "๋น„์ „๊ณต์ž๋กœ์„œ ๋ฉด์ ‘๊ด€์˜ ์••๋ฐ• ์งˆ๋ฌธ(์•„ํ‚คํ…์ฒ˜, ๋„คํŠธ์›Œํฌ ๊นŠ์ด)์„ ์••๋„์ ์ธ ์‹ค๋ ฅ์œผ๋กœ ๋ŒํŒŒํ•˜๊ณ  ์‹ถ์€ ์ทจ์—… ์ค€๋น„์ƒ."

  • "์‹ค์‹œ๊ฐ„ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ๊ฒŒ์ž„ ์„œ๋ฒ„๋‚˜ ํ™”์ƒ ํšŒ์˜ ์‹œ์Šคํ…œ(WebRTC)์˜ ๋ฐ‘๋ฐ”๋‹ฅ ํ†ต์‹  ๊ตฌ์กฐ๋ฅผ ์•Œ๊ณ  ์‹ถ์€ ๋ถ„."

  • "Node.js์˜ ํ•ต์‹ฌ์ธ Stream๊ณผ Buffer์˜ ๊ฐœ๋…์ด ๋œฌ๊ตฌ๋ฆ„ ์žก๋Š” ๊ฒƒ ๊ฐ™์•„ ์‹ค๋ฌด ์ฝ”๋“œ์— ์ œ๋Œ€๋กœ ์ ์šฉํ•ด ๋ณด์ง€ ๋ชปํ•œ ๋ถ„."

  • "๋„คํŠธ์›Œํฌ ํšŒ์„  ์žฅ์• , ํด๋ผ์ด์–ธํŠธ ๊ฐ•์ œ ์ข…๋ฃŒ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ข€๋น„ ์†Œ์ผ“ ์ฒ˜๋ฆฌ ๋กœ์ง ์„ค๊ณ„์— ์„œํˆฐ ๋ถ„."

  • "๋‚ด๊ฐ€ ๋„์šด ๋กœ์ปฌ ์„œ๋ฒ„๊ฐ€ localhost์—์„œ๋Š” ์ž˜ ๋˜๋Š”๋ฐ ์™œ ์™ธ๋ถ€ ๋ง์—์„œ๋Š” ์•ˆ ์—ด๋ฆฌ๋Š”์ง€, 0.0.0.0 ๋ฐ”์ธ๋”ฉ์˜ ์ง„์งœ ์˜๋ฏธ๋ฅผ ๋ชฐ๋ž๋˜ ๋ถ„."

  • "IPv4, Subnet, NAT, IPv6 ๋“ฑ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋ผˆ๋Œ€๋ฅผ ๋‹จ๊ธฐ๊ฐ„์— ์ง๊ด€์ ์œผ๋กœ ๋งˆ์Šคํ„ฐํ•˜๊ณ  ์‹ถ์€ ๋ถ„."

  • "๋‹จ์ˆœํ•œ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์„ ๋„˜์–ด DNS, GSLB, CDN ๋“ฑ ๊ธ€๋กœ๋ฒŒ ์Šค์ผ€์ผ์˜ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์ฒญ์‚ฌ์ง„์„ ๊ทธ๋ฆฌ๊ณ  ์‹ถ์€ ๋ถ„."

  • "indexOf, substring ๋“ฑ ์ต์ˆ™ํ•œ ๋‚ด์žฅ ํ•จ์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ๋ ˆ๋ฒจ์—์„œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๋กœ์šฐ ๋ ˆ๋ฒจ๋กœ ํƒ๊ตฌํ•˜๊ณ  ์‹ถ์€ ๋ถ„."

  • "ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด๋ฅผ ๋‹ค๋ฃจ๋Š” CLI ๋„๊ตฌ(process.argv, ANSI Escape Codes)๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„."

  • "๋‹จํŽธ์ ์ธ ์ฝ”๋”ฉ ๊ธฐ์ˆ ์„ ๋„˜์–ด, AI ์‹œ๋Œ€๋ฅผ ์ง€๋ฐฐํ•  '์‹œ์Šคํ…œ ์•„ํ‚คํ…ํŠธ'๋กœ ๋„์•ฝํ•  ์ค€๋น„๊ฐ€ ๋œ ๋ฏธ๋“ค๊ธ‰ ์—”์ง€๋‹ˆ์–ด."


๐ŸŽ“ ์ˆ˜๊ฐ• ํ›„์—๋Š”

  • AI ํ”„๋กฌํ”„ํŒ… ๊ณ ๋„ํ™”: AI์—๊ฒŒ ๋‹จ์ˆœํžˆ ์—๋Ÿฌ ์ˆ˜์ •์„ ๊ตฌ๊ฑธํ•˜๋Š” ๋Œ€์‹ , ์ •ํ™•ํ•œ CS ์šฉ์–ด๋กœ ์•„ํ‚คํ…์ฒ˜ ๋‹จ์œ„์˜ ํ•ด๊ฒฐ์ฑ…์„ ์ง€์‹œํ•˜๋Š” ์‹œ์Šคํ…œ ํ†ต์ œ๋ ฅ์„ ๊ฐ–์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ํ”„๋ ˆ์ž„์›Œํฌ ๋…๋ฆฝ์„ฑ ํ™•๋ณด: Express๋‚˜ NestJS์˜ ๊ป๋ฐ๊ธฐ๋ฅผ ๊ฑท์–ด๋‚ด๊ณ , ์ˆœ์ˆ˜ Node.js ๋‚ด์žฅ ๋ชจ๋“ˆ๋งŒ์œผ๋กœ ๊ณ ์„ฑ๋Šฅ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” '์ง„์งœ ๋ฐฑ์—”๋“œ' ์‹ค๋ ฅ์„ ์–ป์Šต๋‹ˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ํญ๋ฐœ(OOM) ๋ฐฉ์–ด: ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ(GB) ๋‹จ์œ„์˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์„œ๋ฒ„ ํฌ๋ž˜์‹œ์˜ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ณ  ๋žจ(RAM) ์ ์œ ์œจ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ์ˆ˜๋™ ๋ฐฑํ”„๋ ˆ์…”(Backpressure) ํ†ต์ œ: ๋””์Šคํฌ์™€ ๋„คํŠธ์›Œํฌ ๊ฐ„์˜ I/O ์†๋„ ๋ถˆ๊ท ํ˜•์„ OS ๋ ˆ๋ฒจ์˜ ๋ฐธ๋ธŒ ์ œ์–ด(pause, resume, drain)๋กœ ์šฐ์•„ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  • ์ŠคํŠธ๋ฆผ ํŒŒ์ดํ”„๋ผ์ธ ์ž๋™ํ™”: .pipe() ๋ฉ”์„œ๋“œ์˜ ๋‚ด๋ถ€ ์ƒํƒœ ๋จธ์‹  ์›๋ฆฌ๋ฅผ ๊ฟฐ๋šซ๊ณ , ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ ๋ฐฐ์••์„ ์•Œ์•„์„œ ์กฐ์ ˆํ•˜๋Š” ๊ณ ๋„ํ™”๋œ ์ŠคํŠธ๋ฆผ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

  • ์ปค์Šคํ…€ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ ์„ค๊ณ„: HTTP์— ์˜์กดํ•˜์ง€ ์•Š๊ณ , ํŒจํ‚ท ๋งจ ์•ž๋‹จ์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์กฐ๋ฆฝํ•˜๊ณ  ํŒŒ์‹ฑํ•˜๋Š” ๋‚˜๋งŒ์˜ ํ†ต์‹  ๊ทœ์•ฝ์„ ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์ฐฝ์กฐํ•ฉ๋‹ˆ๋‹ค.

  • TCP ๋‹จํŽธํ™” ๋ฐ ๋ณ‘ํ•ฉ ์ œ์–ด: ๋Š์ž„์—†์ด ํ๋ฅด๋Š” TCP ๋ฌผ๊ฒฐ ์†์—์„œ ์ชผ๊ฐœ์ง€๊ฑฐ๋‚˜ ๋ญ‰์ณ์„œ ๋„์ฐฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ '๋ˆ„์  ๋ฒ„ํผ๋ง'๊ณผ 'NDJSON' ๊ธฐ๋ฒ•์œผ๋กœ ์œ ์‹ค ์—†์ด ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

  • O(1) ์ž๋ฃŒ๊ตฌ์กฐ ์ตœ์ ํ™”: ์„ ํ˜• ํƒ์ƒ‰์˜ ๋ณ‘๋ชฉ์„ ์งš์–ด๋‚ด๊ณ , ํ•ด์‹œ ํ…Œ์ด๋ธ”(Map)์„ ๋„์ž…ํ•ด ์ˆ˜๋งŒ ๋ช…์˜ ์ ‘์†์ž๋ฅผ ์ง€์—ฐ ์—†์ด ํ†ต์ œํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋กœ ๋ฆฌํŒฉํ† ๋งํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹ค์ค‘ ์ ‘์† ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ ๊ตฌํ˜„: 1:1๋กœ ๊ณ ๋ฆฝ๋œ ์†Œ์ผ“ ํ™˜๊ฒฝ์„ ๋›ฐ์–ด๋„˜์–ด, ์ˆ˜๋งŽ์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…ํ•˜๋Š” ์ค‘๊ณ„ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ์ข€๋น„ ์†Œ์ผ“ ๋ฐ ์˜ˆ์™ธ ์ƒํ™ฉ ๋ฐฉ์–ด: ํด๋ผ์ด์–ธํŠธ ๊ฐ•์ œ ์ข…๋ฃŒ๋‚˜ ํšŒ์„  ์žฅ์•  ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ปค๋„ ๋ฆฌ์†Œ์Šค ๊ณ ๊ฐˆ์„ ๋ฐฉ์–ดํ•˜์—ฌ ์„œ๋ฒ„์˜ ์ƒ์กด์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • OSI 7๊ณ„์ธต์˜ ์‹ค์ฒดํ™”: ์ด๋ก ์œผ๋กœ๋งŒ ์™ธ์šฐ๋˜ ๊ณ„์ธต ๋ชจ๋ธ์„ ์‹ค์ œ ์ฝ”๋“œ(๋ฒ„ํผ, ํŒจํ‚ท, ์ง๋ ฌํ™”)์™€ 1:1๋กœ ๋งคํ•‘ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋“ค์—ฌ๋‹ค๋ณด๋Š” ์‹œ์•ผ๋ฅผ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

  • TCP์™€ UDP์˜ ๋ช…ํ™•ํ•œ ์‹ค๋ฌด ์ ์šฉ: ๋ฌด๊ฒฐ์„ฑ์ด ํ•„์š”ํ•œ ๊ณณ(TCP)๊ณผ ๊ทนํ•œ์˜ ์†๋„๊ฐ€ ํ•„์š”ํ•œ ์‹ค์‹œ๊ฐ„ ์„œ๋ฒ„(UDP)๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ , ๊ฐ ํŠน์„ฑ์— ๋งž๋Š” ์†Œ์ผ“์„ ์ž์œ ์ž์žฌ๋กœ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  • ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ ๋ผˆ๋Œ€ ์ง„๋‹จ: IPv4, ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๋น„ํŠธ ์—ฐ์‚ฐ, NAT(๊ณต์œ ๊ธฐ)์˜ ํฌํŠธ ํฌ์›Œ๋”ฉ ์›๋ฆฌ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ ๋ฐฐํฌ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ”„๋ผ ๋ฌธ์ œ๋ฅผ ์Šค์Šค๋กœ ์ง„๋‹จํ•ฉ๋‹ˆ๋‹ค.

  • ์ฐจ์„ธ๋Œ€ ์ธํ”„๋ผ IPv6 ๋งˆ์Šคํ„ฐ: 43์–ต ๊ฐœ์˜ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด์„  128๋น„ํŠธ ์ฃผ์†Œ ์ฒด๊ณ„์™€ SLAAC ์ž์œจ ์ฃผํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋“ฑ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ์ƒˆ๋กœ์šด ํ‘œ์ค€์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธ€๋กœ๋ฒŒ ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜ ์ดํ•ด ๋ฐ ํฌํŠธํด๋ฆฌ์˜ค ์™„์„ฑ: DNS ๋ฃฉ์—…๊ณผ GSLB ์‹œ์Šคํ…œ์˜ ํฐ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ '๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด CLI ์ฑ„ํŒ… ์„œ๋ฒ„'์™€ 'OOM ํ”„๋ฆฌ ๋Œ€์šฉ๋Ÿ‰ ์—…๋กœ๋”'๋ฅผ ์ง์ ‘ ์™„์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป ์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ”— [์ด์ „ ์‹œ๋ฆฌ์ฆˆ(Part 1, 2) ์ˆ˜๊ฐ• ๊ฐ•๋ ฅ ๊ถŒ์žฅ]

๋ณธ ๊ฐ•์˜๋Š” ๊ฑฐ๋Œ€ํ•œ ์‹œ์Šคํ…œ ์„ค๊ณ„ ์ปค๋ฆฌํ˜๋Ÿผ์˜ ์ตœ์ข…์žฅ(Part 3)์ž…๋‹ˆ๋‹ค. V8 ์—”์ง„๊ณผ ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ ์ œ์–ด(Part 1), ๊ทธ๋ฆฌ๊ณ  ๋Œ€์šฉ๋Ÿ‰ ์ŠคํŠธ๋ฆผ๊ณผ ํŒŒ์ดํ”„๋ผ์ธ ์•„ํ‚คํ…์ฒ˜(Part 2)์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“(Part 3)์œผ๋กœ ๊ณ ์Šค๋ž€ํžˆ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฑ•ํ„ฐ๊ฐ€ ์œ ๊ธฐ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, Part 1๊ณผ Part 2๋ฅผ ๋จผ์ € ์ˆ˜๊ฐ•ํ•˜์‹  ๋’ค ๋ณธ ๊ณผ์ •์œผ๋กœ ๋„˜์–ด์˜ค์‹œ๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

(โ€ป ๋‹จ, ์ด๋ฏธ Node.js ์ฝ”์–ด ๋ชจ๋“ˆ๊ณผ CS ๊ธฐ์ดˆ ์ง€์‹์ด ํƒ„ํƒ„ํ•˜์‹  ์‹œ๋‹ˆ์–ด ๋ถ„๋“ค์ด๋ผ๋ฉด ๋ณธ ๊ณผ์ •๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜๊ฐ•ํ•˜์…”๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.)

ํ•˜์ด์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋ง์˜ ๋ฌด๊ฑฐ์šด ํ†ค์•ค๋งค๋„ˆ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ๋„, ๊ฐ ํ•ญ๋ชฉ์˜ ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์ง๊ด€์ ์œผ๋กœ ๊ฝ‚ํž ์ˆ˜ ์žˆ๋„๋ก ์ฐฐ๋–ก๊ฐ™์€ ์ด๋ชจ์ง€๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ  ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ ๋‹ค๋“ฌ์—ˆ์Šต๋‹ˆ๋‹ค.

โŒจ๏ธ [๋ˆˆ์œผ๋กœ๋งŒ ๋ณด์ง€ ๋ง๊ณ , ์†๋์œผ๋กœ ์ฒดํ™”ํ•˜์‹ญ์‹œ์˜ค]

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

๐Ÿ” [์ง‘์š”ํ•˜๊ฒŒ "์™œ?"๋ผ๊ณ  ์งˆ๋ฌธํ•˜์‹ญ์‹œ์˜ค]

"์™œ ์—ฌ๊ธฐ์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํญ๋ฐœํ• ๊นŒ?", "์™œ ์ด ํŒจํ‚ท์€ ์ชผ๊ฐœ์ ธ์„œ ๋“ค์–ด์˜ฌ๊นŒ?"๋ผ๋Š” ์›๋ฆฌ์— ๋Œ€ํ•œ ์ง‘์š”ํ•œ ์˜์‹ฌ์€, ์—ฌ๋Ÿฌ๋ถ„์„ ๋‹จ์ˆœ ์ฝ”๋”์—์„œ '์—”์ง„ ์„ค๊ณ„์ž'๋กœ ๋„์•ฝ์‹œํ‚ค๋Š” ๊ฐ€์žฅ ํ™•์‹คํ•œ ๋ฌด๊ธฐ์ž…๋‹ˆ๋‹ค. ํ•™์Šต ์ค‘ ํ’€๋ฆฌ์ง€ ์•Š๋Š” ์ธํ”„๋ผ์  ์˜๋ฌธ์ด๋‚˜ ๋‚ฏ์„  CS ๊ฐœ๋…์ด ์žˆ๋‹ค๋ฉด ํ˜ผ์ž ์•“์ง€ ๋ง๊ณ  ์–ธ์ œ๋“  ์งˆ๋ฌธ์„ ๋‚จ๊ฒจ์ฃผ์‹ญ์‹œ์˜ค. ์•„ํ‚คํ…ํŠธ์˜ ์‹œ์•ผ๋กœ ๋ช…์พŒํ•˜๊ฒŒ ๋‹ต๋ณ€ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ—บ๏ธ [์••๋„์  ๋””ํ…Œ์ผ์˜ '๊ฐ•์˜ ๋…ธํŠธ'๋ฅผ 100% ํ™œ์šฉํ•˜์‹ญ์‹œ์˜ค]

๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋Š” ๋„คํŠธ์›Œํฌ์˜ ํ๋ฆ„์€ ๋จธ๋ฆฟ์†์œผ๋กœ ์ƒ์ƒํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. TCP ๋‹จํŽธํ™”, ๋ฐฐ์••(Backpressure)์˜ ๋ฐธ๋ธŒ ์ œ์–ด, ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ์—ฐ์‚ฐ ๋“ฑ ๋ณต์žกํ•œ ์ธํ”„๋ผ ๊ตฌ์กฐ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ๊ฟฐ๋šซ์–ด ๋ณผ ์ˆ˜ ์žˆ๋„๋ก, 0๊ณผ 1์˜ ๋ฌผ๋ฆฌ์  ๋ ˆ๋ฒจ๋ถ€ํ„ฐ ๊ธ€๋กœ๋ฒŒ ์•„ํ‚คํ…์ฒ˜๊นŒ์ง€ ์ •๊ตํ•˜๊ฒŒ ์‹œ๊ฐํ™”ํ•œ ์‹ฌํ™” ๊ต๋ณธ(๊ฐ•์˜ ๋…ธํŠธ)์„ ๋งค ๊ฐ•์˜ ๋น ์ง์—†์ด ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜์ƒ ์‹œ์ฒญ ํ›„ ๋ฐ˜๋“œ์‹œ ์ •๋…ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • AI๊ฐ€ ์งœ์ค€ ์ฝ”๋“œ๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์œ ์ง€๋ณด์ˆ˜ํ•˜์ง€ ๋ชปํ•ด ๋ผˆ์ €๋ฆฐ ํ•œ๊ณ„๋ฅผ ๋А๋ผ๊ณ  ์„ฑ์žฅ์ด ๋ฉˆ์ถ˜ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž.

  • ์ฝ”๋“œ ์ƒ์‚ฐ ์†๋„๋ณด๋‹ค 'ํฐ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์—ญ๋Ÿ‰'์ด ๋” ์ค‘์š”ํ•ด์กŒ์Œ์„ ๊นจ๋‹ฌ์€ ๊ฐœ๋ฐœ์ž.

  • Express, NestJS ๋“ฑ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ป๋ฐ๊ธฐ๋ฅผ ๊ฑท์–ด๋‚ด๊ณ  ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์˜ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ง์ ‘ ํ†ต์ œํ•˜๊ณ  ์‹ถ์€ ๋ถ„.

  • ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ(OOM) ๋ฌธ์ œ๋กœ ๋ฉฐ์น  ๋ฐค์„ ์ƒˆ์›Œ๋ณธ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž.

  • TCP, UDP, Socket, Port ๋“ฑ ๋Œ€ํ•™๊ต์—์„œ ์•”๊ธฐ์‹์œผ๋กœ ๋ฐฐ์šด CS ์ง€์‹์„ ์‚ด์•„ ์ˆจ ์‰ฌ๋Š” ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด๊ณ  ์‹ถ์€ ์ „๊ณต์ž.

  • ๋‹จํŽธ์ ์ธ ์ฝ”๋”ฉ ๊ธฐ์ˆ ์„ ๋„˜์–ด, AI ์‹œ๋Œ€๋ฅผ ์ง€๋ฐฐํ•  '์‹œ์Šคํ…œ ์•„ํ‚คํ…ํŠธ'๋กœ ๋„์•ฝํ•  ์ค€๋น„๊ฐ€ ๋œ ๋ฏธ๋“ค๊ธ‰ ์—”์ง€๋‹ˆ์–ด.

  • ๋น„์ „๊ณต์ž๋กœ์„œ ๋ฉด์ ‘๊ด€์˜ ์••๋ฐ• ์งˆ๋ฌธ(์•„ํ‚คํ…์ฒ˜, ๋„คํŠธ์›Œํฌ ๊นŠ์ด)์„ ์••๋„์ ์ธ ์‹ค๋ ฅ์œผ๋กœ ๋ŒํŒŒํ•˜๊ณ  ์‹ถ์€ ์ทจ์—… ์ค€๋น„์ƒ.

  • ๋‹จ์ˆœํ•œ '๋”ธ๊น' ์‹ ๊ฐœ๋ฐœ์˜ ํ•œ๊ณ„๋ฅผ ๊นจ๋‹ซ๊ณ , AI์—๊ฒŒ ์ตœ์ ์˜ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฐฉํ–ฅ์„ ์šฉ์–ด์™€ ์›๋ฆฌ๋กœ ์ •ํ™•ํžˆ ์ œ์‹œํ•˜์—ฌ ํ† ํฐ ๋น„์šฉ๊ณผ ์‹œ๊ฐ„์„ ๊ทน๋‹จ์ ์œผ๋กœ ์•„๋ผ๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž

  • AI ๋„๊ตฌ(Claude, ChatGPT ๋“ฑ)๊ฐ€ ์ƒ์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํžˆ ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜๋Š” ์ˆ˜์ค€์„ ๋„˜์–ด, ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋ช…ํ™•ํžˆ ๋ถ„์„ํ•˜๊ณ  ์ฃผ๋„์ ์œผ๋กœ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์€ ์—”์ง€๋‹ˆ์–ด

  • AI์˜ ์ฝ”๋“œ ์ƒ์‚ฐ ์†๋„ ๊ฒฝ์Ÿ ์†์—์„œ ๋ฌด์˜๋ฏธํ•œ ์ฝ”๋”๋กœ ๋‚จ์ง€ ์•Š๊ณ , ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ๊ณผ OOM์„ ํ†ต์ œํ•˜๋Š” '์ „์ฒด ์‹œ์Šคํ…œ์˜ ํฐ ๊ทธ๋ฆผ'์„ ๊ทธ๋ฆฌ๋ฉฐ ๋Œ€์ฒด ๋ถˆ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…ํŠธ๋กœ ์ƒ์กดํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • Node.js์˜ ํ•ต์‹ฌ์ธ Stream๊ณผ Buffer์˜ ๊ฐœ๋…์ด ๋œฌ๊ตฌ๋ฆ„ ์žก๋Š” ๊ฒƒ ๊ฐ™์•„ ์‹ค๋ฌด ์ฝ”๋“œ์— ์ œ๋Œ€๋กœ ์ ์šฉํ•ด ๋ณด์ง€ ๋ชปํ•œ ๋ถ„.

  • ๋„คํŠธ์›Œํฌ ํšŒ์„  ์žฅ์• , ํด๋ผ์ด์–ธํŠธ ๊ฐ•์ œ ์ข…๋ฃŒ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ข€๋น„ ์†Œ์ผ“ ์ฒ˜๋ฆฌ ๋กœ์ง ์„ค๊ณ„์— ์„œํˆฐ ๋ถ„.

  • ๋‚ด๊ฐ€ ๋„์šด ๋กœ์ปฌ ์„œ๋ฒ„๊ฐ€ localhost์—์„œ๋Š” ์ž˜ ๋˜๋Š”๋ฐ ์™œ ์™ธ๋ถ€ ๋ง์—์„œ๋Š” ์•ˆ ์—ด๋ฆฌ๋Š”์ง€, 0.0.0.0 ๋ฐ”์ธ๋”ฉ์˜ ์ง„์งœ ์˜๋ฏธ๋ฅผ ๋ชฐ๋ž๋˜ ๋ถ„.

  • IPv4, Subnet, NAT, IPv6 ๋“ฑ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋ผˆ๋Œ€๋ฅผ ๋‹จ๊ธฐ๊ฐ„์— ์ง๊ด€์ ์œผ๋กœ ๋งˆ์Šคํ„ฐํ•˜๊ณ  ์‹ถ์€ ๋ถ„.

  • ๋‹จ์ˆœํ•œ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์„ ๋„˜์–ด DNS, GSLB, CDN ๋“ฑ ๊ธ€๋กœ๋ฒŒ ์Šค์ผ€์ผ์˜ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์ฒญ์‚ฌ์ง„์„ ๊ทธ๋ฆฌ๊ณ  ์‹ถ์€ ๋ถ„.

  • indexOf, substring ๋“ฑ ์ต์ˆ™ํ•œ ๋‚ด์žฅ ํ•จ์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ๋ ˆ๋ฒจ์—์„œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๋กœ์šฐ ๋ ˆ๋ฒจ๋กœ ํƒ๊ตฌํ•˜๊ณ  ์‹ถ์€ ๋ถ„.

  • ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด๋ฅผ ๋‹ค๋ฃจ๋Š” CLI ๋„๊ตฌ(process.argv, ANSI Escape Codes)๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„.

  • AI๊ฐ€ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๋กœ์šฐ ๋ ˆ๋ฒจ ๋ณ‘๋ชฉ ํ˜„์ƒ(TCP ๋‹จํŽธํ™”, ๋ฐฐ์•• ์ œ์–ด ๋“ฑ)์˜ ๊ทผ๋ณธ ์›์ธ์„ ์•„ํ‚คํ…์ฒ˜์  ์‹œ์•ผ๋กœ ๊ฐ„ํŒŒํ•˜๊ณ  ํ†ต์ œํ•˜๋Š” ํž˜์„ ๊ธฐ๋ฅด๊ณ  ์‹ถ์€ ๋ฐฑ์—”๋“œ ์„ค๊ณ„์ž

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • JavaScript ๊ธฐ์ดˆ ๋ณต์Šต

  • Node.js ์„ค์น˜ (v20 ์ด์ƒ ๊ถŒ์žฅ): Node.js ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ LTS(์•ˆ์ •ํ™” ๋ฒ„์ „)๋ฅผ ๋ฏธ๋ฆฌ ์„ค์น˜ํ•ด ์ฃผ์„ธ์š”. ๊ฐ•์˜์—์„œ๋Š” ์ด ํ™˜๊ฒฝ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์˜์ฒด์ œ์™€ ๋Œ€ํ™”ํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

  • ์ฝ”๋“œ ์—๋””ํ„ฐ (VS Code): ์‹ค์Šต ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  Visual Studio Code๋ฅผ ์ค€๋น„ํ•ด ์ฃผ์„ธ์š”.

  • ๋ง‰์—ฐํ•œ ๋‘๋ ค์›€ ๋ฒ„๋ฆฌ๊ธฐ: "์–ด๋ ต์ง€ ์•Š์„๊นŒ?"๋ผ๋Š” ๊ฑฑ์ • ๋Œ€์‹ , ๊ธฐ์ˆ ์˜ ๋ธ”๋ž™๋ฐ•์Šค๋ฅผ ๋‚ด ์†์œผ๋กœ ์ง์ ‘ ์—ด์–ด๋ณด๊ฒ ๋‹ค๋Š” ์ฆ๊ฑฐ์šด ํ˜ธ๊ธฐ์‹ฌ๋งŒ ์ฑ™๊ฒจ์˜ค์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • (๊ถŒ์žฅ) "AI ๋”ธ๊น์˜ ์‹œ๋Œ€" ์›๋ฆฌ๋กœ ๋ŒํŒŒํ•˜๋Š” Node.js์™€ CS Part1 - V8๊ณผ ์ฝ”์–ด ํ•ด์ฒด๊ธฐ ์ˆ˜๊ฐ•

  • (๊ถŒ์žฅ) "AI ๋”ธ๊น์˜ ์‹œ๋Œ€" ์›๋ฆฌ๋กœ ๋ŒํŒŒํ•˜๋Š” Node.js์™€ CS Part 2 - ์ŠคํŠธ๋ฆผ ์•„ํ‚คํ…์ฒ˜์™€ ํ•˜๋“œ์›จ์–ด ํ†ต์ œ๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”
nhcodingstudio์ž…๋‹ˆ๋‹ค.

์ธํ”„๋Ÿฐ์ธ์ฆ

์ปค๋ฆฌ์–ด์ธ์ฆ

2,424

๋ช…

์ˆ˜๊ฐ•์ƒ

142

๊ฐœ

์ˆ˜๊ฐ•ํ‰

55

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

20

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š”, ์šฐ๋ฆฌ๋™๋„ค์ฝ”๋”ฉ ์ŠคํŠœ๋””์˜ค์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

์šฐ๋ฆฌ๋™๋„ค์ฝ”๋”ฉ ์ŠคํŠœ๋””์˜ค๋Š” ์นด๋„ค๊ธฐ ๋ฉœ๋ก , ์›Œ์‹ฑํ„ด, ํ† ๋ก ํ† , ์›Œํ„ฐ๋ฃจ ๋“ฑ ๋ถ๋ฏธ์˜ ์ฃผ์š” ๋Œ€ํ•™์—์„œ ์ปดํ“จํ„ฐ๊ณตํ•™์„ ์ „๊ณตํ•˜๊ณ , Google, Microsoft, Meta ๋“ฑ ๊ธ€๋กœ๋ฒŒ IT ๊ธฐ์—…์—์„œ ์‹ค๋ฌด ๊ฒฝํ—˜์„ ์Œ“์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•จ๊ป˜ ๋งŒ๋“  ๊ต์œก ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ๋ฏธ๊ตญ๊ณผ ์บ๋‚˜๋‹ค์˜ ์ปดํ“จํ„ฐ๊ณตํ•™ ์ „๊ณต์ž๋“ค๋ผ๋ฆฌ ํ•จ๊ป˜ ๊ณต๋ถ€ํ•˜๋ฉฐ ์„ฑ์žฅํ•˜๊ณ ์ž ๋งŒ๋“  ์Šคํ„ฐ๋”” ๋ชจ์ž„์—์„œ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋Œ€ํ•™, ๋‹ค๋ฅธ ์‹œ๊ฐ„๋Œ€์— ์žˆ์—ˆ์ง€๋งŒ ํ•จ๊ป˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์„œ๋กœ์—๊ฒŒ ๋ฐฐ์šด ๊ทธ ์‹œ๊ฐ„์€ ๋งค์šฐ ํŠน๋ณ„ํ–ˆ๊ณ , ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

โ€œ์šฐ๋ฆฌ๊ฐ€ ๊ณต๋ถ€ํ•˜๋˜ ์ด ๋ฐฉ์‹, ๊ทธ๋Œ€๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ๋„ ์ „ํ•˜๋ฉด ์–ด๋–จ๊นŒ?โ€

๊ทธ ๋ฌผ์Œ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๋™๋„ค์ฝ”๋”ฉ ์ŠคํŠœ๋””์˜ค์˜ ์ถœ๋ฐœ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ๋Š” ์•ฝ 30๋ช…์˜ ํ˜„์ง ๊ฐœ๋ฐœ์ž์™€ ์ปดํ“จํ„ฐ๊ณตํ•™ ์ „๊ณต ๋Œ€ํ•™์ƒ๋“ค์ด ๊ฐ์ž์˜ ์ „๋ฌธ ๋ถ„์•ผ๋ฅผ ๋งก์•„, ์ž…๋ฌธ๋ถ€ํ„ฐ ์‹ค์ „๊นŒ์ง€ ์•„์šฐ๋ฅด๋Š” ์ปค๋ฆฌํ˜๋Ÿผ์„ ์ง์ ‘ ์„ค๊ณ„ํ•˜๊ณ  ๊ฐ•์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ์ง€์‹ ์ „๋‹ฌ์„ ๋„˜์–ด, ์ง„์งœ ๊ฐœ๋ฐœ์ž์˜ ์‹œ์„ ์œผ๋กœ ๋ฐฐ์šฐ๊ณ  ํ•จ๊ป˜ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โ€œ์ง„์งœ ๊ฐœ๋ฐœ์ž๋Š”, ์ง„์งœ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.โ€

์ €ํฌ๋Š” ์›น ๊ฐœ๋ฐœ์˜ ์ „ ๊ณผ์ •์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ฒด๊ณ„์ ์œผ๋กœ ๋‹ค๋ฃจ๋˜, ์ด๋ก ์— ๋จธ๋ฌด๋ฅด์ง€ ์•Š๊ณ  ์‹ค์Šต๊ณผ ์‹ค์ „ ์ค‘์‹ฌ์˜ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ์‹ค๋ ฅ์„ ํ‚ค์›Œ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
์ˆ˜๊ฐ•์ƒ ํ•œ ์‚ฌ๋žŒ, ํ•œ ์‚ฌ๋žŒ์˜ ์„ฑ์žฅ์„ ํ•จ๊ป˜ ๊ณ ๋ฏผํ•˜๊ณ  ์ด๋Œ์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ์ฒ ํ•™์ž…๋‹ˆ๋‹ค.

๐ŸŽฏ ์šฐ๋ฆฌ์˜ ์ฒ ํ•™์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.
"์ง„์ •ํ•œ ๋ฐฐ์›€์€ ์‹ค์ฒœ์—์„œ ์˜ค๊ณ , ์„ฑ์žฅ์€ ํ•จ๊ป˜ํ•  ๋•Œ ์™„์„ฑ๋œ๋‹ค."

๊ฐœ๋ฐœ์„ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ์ž…๋ฌธ์ž๋ถ€ํ„ฐ, ์‹ค๋ฌด ๋Šฅ๋ ฅ์„ ํ‚ค์šฐ๊ณ  ์‹ถ์€ ์ทจ์—… ์ค€๋น„์ƒ, ์ง„๋กœ๋ฅผ ํƒ์ƒ‰ ์ค‘์ธ ์ฒญ์†Œ๋…„๊นŒ์ง€.
์šฐ๋ฆฌ๋™๋„ค์ฝ”๋”ฉ ์ŠคํŠœ๋””์˜ค๋Š” ๋ชจ๋‘์˜ ์ถœ๋ฐœ์ ์ด์ž, ํ•จ๊ป˜ ๊ฑท๋Š” ๋“ ๋“ ํ•œ ๋™๋ฐ˜์ž๊ฐ€ ๋˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ, ํ˜ผ์ž ๊ณ ๋ฏผํ•˜์ง€ ๋งˆ์„ธ์š”.
์šฐ๋ฆฌ๋™๋„ค์ฝ”๋”ฉ ์ŠคํŠœ๋””์˜ค๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ์„ฑ์žฅ์„ ํ•จ๊ป˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


Welcome to Neighborhood Coding Studio!

Neighborhood Coding Studio was founded by a team of developers who studied computer science at top North American universities such as Carnegie Mellon, the University of Washington, the University of Toronto, and the University of Waterloo, and went on to gain hands-on experience at global tech companies like Google, Microsoft, and Meta.

It all began as a study group formed by computer science students across the U.S. and Canada, created to grow together by sharing knowledge, solving problems, and learning from one another.
Though we were attending different schools in different time zones, the experience was so meaningful that it led us to one simple thought:

โ€œWhat if we shared this way of learning with others?โ€

That thought became the foundation of Neighborhood Coding Studio.

Today, we are a team of around 30 active developers and computer science students, each taking responsibility for their area of expertiseโ€”designing and delivering a curriculum that spans from foundational knowledge to real-world development.
Weโ€™re not just here to teachโ€”weโ€™re here to help you see through the lens of real developers and grow together.

โ€œTo become a real developer, you must learn from real developers.โ€

Our courses take you through the entire web development journeyโ€”from start to finishโ€”focused on hands-on practice, real-world projects, and practical feedback.
We care deeply about each learnerโ€™s growth and are committed to supporting your path every step of the way.

๐ŸŽฏ Our philosophy is simple but powerful:
"True learning comes from doing, and true growth happens together."

Whether you're just getting started, preparing for your first job, or exploring your future in tech,
Neighborhood Coding Studio is here to be your launchpadโ€”and your trusted companion on the journey.

You donโ€™t have to do it alone.
Let Neighborhood Coding Studio walk with you toward your future in development.

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

47๊ฐœ โˆ™ (6์‹œ๊ฐ„ 9๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!

nhcodingstudio๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

๋น„์Šทํ•œ ๊ฐ•์˜

๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

์–ผ๋ฆฌ๋ฒ„๋“œ ํ• ์ธ ์ค‘

โ‚ฉ33,000

70%

โ‚ฉ110,000