Skip to content

๋™์‹œ์„ฑ๊ณผ async / await

๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜์—์„œ์˜ async def ๋ฌธ๋ฒ•์— ๋Œ€ํ•œ ์„ธ๋ถ€์‚ฌํ•ญ๊ณผ ๋น„๋™๊ธฐ ์ฝ”๋“œ, ๋™์‹œ์„ฑ ๋ฐ ๋ณ‘๋ ฌ์„ฑ์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ

๋ฐ”์˜์‹  ๊ฒฝ์šฐ

์š”์•ฝ

๋‹ค์Œ๊ณผ ๊ฐ™์ด await๋ฅผ ์‚ฌ์šฉํ•ด ํ˜ธ์ถœํ•˜๋Š” ์ œ3์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:

results = await some_library()

๋‹ค์Œ์ฒ˜๋Ÿผ ๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜๋ฅผ async def๋ฅผ ์‚ฌ์šฉํ•ด ์„ ์–ธํ•˜์‹ญ์‹œ์˜ค:

@app.get('/')
async def read_results():
    results = await some_library()
    return results

์ฐธ๊ณ 

async def๋กœ ์ƒ์„ฑ๋œ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ await๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


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

@app.get('/')
def results():
    results = some_library()
    return results

๋งŒ์•ฝ ๋‹น์‹ ์˜ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์ด (์–ด์งธ์„œ์ธ์ง€) ๋‹ค๋ฅธ ๋ฌด์—‡๊ณผ ์˜์‚ฌ์†Œํ†ตํ•˜๊ณ  ๊ทธ๊ฒƒ์ด ์‘๋‹ตํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด async def๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.


๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด, ๊ทธ๋ƒฅ def๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.


์ฐธ๊ณ : ๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜์—์„œ ํ•„์š”ํ•œ๋งŒํผ def์™€ async def๋ฅผ ํ˜ผ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ€์žฅ ์•Œ๋งž์€ ๊ฒƒ์„ ์„ ํƒํ•ด์„œ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. FastAPI๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์•Œ๋งž์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด์ฐŒ๋˜์—ˆ๋“ , ์ƒ๊ธฐ ์–ด๋– ํ•œ ๊ฒฝ์šฐ๋ผ๋„, FastAPI๋Š” ์—ฌ์ „ํžˆ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ณ  ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ƒ๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ ์–ด๋Š ์ •๋„์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์  ์„ธ๋ถ€์‚ฌํ•ญ

์ตœ์‹  ํŒŒ์ด์ฌ ๋ฒ„์ „์€ async์™€ await ๋ฌธ๋ฒ•๊ณผ ํ•จ๊ป˜ โ€œ์ฝ”๋ฃจํ‹ดโ€์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” โ€œ๋น„๋™๊ธฐ ์ฝ”๋“œโ€๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์„น์…˜๋“ค์—์„œ ํ•ด๋‹น ๋ฌธ์žฅ์„ ๋ถ€๋ถ„๋ณ„๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

  • ๋น„๋™๊ธฐ ์ฝ”๋“œ
  • async์™€ await
  • ์ฝ”๋ฃจํ‹ด

๋น„๋™๊ธฐ ์ฝ”๋“œ

๋น„๋™๊ธฐ ์ฝ”๋“œ๋ž€ ์–ธ์–ด ๐Ÿ’ฌ ๊ฐ€ ์ฝ”๋“œ์˜ ์–ด๋Š ํ•œ ๋ถ€๋ถ„์—์„œ, ์ปดํ“จํ„ฐ / ํ”„๋กœ๊ทธ๋žจ๐Ÿค–์—๊ฒŒ ๋‹ค๋ฅธ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์–ด๋”˜๊ฐ€์—์„œ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฌด์–ธ๊ฐ€๊ฐ€ โ€œ๋Š๋ฆฐ-ํŒŒ์ผ" ๐Ÿ“ ์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

๋”ฐ๋ผ์„œ โ€œ๋Š๋ฆฐ-ํŒŒ์ผโ€ ๐Ÿ“์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ์ปดํ“จํ„ฐ๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ค์Œ์œผ๋กœ, ๊ทธ๊ฒƒ ๐Ÿค– ์€ ์™„๋ฃŒํ•  ์ฒซ๋ฒˆ์งธ ์ž‘์—…์— ์ฐฉ์ˆ˜ํ•˜๊ณ (์šฐ๋ฆฌ์˜ "๋Š๋ฆฐ-ํŒŒ์ผ" ๐Ÿ“ ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค) ๊ทธ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ์ž‘์—…์„ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค.

"๋‹ค๋ฅธ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ"์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„๊ต์  "๋Š๋ฆฐ" (ํ”„๋กœ์„ธ์„œ์™€ RAM ๋ฉ”๋ชจ๋ฆฌ ์†๋„์— ๋น„ํ•ด) I/O ์ž‘์—…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ์˜ ๊ฒƒ๋“ค์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค:

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

์ˆ˜ํ–‰ ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์ด I/O ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๋Š”๋ฐ์— ์†Œ์š”๋˜๊ธฐ ๋•Œ๋ฌธ์—, "I/O์— ๋ฌถ์ธ" ์ž‘์—…์ด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.

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

์ด ๋Œ€์‹ ์—, "๋น„๋™๊ธฐ" ์‹œ์Šคํ…œ์—์„œ๋Š”, ์ž‘์—…์€ ์ผ๋‹จ ์™„๋ฃŒ๋˜๋ฉด, ์ปดํ“จํ„ฐ / ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์ผ์„ ์™„๋ฃŒํ•˜๊ณ  ์ดํ›„ ๋‹ค์‹œ ๋Œ์•„์™€์„œ ๊ทธ๊ฒƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„ ์ด๋ฅผ ์‚ฌ์šฉํ•ด ์ž‘์—…์„ ์ง€์†ํ•  ๋•Œ๊นŒ์ง€ ์ž ์‹œ (๋ช‡ ๋งˆ์ดํฌ๋กœ์ดˆ) ๋Œ€๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๋™๊ธฐ"("๋น„๋™๊ธฐ"์˜ ๋ฐ˜๋Œ€)๋Š” ์ปดํ“จํ„ฐ / ํ”„๋กœ๊ทธ๋žจ์ด ์ƒ์ดํ•œ ์ž‘์—…๋“ค๊ฐ„ ์ „ํ™˜์„ ํ•˜๊ธฐ ์ „์— ๊ทธ๊ฒƒ์ด ๋Œ€๊ธฐ๋ฅผ ๋™๋ฐ˜ํ•˜๊ฒŒ ๋ ์ง€๋ผ๋„ ๋ชจ๋“  ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— "์ˆœ์ฐจ"๋ผ๋Š” ์šฉ์–ด๋กœ๋„ ํ”ํžˆ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.

