• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • Algorithm

    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ
    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
  • Ubuntu

    • ๋ฆฌ๋ˆ…์Šค ์šฐ๋ถ„ํˆฌ GRUB ํฐํŠธ ๋ณ€๊ฒฝ
    • ์šฐ๋ถ„ํˆฌ ์ด๋ฏธ์ง€ ๋น„๋””์˜ค ์ธ๋„ค์ผ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์•ˆ ๋ณด์ž„ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Wine ํ™˜๊ฒฝ์—์„œ ์นด์นด์˜คํ†ก ์‹คํ–‰ ์‹œ explorer.exe ๋œจ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฒ•
    • ์šฐ๋ถ„ํˆฌ Wine ์นด์นด์˜คํ†ก ์‚ฌ์ง„ ์ด๋ฏธ์ง€ ์Šคํฌ๋ฆฐ์ƒท ๋ถ™์—ฌ๋„ฃ๊ธฐ
    • Wine ์นด์นด์˜คํ†ก ์ด๋ชจ์ง€ ๊นจ์ง ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Ubuntu ์œˆ๋„์šฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„๊ธฐ
  • Wellness

    • ์ฐจ์ „์žํ”ผ (Psyllium Husk)
    • ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ž๊ฐ€๋น„๊ฐ•์„ธ์ฒ™ (Nasal Irrigation)
    • QCY HT08 (MeloBuds Pro Plus)
    • ์ฝ˜์„œํƒ€ (Concerta)
    • ์ธ๋ฐ๋†€ (Inderal)
    • ์„คํŠธ๋ž„๋ฆฐ (Sertraline)
    • ๋ฉœ๋ผํ† ๋‹Œ (Melatonin)
    • ์น˜๊ฒฝ๋ถ€ ๋งˆ๋ชจ์ฆ
    • ๋ฐ”๋ฒจ ์Šค์ฟผํŠธ (Barbell Squat)
  • Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
    • ๋ฐ”๋กœํฌ ์Œ์•… (Baroque Music)
  • Design

    • ๊ตฌ๊ธ€์˜ ์•„์ด์ฝ˜ ๋Œ€๊ฐœํŽธ โ€” 6๋…„ ๋งŒ์˜ ์‹ค์ˆ˜ ์ธ์ •
    • ์ œ๋Ÿด๋“œ ์  ํƒ€ โ€” ๋Ÿญ์…”๋ฆฌ ์Šคํฌ์ธ  ์›Œ์น˜์˜ ์ฐฝ์‹œ์ž
    • ๋ฐ”์šฐํ•˜์šฐ์Šค โ€” ํ˜„๋Œ€ ๋””์ž์ธ์˜ ์›์ 
  • Brands

    • NOMOS Glashรผtte
    • Frรฉdรฉrique Constant
    • KZ (Knowledge Zenith)
    • ์—์ŠคํŠธ๋ผ (AESTURA)
    • JINHAO (้‡‘่ฑช)
    • Herman Miller
    • ๋ฐ์Šค์ปค (DESKER)
    • ๋ฌด์‹ ์‚ฌ ์Šคํƒ ๋‹ค๋“œ (Musinsa Standard)
  • Finance

    • ํ˜„๋Œ€์นด๋“œ ZERO โ€” Edition2 vs Edition3 ๋น„๊ต
    • ์‹ ํ•œ์นด๋“œ ์ฒ˜์Œ
    • S&P 500 ETF ํˆฌ์ž ๊ฐ€์ด๋“œ
    • ํŒŒํ‚นํ†ต์žฅ vs CMA ํ†ต์žฅ
    • ๋ฒ„ํฌ์…” ํ•ด์„œ์›จ์ด (Berkshire Hathaway)
    • ๋น„ํŠธ์ฝ”์ธ(Bitcoin)
  • Products

    • ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค (Audio Interface)
    • ์ฟ ๋ฃจํ† ๊ฐ€ (KURUTOGA)
    • CX31993 DAC ๋™๊ธ€
    • ํด๋ Œ์ง• ๋ฐ€ํฌ (Cleansing Milk)
    • ํ”ผ์ ฏ ํ† ์ด (Fidget Toy)
    • ThinkPad
  • Programming Languages

    • 8.0. Statement Level Control Structures
    • 8. Subprogram
    • 9. Implementing Subprogram
    • 10.1. Abstract Data Types and Encapsulation Constructs
    • 10.2. Support for Object Oriented Programming
    • 11. Concurrency
    • 12. FPL (1)
    • 13. FPL (2)
    • 14. Exception Handling and Event Handling
    • Final Exam

