StrongLoop / IBM์— ์˜ํ•ด ์ œ๊ณต์ด ๋ฒˆ์—ญ.

์ด ๋ฌธ์„œ๋Š” ์˜๋ฌธํŒ ๋ฌธ์„œ์— ๋น„ํ•ด ๋” ์˜ค๋ž˜๋œ ๋ฒ„์ „์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ์—…๋ฐ์ดํŠธ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ์˜๋ฌธํŒ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

โœ–

์šฉ์–ด์ง‘

๋ผ์šฐํ„ฐ(router)

API ์ฐธ์กฐ์˜ ๋ผ์šฐํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ผ์šฐํŠธ(route)

์ž์›์„ ์‹๋ณ„ํ•˜๋Š” URL์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, http://foo.com/products/id์—์„œ โ€œ/products/idโ€๊ฐ€ ๋ผ์šฐํŠธ์ž…๋‹ˆ๋‹ค.

๋ฏธ๋“ค์›จ์–ด(middleware)

์ตœ์ข… ์š”์ฒญ ํ•ธ๋“ค๋Ÿฌ ์ด์ „์˜ Express ๋ผ์šฐํŒ… ๊ณ„์ธต์— ์˜ํ•ด ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ด๋ฉฐ, ๋”ฐ๋ผ์„œ ์›์‹œ ์š”์ฒญ๊ณผ ์˜๋„๋œ ์ตœ์ข… ๋ผ์šฐํŠธ ์‚ฌ์ด์˜ ๋ฏธ๋“ค์›จ์–ด์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋“ค์›จ์–ด์™€ ๊ด€๋ จ๋œ ์šฉ์–ด์˜ ๋ช‡ ๊ฐ€์ง€ ์š”์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(application)

์ผ๋ฐ˜์ ์œผ๋กœ, ํŠน์ •ํ•œ ๋ชฉ์ ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค๊ณ„๋œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. Express์˜ ์ปจํ…์ŠคํŠธ์—์„œ๋Š”, Node.js ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋˜๋ฉฐ Express API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์•ฑ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ง€์นญํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค(open-source, open source)

์˜๋ฌธ์—์„œ ํ˜•์šฉ์‚ฌ๋กœ ์‚ฌ์šฉ๋  ๋•Œ๋Š” ํ•˜์ดํ”ˆ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. (์˜ˆ: โ€œ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹คโ€ Wikipedia์˜ Open-source software๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.) ์ฐธ๊ณ ๋กœ ์˜๋ฌธ์—์„œ ์ด ์šฉ์–ด์— ํ•˜์ดํ”ˆ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ”ํ•˜์ง€๋งŒ, ์—ฌ๊ธฐ์„œ๋Š” ํ•ฉ์„ฑ ํ˜•์šฉ์‚ฌ์— ํ•˜์ดํ”ˆ์„ ์ถ”๊ฐ€ํ•˜๋Š” ํ‘œ์ค€ ์˜๋ฌธ ๊ทœ์น™์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ(request)

HTTP ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ์„œ๋ฒ„์— ์ œ์ถœํ•˜๋ฉฐ, ์„œ๋ฒ„๋Š” ์‘๋‹ต์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์€ ์—ฌ๋Ÿฌ ์š”์ฒญ ๋ฉ”์†Œ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: GET, POST ๋“ฑ).

์‘๋‹ต(response)

HTTP ์‘๋‹ต์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต์—๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์™„๋ฃŒ ์ƒํƒœ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์‘๋‹ต ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์—๋Š” ์š”์ฒญ๋œ ์ปจํ…์ธ ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

API

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค(Application Programming Interface)์ž…๋‹ˆ๋‹ค. ์ด ์šฉ์–ด๋ฅผ ์ตœ์ดˆ๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์•ฝ์–ด๋ฅผ ํ’€์–ด์„œ ๊ธฐ์žฌํ•˜์‹ญ์‹œ์˜ค.

Express

Node.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๋น ๋ฅด๊ณ  ๊ฐœ๋ฐฉ์ ์ธ ๊ฐ„๊ฒฐํ•œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ โ€œExpress.jsโ€๋ณด๋‹ค โ€œExpressโ€๊ฐ€ ์„ ํ˜ธ๋˜์ง€๋งŒ, โ€œExpress.jsโ€๋„ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

libuv

๋น„๋™๊ธฐ์‹ I/O์— ์ดˆ์ ์„ ๋‘” ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ์ง€์› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ, ์ฃผ๋กœ Node.js์— ์˜ํ•ด ์‚ฌ์šฉ๋˜๋„๋ก ๊ฐœ๋ฐœ๋ฉ๋‹ˆ๋‹ค.

Node.js

ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. Node.js๋Š” JavaScript๋ฅผ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋Š” I/O ๋ฐ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ํ†ตํ•ด ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. nodejs.org๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ํ™œ์šฉ ์ฐธ๊ณ : ์ตœ์ดˆ์—๋Š” โ€œNode.jsโ€์˜€์œผ๋ฉฐ ์ดํ›„ โ€œNodeโ€๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.