๋™์‹œ์„ฑ๊ณผ ๋ฒ„๊ฑฐ

์œ„์—์„œ ์„ค๋ช…ํ•œ ๋น„๋™๊ธฐ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์ข…์ข… "๋™์‹œ์„ฑ"์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ "๋ณ‘๋ ฌ์„ฑ"๊ณผ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋™์‹œ์„ฑ๊ณผ ๋ณ‘๋ ฌ์„ฑ์€ ๋ชจ๋‘ "๋™์‹œ์— ์ผ์–ด๋‚˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ผ๋“ค"๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋™์‹œ์„ฑ๊ณผ ๋ณ‘๋ ฌ์„ฑ์˜ ์„ธ๋ถ€์ ์ธ ๊ฐœ๋…์—๋Š” ๊ฝค ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐจ์ด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด, ๋‹ค์Œ์˜ ๋ฒ„๊ฑฐ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ์ƒ์ƒํ•ด๋ณด์‹ญ์‹œ์˜ค:

๋™์‹œ ๋ฒ„๊ฑฐ

๋‹น์‹ ์€ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ์™€ ํŒจ์ŠคํŠธํ‘ธ๋“œ ๐Ÿ” ๋ฅผ ๋จน์œผ๋Ÿฌ ๊ฐ”์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ ์› ๐Ÿ’ ์ด ๋‹น์‹  ์•ž์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ฃผ๋ฌธ์„ ๋ฐ›์„ ๋™์•ˆ ์ค„์„ ์„œ์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋‹น์‹ ์˜ ์ˆœ์„œ๊ฐ€ ๋˜์–ด์„œ, ๋‹น์‹ ์€ ๋‹น์‹ ๊ณผ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ๋ฅผ ์œ„ํ•œ ๋‘ ๊ฐœ์˜ ๊ณ ๊ธ‰์Šค๋Ÿฌ์šด ๋ฒ„๊ฑฐ ๐Ÿ” ๋ฅผ ์ฃผ๋ฌธํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๋ˆ์„ ๋ƒ…๋‹ˆ๋‹ค ๐Ÿ’ธ.

์ ์› ๐Ÿ’ ์€ ์ฃผ๋ฐฉ ๐Ÿ‘จโ€๐Ÿณ ์— ์š”๋ฆฌ๋ฅผ ํ•˜๋ผ๊ณ  ์ „๋‹ฌํ•˜๊ณ , ๋”ฐ๋ผ์„œ ๊ทธ๋“ค์€ ๋‹น์‹ ์˜ ๋ฒ„๊ฑฐ ๐Ÿ” ๋ฅผ ์ค€๋น„ํ•ด์•ผํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ๋ฉ๋‹ˆ๋‹ค(๊ทธ๋“ค์ด ์ง€๊ธˆ์€ ๋‹น์‹  ์•ž ๊ณ ๊ฐ๋“ค์˜ ์ฃผ๋ฌธ์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์„์ง€๋ผ๋„ ๋ง์ž…๋‹ˆ๋‹ค).

์ ์› ๐Ÿ’ ์€ ๋‹น์‹ ์˜ ์ˆœ์„œ๊ฐ€ ์ ํžŒ ๋ฒˆํ˜ธํ‘œ๋ฅผ ์ค๋‹ˆ๋‹ค.

๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ, ๋‹น์‹ ์€ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ์™€ ํ•จ๊ป˜ ํ…Œ์ด๋ธ”์„ ๊ณ ๋ฅด๊ณ , ์ž๋ฆฌ์— ์•‰์•„ ์˜ค๋žซ๋™์•ˆ (๋‹น์‹ ์ด ์ฃผ๋ฌธํ•œ ๋ฒ„๊ฑฐ๋Š” ๊ฝค๋‚˜ ๊ณ ๊ธ‰์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์— ์ค€๋น„ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค โœจ๐Ÿ”โœจ) ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ์™€ ํ…Œ์ด๋ธ”์— ์•‰์•„์„œ ๋ฒ„๊ฑฐ ๐Ÿ” ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ, ๊ทธ ์‚ฌ๋žŒ ๐Ÿ˜ ์ด ์–ผ๋งˆ๋‚˜ ๋ฉ‹์ง€๊ณ , ์‚ฌ๋ž‘์Šค๋Ÿฝ๊ณ , ๋˜‘๋˜‘ํ•œ์ง€ ๊ฐํƒ„ํ•˜๋ฉฐ ์‹œ๊ฐ„์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค โœจ๐Ÿ˜โœจ.

์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ์™€ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ์–˜๊ธฐํ•˜๋Š” ๋™์•ˆ, ๋•Œ๋•Œ๋กœ, ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์ฐจ๋ก€๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ๋ณด๊ธฐ ์œ„ํ•ด ์นด์šดํ„ฐ์˜ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค ์–ด๋Š ์ˆœ๊ฐ„, ๋‹น์‹ ์˜ ์ฐจ๋ก€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์นด์šดํ„ฐ์— ๊ฐ€์„œ, ๋ฒ„๊ฑฐ ๐Ÿ” ๋ฅผ ๋ฐ›๊ณ , ํ…Œ์ด๋ธ”๋กœ ๋‹ค์‹œ ๋Œ์•„์˜ต๋‹ˆ๋‹ค.

๋‹น์‹ ๊ณผ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ๋Š” ๋ฒ„๊ฑฐ ๐Ÿ” ๋ฅผ ๋จน์œผ๋ฉฐ ์ข‹์€ ์‹œ๊ฐ„์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค โœจ.