Web Application Development

์ž‘์„ฑ 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

About Node.js

  • JavaScript Runtime (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„)
  • JavaScript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ
  • ํ”„๋ก ํŠธ์—”๋“œ(Frontend) ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ•˜๋Š” JavaScript๋ฅผ ๋ฐฑ์—”๋“œ(Backend) ๊ฐœ๋ฐœ์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•จ
  • Asynchronous Request Processing
  • ์š”์ฒญ์„ ๋ฐ›์€ ํ›„ ํ•ด๋‹น ์š”์ฒญ์ด ๋๋‚˜๊ธฐ ์ „์— ๋‹ค์Œ ์š”์ฒญ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
  • Asynchronous IO (๋น„๋™๊ธฐ ์ž…์ถœ๋ ฅ)๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ IO๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ blocking (๋ธ”๋กœํ‚น)ํ•˜์ง€ ์•Š์Œ

Asynchronous Request Processing

  • Synchronous Request Processing (๋™๊ธฐ ์š”์ฒญ ์ฒ˜๋ฆฌ) alt text
    • T1: Request 1 ๋„์ฐฉ, ์‹คํ–‰
    • T2: Request 2 ๋„์ฐฉ
    • T3: Request 1 ์™„๋ฃŒ, Request 2 ์‹คํ–‰
    • T4: Request 2 ์™„๋ฃŒ
  • Asynchronous Request Processing alt text
    • T1: Request 1 ๋„์ฐฉ, ์‹คํ–‰
    • T2: Request 2 ๋„์ฐฉ, ์‹คํ–‰
    • T3: Request 1 ์™„๋ฃŒ
    • T4: Request 2 ์™„๋ฃŒ
  • Asynchronous Request Processing in Node.jsalt text
  • Event Loop (์ด๋ฒคํŠธ ๋ฃจํ”„)
    • Request1
    • Request2
    • Request3
    1. Event (์ด๋ฒคํŠธ)
    2. Next Request (๋‹ค์Œ ์š”์ฒญ)
    3. Callback

Callback Function

  • ๋น„๋™๊ธฐ ์ž‘์—…(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)๋ฅผ ์ถœ๋ ฅ

Node.js Project Structure

npm, package.json

  • npm (Node Package Manager)
    • ์ „ ์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŒ๋“  ์ˆ˜๋งŽ์€ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ
  • Package (ํŒจํ‚ค์ง€)
    • ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์˜ ๋ชจ์Œ
  • package.json
    • ํ”„๋กœ์ ํŠธ์˜ "์„ค๊ณ„๋„" ๋˜๋Š” "๋ช…์„ธ์„œ"์™€ ๊ฐ™์€ ํŒŒ์ผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋จ
    • ํ”„๋กœ์ ํŠธ ์ •๋ณด: ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„, ๋ฒ„์ „, ์„ค๋ช… ๋“ฑ
  • Dependencies (์˜์กด์„ฑ) ๋ชฉ๋ก
    • ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์˜ ์ด๋ฆ„๊ณผ ๋ฒ„์ „
    • npm install ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด npm์ด ์ด ๋ชฉ๋ก์„ ๋ณด๊ณ  ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ node_modules ํด๋”์— ์ž๋™์œผ๋กœ ์„ค์น˜ํ•จ
  • Scripts (์Šคํฌ๋ฆฝํŠธ)
    • npm start, npm test์™€ ๊ฐ™์ด ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜

