์์ฑ 2026. 6. 12.ยท์์ 2026. 6. 12.
Node.js- About
Node.js - Asynchronous Request Processing (๋น๋๊ธฐ ์์ฒญ ์ฒ๋ฆฌ)
- Callback Function (์ฝ๋ฐฑ ํจ์)
- About
Node.js project - npm,
package.json - Router (๋ผ์ฐํฐ)
- Controller (์ปจํธ๋กค๋ฌ)
- Middleware (๋ฏธ๋ค์จ์ด)
- Config (์ค์ ),
.env
- JavaScript Runtime (์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์)
- JavaScript ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ํ๊ฒฝ
- ํ๋ก ํธ์๋(Frontend) ๊ฐ๋ฐ์ ์ฌ์ฉํ๋ JavaScript๋ฅผ ๋ฐฑ์๋(Backend) ๊ฐ๋ฐ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ํจ
- Asynchronous Request Processing
- ์์ฒญ์ ๋ฐ์ ํ ํด๋น ์์ฒญ์ด ๋๋๊ธฐ ์ ์ ๋ค์ ์์ฒญ์ ๋ฐ์ ์ ์์
- Asynchronous IO (๋น๋๊ธฐ ์
์ถ๋ ฅ)๋ฅผ ์ง์ํ๋ฏ๋ก IO๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ blocking (๋ธ๋กํน)ํ์ง ์์
- Synchronous Request Processing (๋๊ธฐ ์์ฒญ ์ฒ๋ฆฌ)

- T1: Request 1 ๋์ฐฉ, ์คํ
- T2: Request 2 ๋์ฐฉ
- T3: Request 1 ์๋ฃ, Request 2 ์คํ
- T4: Request 2 ์๋ฃ
- Asynchronous Request Processing