๋‹น์‹ ์ด ์ด ์ด์•ผ๊ธฐ์—์„œ ์ปดํ“จํ„ฐ / ํ”„๋กœ๊ทธ๋žจ ๐Ÿค– ์ด๋ผ๊ณ  ์ƒ์ƒํ•ด๋ณด์‹ญ์‹œ์˜ค.

์ค„์„ ์„œ์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ, ๋‹น์‹ ์€ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ณ  ๐Ÿ˜ด ๋‹น์‹ ์˜ ์ฐจ๋ก€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ, ์–ด๋– ํ•œ "์ƒ์‚ฐ์ ์ธ" ์ผ๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ ์› ๐Ÿ’ ์ด (์Œ์‹์„ ์ค€๋น„ํ•˜์ง€๋Š” ์•Š๊ณ ) ์ฃผ๋ฌธ์„ ๋ฐ›๊ธฐ๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค„์ด ๋นจ๋ฆฌ ์ค„์–ด๋“ค์–ด์„œ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๊ทธ๋‹ค์Œ, ๋‹น์‹ ์ด ์ฐจ๋ก€๊ฐ€ ์˜ค๋ฉด, ๋‹น์‹ ์€ ์‹ค์ œ๋กœ "์ƒ์‚ฐ์ ์ธ" ์ผ ๐Ÿค“ ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋ฉ”๋‰ด๋ฅผ ๋ณด๊ณ , ๋ฌด์—‡์„ ๋จน์„์ง€ ๊ฒฐ์ •ํ•˜๊ณ , ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ์˜ ์„ ํƒ์„ ๋ฌป๊ณ , ๋ˆ์„ ๋‚ด๊ณ  ๐Ÿ’ธ , ๋งž๋Š” ์นด๋“œ๋ฅผ ๋ƒˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๋น„์šฉ์ด ์ œ๋Œ€๋กœ ์ง€๋ถˆ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ฃผ๋ฌธ์ด ์ œ๋Œ€๋กœ ๋“ค์–ด๊ฐ”๋Š”์ง€ ํ™•์ธ์„ ํ•˜๋Š” ์ž‘์—… ๋“ฑ๋“ฑ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ดํ›„์—๋Š”, ๋ฒ„๊ฑฐ ๐Ÿ” ๋ฅผ ์•„์ง ๋ฐ›์ง€ ๋ชปํ–ˆ์Œ์—๋„, ๋ฒ„๊ฑฐ๊ฐ€ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ๐Ÿ•™ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ์› ๐Ÿ’ ๊ณผ์˜ ์ž‘์—…์€ "์ผ์‹œ์ •์ง€" โธ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฒˆํ˜ธํ‘œ๋ฅผ ๋ฐ›๊ณ  ์นด์šดํ„ฐ์—์„œ ๋‚˜์™€ ํ…Œ์ด๋ธ”์— ์•‰์œผ๋ฉด, ๋‹น์‹ ์€ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ์™€ ๊ทธ "์ž‘์—…" โฏ ๐Ÿค“ ์— ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ๐Ÿ”€ ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹น์‹ ์€ ๋‹ค์‹œ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ์—๊ฒŒ ์ž‘์—…์„ ๊ฑฐ๋Š” ๋งค์šฐ "์ƒ์‚ฐ์ ์ธ" ์ผ ๐Ÿค“ ์„ ํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ๊ฐ€ ์ด์•ผ๊ธฐ๋ฅผ ๋๋‚ผ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ํ›„ (ํ˜„์žฌ ์ž‘์—… ์™„๋ฃŒ โฏ / ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—… ์ฒ˜๋ฆฌ ๐Ÿค“ ), ์ •์ค‘ํ•˜๊ฒŒ ๋ฏธ์†Œ์ง“๊ณ  ๋ฒ„๊ฑฐ๋ฅผ ๊ฐ€์ง€๋Ÿฌ ๊ฐ€๊ฒ ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค โธ.

๊ทธ๋‹ค์Œ ๋‹น์‹ ์€ ์นด์šดํ„ฐ์— ๊ฐ€์„œ ๐Ÿ”€ , ์ดˆ๊ธฐ ์ž‘์—…์„ ์ด์ œ ์™„๋ฃŒํ•˜๊ณ  โฏ , ๋ฒ„๊ฑฐ ๐Ÿ” ๋ฅผ ๋ฐ›๊ณ , ๊ฐ์‚ฌํ•˜๋‹ค๊ณ  ๋งํ•˜๊ณ  ํ…Œ์ด๋ธ”๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด๋กœ์จ ์นด์šดํ„ฐ์™€์˜ ์ƒํ˜ธ์ž‘์šฉ ๋‹จ๊ณ„ / ์ž‘์—…์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค โน.

์ด์ „ ์ž‘์—…์ธ "๋ฒ„๊ฑฐ ๋ฐ›๊ธฐ"๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด โน "๋ฒ„๊ฑฐ ๋จน๊ธฐ"๋ผ๋Š” ์ƒˆ๋กœ์šด ์ž‘์—…์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค ๐Ÿ”€ โฏ.

๋ณ‘๋ ฌ ๋ฒ„๊ฑฐ

์ด์ œ "๋™์‹œ ๋ฒ„๊ฑฐ"๊ฐ€ ์•„๋‹Œ "๋ณ‘๋ ฌ ๋ฒ„๊ฑฐ"๋ฅผ ์ƒ์ƒํ•ด๋ณด์‹ญ์‹œ์˜ค.

๋‹น์‹ ์€ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ์™€ ํ•จ๊ป˜ ๋ณ‘๋ ฌ ํŒจ์ŠคํŠธํ‘ธ๋“œ ๐Ÿ” ๋ฅผ ๋จน์œผ๋Ÿฌ ๊ฐ”์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์—ฌ๋Ÿฌ๋ช…(8๋ช…์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค)์˜ ์ ์›์ด ๋‹น์‹  ์•ž ์‚ฌ๋žŒ๋“ค์˜ ์ฃผ๋ฌธ์„ ๋ฐ›์œผ๋ฉฐ ๋™์‹œ์— ์š”๋ฆฌ ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ ๋„ ํ•˜๋Š” ๋™์•ˆ ์ค„์„ ์„œ์„œ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