Router

  • Router์˜ ์—ญํ• 
    • ํด๋ผ์ด์–ธํŠธ(Client)๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜จ ์š”์ฒญ(Request)์˜ URL ์ฃผ์†Œ์™€ HTTP ๋ฉ”์†Œ๋“œ(Method) (GET, POST ๋“ฑ)๋ฅผ ๋ณด๊ณ  ์ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋‹ด๋‹น์ž์—๊ฒŒ ์—ฐ๊ฒฐ
  • ๊ตฌ์กฐ
    • routes ๋˜๋Š” routers๋ผ๋Š” ๋ณ„๋„์˜ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด ๊ธฐ๋Šฅ๋ณ„๋กœ Router ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌ (์˜ˆ: userRouter.js, postRouter.js)

Controller

  • Controller์˜ ์—ญํ• 
    • Router๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ์ „๋‹ฌ๋ฐ›์•„ ์‹ค์งˆ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(Business Logic)์„ ์ฒ˜๋ฆฌ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต(Response)ํ•˜๋Š” ๋“ฑ์˜ ์‹ค์ œ ์—…๋ฌด๋ฅผ ๋‹ด๋‹น
  • ๊ตฌ์กฐ
    • Router์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ controllers ํด๋”๋ฅผ ๋งŒ๋“ค์–ด ๊ธฐ๋Šฅ๋ณ„๋กœ ํŒŒ์ผ์„ (๊ด€๋ฆฌ)
  • Router์™€์˜ ๊ด€๊ณ„
  • Router๋Š” "์–ด๋–ค ์š”์ฒญ์ด ๋“ค์–ด์™”์œผ๋‹ˆ ์ด ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ด"๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• 
    • ์‹ค์ œ ํ•จ์ˆ˜ ๋กœ์ง(Logic)์€ Controller์— ์ •์˜๋จ
  • ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๋” ๊น”๋”ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•จ

Middleware

  • Middleware์˜ ์—ญํ• 
    • Router๊ฐ€ ์š”์ฒญ์„ Controller์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์ „ํ›„์— ์‹คํ–‰๋˜๋Š” ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜
    • ์—ฌ๋Ÿฌ Router์—์„œ ๊ณตํ†ต์œผ๋กœ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์œ ์šฉ
  • ์‚ฌ์šฉ ์˜ˆ์‹œ
    • ์‚ฌ์šฉ์ž ์ธ์ฆ (Authentication): ๋กœ๊ทธ์ธ์ด ๋œ ์‚ฌ์šฉ์ž์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์•„๋‹ˆ๋ผ๋ฉด ์ ‘๊ทผ ์ฐจ๋‹จ
  • ๊ถŒํ•œ ๊ฒ€์‚ฌ (Authorization): ๊ด€๋ฆฌ์ž๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€์ธ์ง€ ํ™•์ธ

Config, .env

  • ์—ญํ• 
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์† ์ •๋ณด, API ํ‚ค(Key), ์„œ๋ฒ„ ํฌํŠธ(Port) ๋ฒˆํ˜ธ ๋“ฑ ํ”„๋กœ์ ํŠธ์˜ ํ™˜๊ฒฝ ์„ค์ •์„ ์ฝ”๋“œ์™€ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌ
  • ํ•„์š”ํ•œ ์ด์œ 
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ GitHub ๋“ฑ ๊ณต๊ฐœ๋œ ๊ณณ์— ๋…ธ์ถœ๋˜๋ฉด ์•ˆ ๋˜๋ฏ€๋กœ .env ํŒŒ์ผ์— ์ €์žฅํ•˜๊ณ  ์ด ํŒŒ์ผ์€ ๋ฒ„์ „ ๊ด€๋ฆฌ(Version Control)์—์„œ ์ œ์™ธ
  • ๊ตฌ์กฐ
    • config/ ํด๋”์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ • ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ํ”„๋กœ์ ํŠธ ์ตœ์ƒ๋‹จ ๋ฃจํŠธ(Root)์˜ .env ํŒŒ์ผ์— ๋ณด๊ด€
    • dotenv์™€ ๊ฐ™์€ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด ์ด ๋ณ€์ˆ˜๋“ค์„ ๋ถˆ๋Ÿฌ์˜ด
์ตœ๊ทผ ์ˆ˜์ •: 26. 6. 12. ์˜คํ›„ 3:28
Contributors: kmbzn, Claude Sonnet 4.6

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2026 kmbzn ยท MIT License