- T1: Request 1 ๋์ฐฉ, ์คํ
- T2: Request 2 ๋์ฐฉ, ์คํ
- T3: Request 1 ์๋ฃ
- T4: Request 2 ์๋ฃ
- Asynchronous Request Processing in
Node.js
- Event Loop (์ด๋ฒคํธ ๋ฃจํ)
- Event (์ด๋ฒคํธ)
- Next Request (๋ค์ ์์ฒญ)
- Callback
- ๋น๋๊ธฐ ์์
(Asynchronous operation)์ด ์๋ฃ๋์์ ๋ ํธ์ถ๋๋ ํจ์(Function)
- ๋น๋๊ธฐ ์์
๊ฐ ์์ ๊ด๊ณ๋ฅผ ๋ณด์ฅํจ
const fs = require('fs');
fs.readFile('example.txt', 'utf-8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
- ํ์ผ์ ์ฝ์ด์จ ํ ์๋ฌ(Error)๊ฐ ์์ผ๋ฉด ์ฝ์์ฐฝ(Console)์ ์๋ฌ๋ฅผ ์ถ๋ ฅํ๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ฝ์ด์จ ๋ฐ์ดํฐ(Data)๋ฅผ ์ถ๋ ฅ
- npm (Node Package Manager)
- ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ด ๋ง๋ ์๋ง์ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ๊ด๋ฆฌํ๋ ๋๊ตฌ
- Package (ํจํค์ง)
- ํน์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋์ ๋ชจ์
package.json- ํ๋ก์ ํธ์ "์ค๊ณ๋" ๋๋ "๋ช
์ธ์"์ ๊ฐ์ ํ์ผ๋ก ์๋์ ๊ฐ์ ์ ๋ณด๊ฐ ๊ธฐ๋ก๋จ
- ํ๋ก์ ํธ ์ ๋ณด: ํ๋ก์ ํธ์ ์ด๋ฆ, ๋ฒ์ , ์ค๋ช
๋ฑ
- Dependencies (์์กด์ฑ) ๋ชฉ๋ก
- ํ๋ก์ ํธ๊ฐ ์คํ๋๊ธฐ ์ํด ํ์ํ ํจํค์ง๋ค์ ์ด๋ฆ๊ณผ ๋ฒ์
npm install ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด npm์ด ์ด ๋ชฉ๋ก์ ๋ณด๊ณ ํ์ํ ํจํค์ง๋ค์ node_modules ํด๋์ ์๋์ผ๋ก ์ค์นํจ
- Scripts (์คํฌ๋ฆฝํธ)
npm start, npm test์ ๊ฐ์ด ์์ฃผ ์ฌ์ฉํ๋ ๋ช
๋ น์ด๋ฅผ ๋ฏธ๋ฆฌ ์ ์
- Router์ ์ญํ
- ํด๋ผ์ด์ธํธ(Client)๋ก๋ถํฐ ๋ค์ด์จ ์์ฒญ(Request)์ URL ์ฃผ์์
HTTP ๋ฉ์๋(Method) (GET, POST ๋ฑ)๋ฅผ ๋ณด๊ณ ์ด ์์ฒญ์ ์ฒ๋ฆฌํ ๋ด๋น์์๊ฒ ์ฐ๊ฒฐ
- ๊ตฌ์กฐ
- routes ๋๋ routers๋ผ๋ ๋ณ๋์ ํด๋๋ฅผ ๋ง๋ค์ด ๊ธฐ๋ฅ๋ณ๋ก Router ํ์ผ์ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌ (์:
userRouter.js, postRouter.js)
- Controller์ ์ญํ
- Router๋ก๋ถํฐ ์์ฒญ์ ์ ๋ฌ๋ฐ์ ์ค์ง์ ์ธ ๋น์ฆ๋์ค ๋ก์ง(Business Logic)์ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค(Database)์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต(Response)ํ๋ ๋ฑ์ ์ค์ ์
๋ฌด๋ฅผ ๋ด๋น
- ๊ตฌ์กฐ
- Router์ ๋ง์ฐฌ๊ฐ์ง๋ก controllers ํด๋๋ฅผ ๋ง๋ค์ด ๊ธฐ๋ฅ๋ณ๋ก ํ์ผ์ (๊ด๋ฆฌ)
- Router์์ ๊ด๊ณ
- Router๋ "์ด๋ค ์์ฒญ์ด ๋ค์ด์์ผ๋ ์ด ํจ์๋ฅผ ์คํํด"๋ผ๊ณ ์๋ ค์ฃผ๋ ์ญํ
- ์ค์ ํจ์ ๋ก์ง(Logic)์ Controller์ ์ ์๋จ
- ์ด๋ฅผ ํตํด ์ฝ๋๋ฅผ ๋ ๊น๋ํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ฒ ํจ
- Middleware์ ์ญํ
- Router๊ฐ ์์ฒญ์ Controller์๊ฒ ์ ๋ฌํ๊ธฐ ์ ํ์ ์คํ๋๋ ์ค๊ฐ ์ฒ๋ฆฌ ํจ์
- ์ฌ๋ฌ Router์์ ๊ณตํต์ผ๋ก ํ์ํ ๊ธฐ๋ฅ๋ค์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ ์ฉ
- ์ฌ์ฉ ์์
- ์ฌ์ฉ์ ์ธ์ฆ (Authentication): ๋ก๊ทธ์ธ์ด ๋ ์ฌ์ฉ์์ธ์ง ํ์ธํ๊ณ ์๋๋ผ๋ฉด ์ ๊ทผ ์ฐจ๋จ
- ๊ถํ ๊ฒ์ฌ (Authorization): ๊ด๋ฆฌ์๋ง ์ ๊ทผํ ์ ์๋ ํ์ด์ง์ธ์ง ํ์ธ
- ์ญํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ ์ ๋ณด, API ํค(Key), ์๋ฒ ํฌํธ(Port) ๋ฒํธ ๋ฑ ํ๋ก์ ํธ์ ํ๊ฒฝ ์ค์ ์ ์ฝ๋์ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌ
- ํ์ํ ์ด์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋น๋ฐ๋ฒํธ์ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ GitHub ๋ฑ ๊ณต๊ฐ๋ ๊ณณ์ ๋
ธ์ถ๋๋ฉด ์ ๋๋ฏ๋ก
.env ํ์ผ์ ์ ์ฅํ๊ณ ์ด ํ์ผ์ ๋ฒ์ ๊ด๋ฆฌ(Version Control)์์ ์ ์ธ
- ๊ตฌ์กฐ
- config/ ํด๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ๋ฑ์ ๊ด๋ฆฌํ๊ณ ๋ฏผ๊ฐํ ์ ๋ณด๋ ํ๋ก์ ํธ ์ต์๋จ ๋ฃจํธ(Root)์
.env ํ์ผ์ ๋ณด๊ด - dotenv์ ๊ฐ์ ํจํค์ง๋ฅผ ์ฌ์ฉํด ์ด ๋ณ์๋ค์ ๋ถ๋ฌ์ด