๋‹น์‹  ์•ž ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๋ฒ„๊ฑฐ๊ฐ€ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ์นด์šดํ„ฐ์—์„œ ๋– ๋‚˜์ง€ ์•Š๊ณ  ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค ๐Ÿ•™ . ์™œ๋ƒํ•˜๋ฉด 8๋ช…์˜ ์ง์›๋“ค์ด ๋‹ค์Œ ์ฃผ๋ฌธ์„ ๋ฐ›๊ธฐ ์ „์— ๋ฒ„๊ฑฐ๋ฅผ ์ค€๋น„ํ•˜๋Ÿฌ ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋งˆ์นจ๋‚ด ๋‹น์‹ ์˜ ์ฐจ๋ก€๊ฐ€ ์™”๊ณ , ๋‹น์‹ ์€ ๋‹น์‹ ๊ณผ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ๋ฅผ ์œ„ํ•œ ๋‘ ๊ฐœ์˜ ๊ณ ๊ธ‰์Šค๋Ÿฌ์šด ๋ฒ„๊ฑฐ ๐Ÿ” ๋ฅผ ์ฃผ๋ฌธํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๋น„์šฉ์„ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค ๐Ÿ’ธ .

์ ์›์ด ์ฃผ๋ฐฉ์— ๊ฐ‘๋‹ˆ๋‹ค ๐Ÿ‘จโ€๐Ÿณ .

๋‹น์‹ ์€ ๋ฒˆํ˜ธํ‘œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๊ตฌ๋„ ๋‹น์‹ ์˜ ๋ฒ„๊ฑฐ ๐Ÿ” ๋ฅผ ๋Œ€์‹  ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์—†๋„๋ก ์นด์šดํ„ฐ์— ์„œ์„œ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค ๐Ÿ•™ .

๋‹น์‹ ๊ณผ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ƒˆ์น˜๊ธฐํ•ด์„œ ๋ฒ„๊ฑฐ๋ฅผ ๊ฐ€์ ธ๊ฐ€์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š๋ผ ๋ฐ”์˜๊ธฐ ๋•Œ๋ฌธ์— ๐Ÿ•™ , ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€์—๊ฒŒ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ๐Ÿ˜ž .

์ด๊ฒƒ์€ "๋™๊ธฐ" ์ž‘์—…์ด๊ณ , ๋‹น์‹ ์€ ์ ์›/์š”๋ฆฌ์‚ฌ ๐Ÿ‘จโ€๐Ÿณ ์™€ "๋™๊ธฐํ™”" ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ๐Ÿ•™ , ์ ์›/์š”๋ฆฌ์‚ฌ ๐Ÿ‘จโ€๐Ÿณ ๊ฐ€ ๋ฒ„๊ฑฐ ๐Ÿ” ์ค€๋น„๋ฅผ ์™„๋ฃŒํ•œ ํ›„ ๋‹น์‹ ์—๊ฒŒ ์ฃผ๊ฑฐ๋‚˜, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๊ฒƒ์„ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ทธ ์ˆœ๊ฐ„์— ๊ทธ ๊ณณ์— ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์นด์šดํ„ฐ ์•ž์—์„œ ์˜ค๋žซ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฐ ํ›„์— ๐Ÿ•™ , ์ ์›/์š”๋ฆฌ์‚ฌ ๐Ÿ‘จโ€๐Ÿณ ๊ฐ€ ๋‹น์‹ ์˜ ๋ฒ„๊ฑฐ ๐Ÿ” ๋ฅผ ๊ฐ€์ง€๊ณ  ๋Œ์•„์˜ต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋ฒ„๊ฑฐ๋ฅผ ๋ฐ›๊ณ  ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€์™€ ํ•จ๊ป˜ ํ…Œ์ด๋ธ”๋กœ ๋Œ์•„์˜ต๋‹ˆ๋‹ค.

๋‹จ์ง€ ๋จน๊ธฐ๋งŒ ํ•˜๋‹ค๊ฐ€, ๋‹ค ๋จน์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ” โน.

์นด์šดํ„ฐ ์•ž์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ๐Ÿ•™ ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ํ—ˆ๋น„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€ํ™”๋ฅผ ํ•˜๊ฑฐ๋‚˜ ์ž‘์—…์„ ๊ฑธ ์‹œ๊ฐ„์ด ๊ฑฐ์˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜ž .


์ด ๋ณ‘๋ ฌ ๋ฒ„๊ฑฐ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ, ๋‹น์‹ ์€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ๐Ÿ•™ , ์˜ค๋žœ ์‹œ๊ฐ„๋™์•ˆ "์นด์šดํ„ฐ์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š”" ๐Ÿ•™ ๋ฐ์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด๋Š” โฏ ๋‘ ๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ(๋‹น์‹ ๊ณผ ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€๐Ÿ˜)๋ฅผ ๊ฐ€์ง„ ์ปดํ“จํ„ฐ / ํ”„๋กœ๊ทธ๋žจ ๐Ÿค– ์ž…๋‹ˆ๋‹ค.

ํŒจ์ŠคํŠธํ‘ธ๋“œ์ ์—๋Š” 8๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ(์ ์›/์š”๋ฆฌ์‚ฌ) ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ ๋ฒ„๊ฑฐ๋Š” ๋‹จ ๋‘ ๊ฐœ(ํ•œ ๋ช…์˜ ์ง์›๊ณผ ํ•œ ๋ช…์˜ ์š”๋ฆฌ์‚ฌ) ๐Ÿ’ ๐Ÿ‘จโ€๐Ÿณ ๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ, ๋ณ‘๋ ฌ ๋ฒ„๊ฑฐ ์˜ˆ์‹œ๊ฐ€ ์ตœ์„ ์€ ์•„๋‹™๋‹ˆ๋‹ค ๐Ÿ˜ž .


