Sam Baek, The Dev's Corner

๐Ÿ’ป ์„œ๋ฒ„์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Node [1ํŽธ]

04 Jul 2023

Node.js๋ž€ ๋ฌด์—‡์ธ๊ฐ€? :์„œ๋ฒ„์‚ฌ์ด๋“œ์— ๊ด€ํ•˜์—ฌ


Node.js๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ JavaScript๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ด๋‹ค.
๊ธฐ์กด์—๋Š” JavaScript๊ฐ€ ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์ง€๋งŒ, Node.js๋ฅผ ํ†ตํ•ด ์ด์ œ๋Š” ์„œ๋ฒ„ ์ธก์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

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

์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋Š” ์ฃผ๋กœ DB์™€์˜ ์ƒํ˜ธ์ž‘์šฉ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋กœ์ง ์‹คํ–‰, ํŒŒ์ผ ์‹œ์Šคํ…œ ์ ‘๊ทผ ๋“ฑ๊ณผ ๊ฐ™์€ ์„œ๋ฒ„ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•œ๋‹ค.
์˜ˆ์ปจ๋Œ€, ์›น์—์„œ ์‚ฌ์šฉ์ž ์š”์ฒญ(request)์„ ๋ฐ›์•„๋“ค์ด๊ณ  ์ฒ˜๋ฆฌ ํ›„ ๊ฒฐ๊ณผ(response)๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

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

๊ธฐ์กด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋Š” ์ฃผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํด๋ผ์ด์–ธํŠธ ์ธก ์Šคํฌ๋ฆฝํŠธ๋กœ ์‚ฌ์šฉ๋˜์–ด์ ธ ์™”๋‹ค.
Netscape Live Wire๋Š” 1996๋…„๋„์— ์ถœ์‹œ๋œ ์„œ๋ฒ„์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ดˆ๊ธฐ ํ˜•ํƒœ์˜€๊ณ , ์›น ์„œ๋ฒ„ ํ™•์žฅ ๊ธฐ์ˆ ์ด์—ˆ๋‹ค.
๋น„๋ก ์ƒ์šฉํ™”๋Š” ๋˜์ง€ ์•Š์•„ ์ง€์†์ ์ธ ๊ฐœ๋ฐœ์ด ๋˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ ์„œ๋ฒ„์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ดˆ๊ธฐ ํ˜•ํƒœ๋ผ๋Š” ์ ์ด ์ฃผ๋ชฉํ• ๋งŒํ•˜๋‹ค.
์ดํ›„ v8 ์—”์ง„์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ Ryan Dahl์ด๋ผ๋Š” ์‚ฌ๋žŒ์ด ์ด ์—”์ง„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์„œ๋ฒ„์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
์ฆ‰, Node.js๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค.

์—ฌ๋‹ด์ด์ง€๋งŒ ๋‹น์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋Š” ๋ณด์•ˆ์ ์ด ๋งŽ์•˜๊ณ  ์ฃผ๋ฅ˜ ์–ธ์–ด๋„ ์•„๋‹ˆ์—ˆ๊ณ  v8์—”์ง„์ด ์ƒ์šฉํ™”๋œ ๊ฑด ๋” ์ดํ›„์˜€๋‹ค๋Š”๋ฐ
Ryan Dahl ๋‹น์‹ ์€ ๋„๋Œ€์ฒดโ€ฆ

Node.js์˜ ์—ญ์‚ฌ


2008๋…„์€ v8 ์—”์ง„์ด ์„ธ์ƒ์— ๋ฐœํ‘œ๋œ ๋•Œ์ด๋‹ค.
์ด๋“ฌํ•ด 2009๋…„ Ryan Dahl์€ v8์—”์ง„๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด Node.js๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค.
2010๋…„ Node.js ์ƒํƒœ๊ณ„๋Š” npm์ด ๋“ฑ์žฅํ•˜๊ณ , ์ดํ›„ ์†์†๋“ค์ด ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ๊ฐœ๋ฐœ๋œ๋‹ค.

์ฐจ์ฐจ ๊ณต๋ถ€ํ•˜๊ณ  ๋˜ ์ •๋ฆฌํ•˜๊ฒ ์ง€๋งŒ, npm์€ Node์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ชจ๋“ˆ๊ณผ ํŒจํ‚ค์ง€๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
๋˜ํ•œ, ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Express.js๋‚˜ Koa, Hapi, Meteor ๋“ฑ์ด ์žˆ๋Š”๋ฐ,
๊ฐœ๋ฐœ์ž๋“ค์ด ํŽธ๋ฆฌํ•˜๊ฒŒ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ทธ๋ฆฌ๊ณ  ๊ฐ„๊ฒฐํ•˜๊ณ  ์œ ์—ฐํ•œ ์›น์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

Node.js์˜ ํŠน์ง•๊ณผ ์ด์ 


Node.js๋Š” ๋น„๋™๊ธฐ์ (I/O์ž‘์—…)์ด๊ณ  ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•œ๋‹ค.
์ด๋Ÿฐ ๋ฐฉ์‹์€ ๋งŽ์€ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋ธ”๋กœํ‚น ์ž‘์—… ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์–ด ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