์ด ์˜ˆ์‹œ๋Š” ๋ฒ„๊ฑฐ๐Ÿ” ์ด์•ผ๊ธฐ์™€ ๊ฒฐ์ด ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋” "ํ˜„์‹ค์ ์ธ" ์˜ˆ์‹œ๋กœ, ์€ํ–‰์„ ์ƒ์ƒํ•ด๋ณด์‹ญ์‹œ์˜ค.

์ตœ๊ทผ๊นŒ์ง€, ๋Œ€๋‹ค์ˆ˜์˜ ์€ํ–‰์—๋Š” ๋‹ค์ˆ˜์˜ ์€ํ–‰์›๋“ค ๐Ÿ‘จโ€๐Ÿ’ผ๐Ÿ‘จโ€๐Ÿ’ผ๐Ÿ‘จโ€๐Ÿ’ผ๐Ÿ‘จโ€๐Ÿ’ผ ๊ณผ ๊ธด ์ค„ ๐Ÿ•™๐Ÿ•™๐Ÿ•™๐Ÿ•™๐Ÿ•™๐Ÿ•™๐Ÿ•™๐Ÿ•™ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์€ํ–‰์›๋“ค์€ ํ•œ ๋ช… ํ•œ ๋ช…์˜ ๊ณ ๊ฐ๋“ค์„ ์ฐจ๋ก€๋กœ ์ƒ๋Œ€ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘จโ€๐Ÿ’ผโฏ .

๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ์˜ค๋žซ๋™์•ˆ ์ค„์—์„œ ๊ธฐ๋‹ค๋ ค์•ผํ•˜๊ณ  ๐Ÿ•™ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹น์‹ ์˜ ์ฐจ๋ก€๋ฅผ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์•„๋งˆ ๋‹น์‹ ์€ ์€ํ–‰ ๐Ÿฆ ์‹ฌ๋ถ€๋ฆ„์— ์ง์‚ฌ๋ž‘ ์ƒ๋Œ€ ๐Ÿ˜ ๋ฅผ ๋ฐ๋ ค๊ฐ€๊ณ  ์‹ถ์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฒ„๊ฑฐ ์˜ˆ์‹œ์˜ ๊ฒฐ๋ก 

"์ง์‚ฌ๋ž‘ ์ƒ๋Œ€์™€์˜ ํŒจ์ŠคํŠธํ‘ธ๋“œ์  ๋ฒ„๊ฑฐ" ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ, ์˜ค๋žœ ๊ธฐ๋‹ค๋ฆผ ๐Ÿ•™ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ ์‹œ์Šคํ…œ โธ๐Ÿ”€โฏ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

๋Œ€๋‹ค์ˆ˜์˜ ์›น ์‘์šฉํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ๊ฐ€ ๊ทธ๋Ÿฌํ•ฉ๋‹ˆ๋‹ค.

๋งค์šฐ ๋งŽ์€ ์ˆ˜์˜ ์œ ์ €๊ฐ€ ์žˆ์ง€๋งŒ, ์„œ๋ฒ„๋Š” ๊ทธ๋“ค์˜ ์š”์ฒญ์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋‹ฅ-์ข‹์ง€-์•Š์€ ์—ฐ๊ฒฐ์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ•™ .

๊ทธ๋ฆฌ๊ณ  ์‘๋‹ต์ด ๋Œ์•„์˜ฌ ๋•Œ๊นŒ์ง€ ๋‹ค์‹œ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ•™ .

์ด "๊ธฐ๋‹ค๋ฆผ" ๐Ÿ•™ ์€ ๋งˆ์ดํฌ๋กœ์ดˆ ๋‹จ์œ„์ด์ง€๋งŒ, ๋ชจ๋‘ ๋”ํ•ด์ง€๋ฉด, ๊ฒฐ๊ตญ์—๋Š” ๋งค์šฐ ๊ธด ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์›น API๋ฅผ ์œ„ํ•ด ๋น„๋™๊ธฐ โธ๐Ÿ”€โฏ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์กด์žฌํ•˜๋Š” ์œ ๋ช…ํ•œ ํŒŒ์ด์ฌ ํ”„๋ ˆ์ž„์›Œํฌ (Flask์™€ Django ๋“ฑ)์€ ์ƒˆ๋กœ์šด ๋น„๋™๊ธฐ ๊ธฐ๋Šฅ๋“ค์ด ํŒŒ์ด์ฌ์— ์กด์žฌํ•˜๊ธฐ ์ „์— ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ๊ทธ๋“ค์˜ ๋ฐฐํฌ ๋ฐฉ์‹์€ ๋ณ‘๋ ฌ ์‹คํ–‰๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋งŒํผ ๊ฐ•๋ ฅํ•˜์ง€๋Š” ์•Š์€ ์˜ˆ์ „ ๋ฒ„์ „์˜ ๋น„๋™๊ธฐ ์‹คํ–‰์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ ์›น ํŒŒ์ด์ฌ(ASGI)์— ๋Œ€ํ•œ ์ฃผ์š” ๋ช…์„ธ๊ฐ€ ์›น์†Œ์ผ“์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด Django์—์„œ ๊ฐœ๋ฐœ ๋˜์—ˆ์Œ์—๋„ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋น„๋™๊ธฐ์„ฑ์€ (NodeJS๋Š” ๋ณ‘๋ ฌ์ ์ด์ง€ ์•Š์Œ์—๋„) NodeJS๊ฐ€ ์‚ฌ๋ž‘๋ฐ›๋Š” ์ด์œ ์ด๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์„œ์˜ Go์˜ ๊ฐ•์ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  FastAPI๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋™์ผํ•œ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ณ‘๋ ฌ์„ฑ๊ณผ ๋น„๋™๊ธฐ์„ฑ์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€๋ถ€๋ถ„์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋œ NodeJS ํ”„๋ ˆ์ž„์›Œํฌ๋ณด๋‹ค ๋” ๋†’์€ ์„ฑ๋Šฅ์„ ์–ป๊ณ  C์— ๋” ๊ฐ€๊นŒ์šด ์ปดํŒŒ์ผ ์–ธ์–ด์ธ Go์™€ ๋™๋“ฑํ•œ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ชจ๋‘ Starlette ๋•๋ถ„์ž…๋‹ˆ๋‹ค).

๋™์‹œ์„ฑ์ด ๋ณ‘๋ ฌ์„ฑ๋ณด๋‹ค ๋” ๋‚˜์€๊ฐ€?

๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ์ด ์ด์•ผ๊ธฐ์˜ ๊ตํ›ˆ์€ ์•„๋‹™๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ, ๊ท ํ˜•์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด, ๋‹ค์Œ์˜ ์งง์€ ์ด์•ผ๊ธฐ๋ฅผ ์ƒ์ƒํ•ด๋ณด์‹ญ์‹œ์˜ค:

๋‹น์‹ ์€ ํฌ๊ณ , ๋”๋Ÿฌ์šด ์ง‘์„ ์ฒญ์†Œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋„ค, ์ด๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค.


์–ด๋””์—๋„ ๋Œ€๊ธฐ ๐Ÿ•™ ๋Š” ์—†๊ณ , ์ง‘์•ˆ ๊ณณ๊ณณ์—์„œ ํ•ด์•ผํ•˜๋Š” ๋งŽ์€ ์ž‘์—…๋“ค๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ˆœ์„œ๊ฐ€ ์žˆ๋“  ์—†๋“  ๋™์ผํ•œ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ๊ฒƒ์ด๊ณ (๋™์‹œ์„ฑ) ๋™์ผํ•œ ์–‘์˜ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ์—์„œ, 8๋ช…์˜ ์ „(ๅ‰)-์ ์›/์š”๋ฆฌ์‚ฌ์ด๋ฉด์„œ-ํ˜„(็พ)-์ฒญ์†Œ๋ถ€ ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿณ ๋ฅผ ๊ณ ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋“ค ๊ฐ์ž(๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ )๊ฐ€ ์ง‘์˜ ํ•œ ๋ถ€๋ถ„์”ฉ ๋งก์•„ ์ฒญ์†Œ๋ฅผ ํ•œ๋‹ค๋ฉด, ๋‹น์‹ ์€ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ , ์กฐ๊ธˆ์˜ ๋„์›€์ด ์žˆ๋‹ค๋ฉด, ํ›จ์”ฌ ๋” ๋นจ๋ฆฌ ๋๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ, (๋‹น์‹ ์„ ํฌํ•จํ•œ) ๊ฐ๊ฐ์˜ ์ฒญ์†Œ๋ถ€๋“ค์€ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋  ๊ฒƒ์ด๊ณ , ๊ฐ์ž์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์ด ๋Œ€๊ธฐ๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ์ž‘์—…์— ์†Œ์š”๋˜๊ณ , ์ปดํ“จํ„ฐ์—์„œ ์ž‘์—…์€ CPU์—์„œ ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ, ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ "CPU์— ๋ฌถ์˜€"๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.


CPU์— ๋ฌถ์ธ ์—ฐ์‚ฐ์— ๊ด€ํ•œ ํ”ํ•œ ์˜ˆ์‹œ๋Š” ๋ณต์žกํ•œ ์ˆ˜ํ•™ ์ฒ˜๋ฆฌ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด:

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

๋™์‹œ์„ฑ + ๋ณ‘๋ ฌ์„ฑ: ์›น + ๋จธ์‹ ๋Ÿฌ๋‹

FastAPI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›น ๊ฐœ๋ฐœ์—์„œ๋Š” ๋งค์šฐ ํ”ํ•œ ๋™์‹œ์„ฑ์˜ ์ด์ ์„ (NodeJS์˜ ์ฃผ๋œ ๋งค๋ ฅ๋งŒํผ) ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋จธ์‹ ๋Ÿฌ๋‹ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์ด CPU์— ๋ฌถ์ธ ์ž‘์—…์„ ์œ„ํ•ด ๋ณ‘๋ ฌ์„ฑ๊ณผ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ(๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋™์ž‘์‹œํ‚ค๋Š” ๊ฒƒ)์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ์ด ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค, ๋จธ์‹ ๋Ÿฌ๋‹๊ณผ ํŠนํžˆ ๋”ฅ๋Ÿฌ๋‹์— ์˜ ์ฃผ๋œ ์–ธ์–ด๋ผ๋Š” ๊ฐ„๋‹จํ•œ ์‚ฌ์‹ค์— ๋”ํ•ด์„œ, ์ด๊ฒƒ์€ FastAPI๋ฅผ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค / ๋จธ์‹ ๋Ÿฌ๋‹ ์›น API์™€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์— (๋‹ค๋ฅธ ๊ฒƒ๋“ค๋ณด๋‹ค) ์ข‹์€ ์„ ํƒ์ง€๊ฐ€ ๋˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ์‹œ ๋ณ‘๋ ฌ์„ ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š”์ง€ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด, ๋ฐฐํฌ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

async์™€ await

์ตœ์‹  ํŒŒ์ด์ฌ ๋ฒ„์ „์—๋Š” ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋งค์šฐ ์ง๊ด€์ ์ธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด๊ฒƒ์„ ํ‰๋ฒ”ํ•œ "์ˆœ์ฐจ์ " ์ฝ”๋“œ๋กœ ๋ณด์ด๊ฒŒ ํ•˜๊ณ , ์ ์ ˆํ•œ ์ˆœ๊ฐ„์— ๋‹น์‹ ์„ ์œ„ํ•ด "๋Œ€๊ธฐ"ํ•ฉ๋‹ˆ๋‹ค.

์—ฐ์‚ฐ์ด ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์ „์— ๋Œ€๊ธฐ๋ฅผ ํ•ด์•ผํ•˜๊ณ  ์ƒˆ๋กœ์šด ํŒŒ์ด์ฌ ๊ธฐ๋Šฅ๋“ค์„ ์ง€์›ํ•œ๋‹ค๋ฉด, ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

burgers = await get_burgers(2)