Node.js๋Š” v8์—”์ง„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ JavaScript๋ผ๋Š” ๊ฒƒ๋„ ์ฃผ๋ชฉํ• ๋งŒํ•œ ํŠน์ง•์ด๋‹ค. v8 JavaScript ์—”์ง„์„ ํ†ตํ•ด
Node.js๋Š” ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค. ์ฆ‰, ๋ฐ˜์‘์†๋„๊ฐ€ ์ƒ๋‹นํ•˜๋‹ค.

Node.js๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ๊ฐ๊ฐ์˜ ์š”์ฒญ์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
์ด๋ ‡๊ฒŒํ•˜๋ฉด ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ๋™๊ธฐํ™”๋‚˜ ๊ณต์œ  ์ž์› ๊ด€๋ฆฌ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ  ์„œ๋ฒ„์˜ ํ™•์žฅ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

Node.js๊ฐ€ ๊ฐ€์ง„ ์—„์ฒญ๋‚œ ์ƒํƒœ๊ณ„๋„ ํŠน์ง•์ด์ž ์ด์ ์ด๋‹ค. Node.js๋Š” ๋งŽ์€ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ํ™œ๋ฐœํ•œ ์ƒํƒœ๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด
npm์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋ชจ๋“ˆ์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•ด ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค

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

๋งˆ์ง€๋ง‰์œผ๋กœ Node.js๋Š” ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.
๋”ฐ๋ผ์„œ, Node.js๋Š” ๋Œ€๊ทœ๋ชจ ๋„คํŠธ์›Œํฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์ ํ•ฉํ•˜๊ณ  ์‹ค์‹œ๊ฐ„ ์›น, API ์„œ๋ฒ„, ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค, ์›น ์„œ๋ฒ„ ๋“ฑ์œผ๋กœ๋„ ํ™œ์šฉ๋œ๋‹ค.

Express.js๋Š” ๋ฌด์—‡์ธ๊ฐ€?


Express.js๋Š” ์„œ๋ฒ„์‚ฌ์ด๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค. ์ด๋Ÿฌ๊ณ  ์ •๋ฆฌ๋ฅผ ๋๋‚ธ๋‹ค๋ฉด ์‚ฌ์šฉ๋ฒ•๋งŒ ์•„๋Š” ์‚ฌ๋žŒ์ด ๋˜๊ฒ ์ง€โ€ฆ
Express.js๋Š” Node.js์˜ HTTP ๋ชจ๋“ˆ ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•˜๊ณ  ์›น ๊ฐœ๋ฐœ์„ ๋” ์‰ฝ๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ–ˆ๋‹ค.
HTTP ๋ชจ๋“ˆ์˜ ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•œ Express์˜ ์ฃผ์š” ํŠน์ง•์œผ๋กœ๋Š”
๋ผ์šฐํŒ…(Routing)๊ณผ ๋ฏธ๋“ค์›จ์–ด(Middleware), ๋ทฐ ์—”์ง„ ์ง€์›, ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์› ๊ทธ๋ฆฌ๊ณ  ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ ๋“ฑ์ด ์žˆ๋‹ค.

Express.js๋Š” ์ƒ๋‹นํžˆ ๋ฏธ๋‹ˆ๋ฉ€ํ•˜๊ณ  ์‹ฌํ”Œํ•œ ๋””์ž์ธ ์ฒ ํ•™์„ ๊ฐ–๊ณ  ์žˆ์–ด ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
์ด ํŠน์ง•์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๊ณ  ํ™•์žฅ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

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

HTTP๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์š”์ฒญ ์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์š”์ฒญ์„ ๋กœ์ง์— ์ง์ ‘ ์ž‘์„ฑํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Express๋Š” ๋ฏธ๋“ค์›จ์–ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด request์™€ response ์‚ฌ์ด์— ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

HTTP๋ชจ๋“ˆ์€ ๋ชจ๋“  HTML์„ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผํ•˜์ง€๋งŒ Express๋Š” ๋‹ค์–‘ํ•œ ํ…œํ”Œ๋ฆฟ ์—”์ง„๊ณผ์˜ ํ†ตํ•ฉ์„ ์ œ๊ณตํ•ด ๋™์  ์›น ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
์ฆ‰, ๋ทฐ ์—”์ง„ ํ…œํ”Œ๋ฆฟ์„ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

HTTP ๋ชจ๋“ˆ์€ ์ •์  ํŒŒ์ผ(img, CSS, JS)์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์€ ๋‹น์—ฐํžˆ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Express๋Š” ์ •์  ํŒŒ์ผ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ œ๊ณตํ•ด ์ •์  ํŒŒ์ผ์„ ์‰ฝ๊ฒŒ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

Express.js๋Š” ๊ธฐ๋Šฅ์„ ์ถ”์ƒํ™”ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ƒ๋‹นํžˆ ํŽธ๋ฆฌํ•œ API๋ฅผ ์ œ๊ณตํ•ด ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.