์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ await์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŒŒ์ด์ฌ์—๊ฒŒ burgers ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์ด์ „์— get_burgers(2)์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๐Ÿ•™ ๊ธฐ๋‹ค๋ฆฌ๋ผ๊ณ  โธ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด, ํŒŒ์ด์ฌ์€ ๊ทธ๋™์•ˆ (๋‹ค๋ฅธ ์š”์ฒญ์„ ๋ฐ›๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€) ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๐Ÿ”€ โฏ ์•Œ๊ฒŒ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

await๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด, ์ด๊ฒƒ์€ ๋น„๋™๊ธฐ๋ฅผ ์ง€์›ํ•˜๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ ํ•จ์ˆ˜๋ฅผ async def๋ฅผ ์‚ฌ์šฉํ•ด ์ •์˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:

async def get_burgers(number: int):
    # Do some asynchronous stuff to create the burgers
    return burgers

...def๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹ :

# This is not asynchronous
def get_sequential_burgers(number: int):
    # Do some sequential stuff to create the burgers
    return burgers

async def๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํŒŒ์ด์ฌ์€ ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด์—์„œ await ํ‘œํ˜„์— ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ, ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์‹คํ–‰์„ "์ผ์‹œ์ •์ง€"โธํ•˜๊ณ  ๋‹ค์‹œ ๋Œ์•„์˜ค๊ธฐ ์ „๊นŒ์ง€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰๐Ÿ”€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

async deff ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ ์ž ํ•  ๋•Œ, "๋Œ€๊ธฐ"ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์•„๋ž˜๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

# This won't work, because get_burgers was defined with: async def
burgers = get_burgers(2)

๋”ฐ๋ผ์„œ, awaitf๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด async def๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

@app.get('/burgers')
async def read_burgers():
    burgers = await get_burgers(2)
    return burgers

๋” ์„ธ๋ถ€์ ์ธ ๊ธฐ์ˆ ์  ์‚ฌํ•ญ

await๊ฐ€ async def๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ˆˆ์น˜์ฑ„์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋™์‹œ์—, async def๋กœ ์ •์˜๋œ ํ•จ์ˆ˜๋“ค์€ "๋Œ€๊ธฐ"๋˜์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, async def๋ฅผ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜๋“ค์€ ์—ญ์‹œ async def๋ฅผ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ญ์ด ๋จผ์ €๋ƒ, ๋‹ฌ๊ฑ€์ด ๋จผ์ €๋ƒ, ์ฒซ async ํ•จ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๊นŒ?

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

ํ•˜์ง€๋งŒ FastAPI๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  async / await๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ด ์—ญ์‹œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ๋งŒ์˜ ๋น„๋™๊ธฐ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ

Starlette(๊ทธ๋ฆฌ๊ณ  FastAPI)๋Š” AnyIO๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ ์žˆ๊ณ , ๋”ฐ๋ผ์„œ ํŒŒ์ด์ฌ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ asyncio ๋ฐ Trio์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ, ์ฝ”๋“œ์—์„œ ๊ณ ๊ธ‰ ํŒจํ„ด์ด ํ•„์š”ํ•œ ๊ณ ๊ธ‰ ๋™์‹œ์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ง์ ‘์ ์œผ๋กœ AnyIO๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

FastAPI๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„, ๋†’์€ ํ˜ธํ™˜์„ฑ ๋ฐ AnyIO์˜ ์ด์ (์˜ˆ: ๊ตฌ์กฐํ™”๋œ ๋™์‹œ์„ฑ)์„ ์ทจํ•˜๊ธฐ ์œ„ํ•ด AnyIO๋ฅผ ์‚ฌ์šฉํ•ด ๋น„๋™๊ธฐ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ ์ฝ”๋“œ์˜ ๋‹ค๋ฅธ ํ˜•ํƒœ

ํŒŒ์ด์ฌ์—์„œ async์™€ await๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๊ฒƒ์€ ๋น„๊ต์  ์ตœ๊ทผ์˜ ์ผ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋กœ ์ธํ•ด ๋น„๋™๊ธฐ ์ฝ”๋“œ ์ž‘์—…์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ (๋˜๋Š” ๊ฑฐ์˜ ์œ ์‚ฌํ•œ) ๋ฌธ๋ฒ•์€ ์ตœ์‹  ๋ฒ„์ „์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(๋ธŒ๋ผ์šฐ์ €์™€ NodeJS)์—๋„ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ์ด์ „์—, ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๊ฝค ๋ณต์žกํ•˜๊ณ  ์–ด๋ ค์šด ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ์˜ ์˜ˆ์ „ ๋ฒ„์ „์ด๋ผ๋ฉด, ์Šค๋ ˆ๋“œ ๋˜๋Š” Gevent๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋””๋ฒ„๊น…ํ•˜๊ณ , ์ด์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ „ ๋ฒ„์ „์˜ NodeJS / ๋ธŒ๋ผ์šฐ์ € ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ผ๋ฉด, "์ฝœ๋ฐฑ ํ•จ์ˆ˜"๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋กœ ์ธํ•ด ์ฝœ๋ฐฑ ์ง€์˜ฅ์— ๋น ์ง€๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋ฃจํ‹ด

์ฝ”๋ฃจํ‹ด์€ async def ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์นญํ•˜๋Š” ๋งค์šฐ ๊ณ ๊ธ‰์Šค๋Ÿฌ์šด ์šฉ์–ด์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ์€ ๊ทธ๊ฒƒ์ด ์‹œ์ž‘๋˜๊ณ  ์–ด๋Š ์‹œ์ ์—์„œ ์™„๋ฃŒ๋˜์ง€๋งŒ ๋‚ด๋ถ€์— await๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค ๋‚ด๋ถ€์ ์œผ๋กœ ์ผ์‹œ์ •์ง€โธ๋  ์ˆ˜๋„ ์žˆ๋Š” ํ•จ์ˆ˜์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ async ๋ฐ await์™€ ํ•จ๊ป˜ ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด ๋ชจ๋“  ๊ธฐ๋Šฅ๋“ค์€ "์ฝ”๋ฃจํ‹ด"์œผ๋กœ ๊ฐ„๋‹จํžˆ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Go์˜ ์ฃผ๋œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ "๊ณ ๋ฃจํ‹ด"์— ๊ฒฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์ƒ๊ธฐ ๋ฌธ์žฅ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ด…์‹œ๋‹ค:

์ตœ์‹  ํŒŒ์ด์ฌ ๋ฒ„์ „์€ async ๋ฐ await ๋ฌธ๋ฒ•๊ณผ ํ•จ๊ป˜ โ€œ์ฝ”๋ฃจํ‹ดโ€์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” โ€œ๋น„๋™๊ธฐ ์ฝ”๋“œโ€๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ด ๋ง์„ ์กฐ๊ธˆ ๋” ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. โœจ

์ด๊ฒƒ์ด (Starlette์„ ํ†ตํ•ด) FastAPI๋ฅผ ๊ฐ•ํ•˜๊ฒŒ ํ•˜๋ฉด์„œ ๊ทธ๊ฒƒ์ด ์ธ์ƒ์ ์ธ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๋งค์šฐ ์„ธ๋ถ€์ ์ธ ๊ธฐ์ˆ ์  ์‚ฌํ•ญ

๊ฒฝ๊ณ 

์ด ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€๋„ ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ๋“ค์€ FastAPI๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋งค์šฐ ์„ธ๋ถ€์ ์ธ ๊ธฐ์ˆ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๊ธฐ์ˆ ์  ์ง€์‹(์ฝ”๋ฃจํ‹ด, ์Šค๋ ˆ๋“œ, ๋ธ”๋กํ‚น ๋“ฑ)์ด ์žˆ๊ณ  FastAPI๊ฐ€ ์–ด๋–ป๊ฒŒ async def vs def๋ฅผ ๋‹ค๋ฃจ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด, ๊ณ„์†ํ•˜์‹ญ์‹œ์˜ค.

๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜

๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜๋ฅผ async def ๋Œ€์‹  ์ผ๋ฐ˜์ ์ธ def๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ, (์„œ๋ฒ„๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ) ๊ทธ๊ฒƒ์„ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹  ๋Œ€๊ธฐ์ค‘์ธ ์™ธ๋ถ€ ์Šค๋ ˆ๋“œํ’€์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ƒ๊ธฐ์— ๋ฌ˜์‚ฌ๋œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•ด์™”๊ณ  ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ (์•ฝ 100 ๋‚˜๋…ธ์ดˆ)์„ ์œ„ํ•ด def๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ณ„์‚ฐ๋งŒ์„ ์œ„ํ•œ ์‚ฌ์†Œํ•œ ๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์™”๋‹ค๋ฉด, FastAPI๋Š” ์ด์™€๋Š” ๋ฐ˜๋Œ€๋ผ๋Š” ๊ฒƒ์— ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—, ๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜๊ฐ€ ๋ธ”๋กœํ‚น I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ async def๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘, FastAPI๊ฐ€ ๋‹น์‹ ์ด ์ „์— ์‚ฌ์šฉํ•˜๋˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ณด๋‹ค ๋” ๋น ๋ฅผ (์ตœ์†Œํ•œ ๋น„๊ฒฌ๋ ) ํ™•๋ฅ ์ด ๋†’์Šต๋‹ˆ๋‹ค.

์˜์กด์„ฑ

์˜์กด์„ฑ์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜์กด์„ฑ์ด async def๊ฐ€ ์•„๋‹Œ ํ‘œ์ค€ def ํ•จ์ˆ˜๋ผ๋ฉด, ์™ธ๋ถ€ ์Šค๋ ˆ๋“œํ’€์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

ํ•˜์œ„-์˜์กด์„ฑ

ํ•จ์ˆ˜ ์ •์˜์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์„œ๋กœ๋ฅผ ํ•„์š”๋กœํ•˜๋Š” ๋‹ค์ˆ˜์˜ ์˜์กด์„ฑ๊ณผ ํ•˜์œ„-์˜์กด์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” async def๋กœ, ๋‹ค๋ฅธ ์ผ๋ถ€๋Š” ์ผ๋ฐ˜์ ์ธ def๋กœ ์ƒ์„ฑ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ ์ž˜ ๋™์ž‘ํ•˜๊ณ , ์ผ๋ฐ˜์ ์ธ def๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ๋“ค์€ "๋Œ€๊ธฐ"๋˜๋Š” ๋Œ€์‹ ์— (์Šค๋ ˆ๋“œํ’€๋กœ๋ถ€ํ„ฐ) ์™ธ๋ถ€ ์Šค๋ ˆ๋“œ์—์„œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜

์ง์ ‘ ํ˜ธ์ถœ๋˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜์ ์ธ def๋‚˜ async def๋กœ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๊ณ  FastAPI๋Š” ์ด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ FastAPI๊ฐ€ ๋‹น์‹ ์„ ์œ„ํ•ด ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์™€๋Š” ๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค: ๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜์™€ ์˜์กด์„ฑ

๋งŒ์•ฝ ๋‹น์‹ ์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๊ฐ€ def๋ฅผ ์‚ฌ์šฉํ•œ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜๋ผ๋ฉด, ์Šค๋ ˆ๋“œํ’€์—์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ง์ ‘ ํ˜ธ์ถœ(๋‹น์‹ ์ด ์ฝ”๋“œ์— ์ž‘์„ฑํ•œ ๋Œ€๋กœ)๋  ๊ฒƒ์ด๊ณ , async def๋กœ ์ƒ์„ฑ๋œ ํ•จ์ˆ˜๋ผ๋ฉด ์ฝ”๋“œ์—์„œ ํ˜ธ์ถœํ•  ๋•Œ ๊ทธ ํ•จ์ˆ˜๋ฅผ await ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด๊ฒƒ์€ ๋‹น์‹ ์ด ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ฐพ๊ณ ์žˆ๋˜ ๊ฒฝ์šฐ์— ํ•œํ•ด ์œ ์šฉํ•  ๋งค์šฐ ์„ธ๋ถ€์ ์ธ ๊ธฐ์ˆ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์ƒ๊ธฐ์˜ ๊ฐ€์ด๋“œ๋ผ์ธ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค: ๋ฐ”์˜์‹  ๊ฒฝ์šฐ.