]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
๐ŸŒ Update Korean translation for `docs/ko/docs/advanced/events.md` (#13487)
authorJunbeom Lee <g4012s@gmail.com>
Fri, 30 May 2025 13:33:53 +0000 (09:33 -0400)
committerGitHub <noreply@github.com>
Fri, 30 May 2025 13:33:53 +0000 (15:33 +0200)
docs/ko/docs/advanced/events.md

index ae349e7bec94868e4ede02f109752fa064273f86..5f8fe0f1e3832325bd57f95828fd38e1eb89cde2 100644 (file)
-# ์ด๋ฒคํŠธ: startup๊ณผ shutdown
+# Lifespan ์ด๋ฒคํŠธ
 
-ํ•„์š”์— ๋”ฐ๋ผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์ด๋‚˜ ์ข…๋ฃŒ๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ(ํ•จ์ˆ˜)๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ **์‹œ์ž‘ ์ „**์— ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ๋กœ์ง(์ฝ”๋“œ)์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด ์ฝ”๋“œ๊ฐ€ **ํ•œ ๋ฒˆ**๋งŒ ์‹คํ–‰๋˜๋ฉฐ, **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์š”์ฒญ์„ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ ์ „**์— ์‹คํ–‰๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
 
-์ด ํ•จ์ˆ˜๋“ค์€ `async def` ๋˜๋Š” ํ‰๋ฒ”ํ•˜๊ฒŒ `def`์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด **์ข…๋ฃŒ๋  ๋•Œ** ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ๋กœ์ง(์ฝ”๋“œ)์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ์ด ์ฝ”๋“œ๋Š” **ํ•œ ๋ฒˆ**๋งŒ ์‹คํ–‰๋˜๋ฉฐ, **์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ ํ›„**์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
+
+์ด ์ฝ”๋“œ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด **์š”์ฒญ์„ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—** ์‹คํ–‰๋˜๊ณ , ์š”์ฒญ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚œ ํ›„ **์ข…๋ฃŒ ์ง์ „์—** ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ **์ˆ˜๋ช…(Lifespan)**์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. (์ž ์‹œ ํ›„ "์ˆ˜๋ช…"์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์ค‘์š”ํ•ด์ง‘๋‹ˆ๋‹ค ๐Ÿ˜‰)
+
+์ด ๋ฐฉ๋ฒ•์€ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” **์ž์›**์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์š”์ฒญ ๊ฐ„์— **๊ณต์œ ๋˜๋Š”** ์ž์›์„ ์„ค์ •ํ•˜๊ณ , ๋˜๋Š” ๊ทธ ํ›„์— **์ •๋ฆฌ**ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ํ’€ ๋˜๋Š” ๊ณต์œ ๋˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
+
+
+## ์‚ฌ์šฉ ์‚ฌ๋ก€
+
+๋จผ์ € **์‚ฌ์šฉ ์‚ฌ๋ก€**๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณด๊ณ , ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+์šฐ๋ฆฌ๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ **๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ**์ด ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ด…์‹œ๋‹ค. ๐Ÿค–
+
+์ด ๋ชจ๋ธ๋“ค์€ ์š”์ฒญ ๊ฐ„์— ๊ณต์œ ๋˜๋ฏ€๋กœ, ์š”์ฒญ๋งˆ๋‹ค ๋ชจ๋ธ์ด ํ•˜๋‚˜์”ฉ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์—ฌ๋Ÿฌ ์š”์ฒญ์—์„œ ๋™์ผํ•œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+๋ชจ๋ธ์„ ๋กœ๋“œํ•˜๋Š” ๋ฐ **์ƒ๋‹นํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ด…์‹œ๋‹ค**, ์™œ๋ƒํ•˜๋ฉด ๋ชจ๋ธ์ด **๋””์Šคํฌ์—์„œ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์•ผ** ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด ๋ชจ๋ธ์„ ๋งค๋ฒˆ ๋กœ๋“œํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+
+๋ชจ๋“ˆ/ํŒŒ์ผ์˜ ์ตœ์ƒ์œ„์—์„œ ๋ชจ๋ธ์„ ๋กœ๋“œํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ทธ๋Ÿฌ๋ฉด **๋ชจ๋ธ์„ ๋กœ๋“œํ•˜๋Š”๋ฐ** ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹จ์ˆœํ•œ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋„ ๋ชจ๋ธ์ด ๋กœ๋“œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ด์„œ **ํ…Œ์ŠคํŠธ ์†๋„๊ฐ€ ๋А๋ ค์ง‘๋‹ˆ๋‹ค**.
+
+์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜๋˜, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์š”์ฒญ์„ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ ์ง์ „์—๋งŒ ๋กœ๋“œํ•˜๊ณ , ์ฝ”๋“œ๊ฐ€ ๋กœ๋“œ๋˜๋Š” ๋™์•ˆ์€ ๋กœ๋“œํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+## Lifespan
+
+`FastAPI` ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ `lifespan` ๋งค๊ฐœ๋ณ€์ˆ˜์™€ "์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ *์‹œ์ž‘*๊ณผ *์ข…๋ฃŒ* ๋กœ์ง์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ž ์‹œ ํ›„์— ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.)
+
+์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‹œ์ž‘ํ•˜๊ณ , ๊ทธ ํ›„์— ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+์šฐ๋ฆฌ๋Š” `yield`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ํ•จ์ˆ˜ `lifespan()`์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:
+
+{* ../../docs_src/events/tutorial003.py hl[16,19] *}
+
+์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜๋Š” ๋น„์‹ผ *์‹œ์ž‘* ์ž‘์—…์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. `yield` ์•ž์—์„œ (๊ฐ€์งœ) ๋ชจ๋ธ ํ•จ์ˆ˜๋ฅผ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด ๋‹ด๊ธด ๋”•์…”๋„ˆ๋ฆฌ์— ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์š”์ฒญ์„ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ ์ „**, *์‹œ์ž‘* ๋™์•ˆ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
+
+๊ทธ๋ฆฌ๊ณ  `yield` ์งํ›„์—๋Š” ๋ชจ๋ธ์„ ์–ธ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์š”์ฒญ ์ฒ˜๋ฆฌ ์™„๋ฃŒ ํ›„**, *์ข…๋ฃŒ* ์ง์ „์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉ”๋ชจ๋ฆฌ๋‚˜ GPU์™€ ๊ฐ™์€ ์ž์›์„ ํ•ด์ œํ•˜๋Š” ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+/// tip | ํŒ
+
+`shutdown`์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ **์ข…๋ฃŒ**ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
+
+์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜, ๊ทธ๋ƒฅ ์‹คํ–‰์„ ๋ฉˆ์ถ”๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿคท
+
+///
+
+### Lifespan ํ•จ์ˆ˜
+
+๋จผ์ € ์ฃผ๋ชฉํ•  ์ ์€, `yield`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ํ•จ์ˆ˜(async function)๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” `yield`๋ฅผ ์‚ฌ์šฉํ•œ ์˜์กด์„ฑ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
+
+{* ../../docs_src/events/tutorial003.py hl[14:19] *}
+
+ํ•จ์ˆ˜์˜ ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„, ์ฆ‰ `yield` ์ด์ „์˜ ์ฝ”๋“œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๊ธฐ **์ „์—** ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
+
+๊ทธ๋ฆฌ๊ณ  `yield` ์ดํ›„์˜ ๋ถ€๋ถ„์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์™„๋ฃŒ๋œ ํ›„ **๋‚˜์ค‘์—** ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
+
+### ๋น„๋™๊ธฐ ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €
+
+ํ•จ์ˆ˜๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด, `@asynccontextmanager`๋กœ ์žฅ์‹๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด๊ฒƒ์€ ํ•จ์ˆ˜๋ฅผ "**๋น„๋™๊ธฐ ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €**"๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€ํ™˜์‹œํ‚ต๋‹ˆ๋‹ค.
+
+{* ../../docs_src/events/tutorial003.py hl[1,13] *}
+
+ํŒŒ์ด์ฌ์—์„œ **์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €**๋Š” `with` ๋ฌธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, `open()`์€ ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+```Python
+with open("file.txt") as file:
+    file.read()
+```
+์ตœ๊ทผ ๋ฒ„์ „์˜ ํŒŒ์ด์ฌ์—์„œ๋Š” **๋น„๋™๊ธฐ ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €**๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ `async with`์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:
+
+```Python
+async with lifespan(app):
+    await do_stuff()
+```
+
+์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €๋‚˜ ์œ„์™€ ๊ฐ™์€ ๋น„๋™๊ธฐ ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €๋ฅผ ๋งŒ๋“ค๋ฉด, `with` ๋ธ”๋ก์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— `yield` ์ด์ „์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ , `with` ๋ธ”๋ก์„ ๋ฒ—์–ด๋‚œ ํ›„์—๋Š” `yield` ์ดํ›„์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
+
+์œ„์˜ ์ฝ”๋“œ ์˜ˆ์ œ์—์„œ๋Š” ์ง์ ‘ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , FastAPI์— ์ „๋‹ฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
+
+`FastAPI` ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ `lifespan` ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” **๋น„๋™๊ธฐ ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €**๋ฅผ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ๋กœ์šด `lifespan` ๋น„๋™๊ธฐ ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ €๋ฅผ FastAPI์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{* ../../docs_src/events/tutorial003.py hl[22] *}
+
+## ๋Œ€์ฒด ์ด๋ฒคํŠธ (์‚ฌ์šฉ ์ค‘๋‹จ)
 
 /// warning | ๊ฒฝ๊ณ 
 
-์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” ์ฃผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. [ํ•˜์œ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ - ๋งˆ์šดํŠธ](./sub-applications.md){.internal-link target=_blank}์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+*์‹œ์ž‘*๊ณผ *์ข…๋ฃŒ*๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ถŒ์žฅ ๋ฐฉ๋ฒ•์€ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ `FastAPI` ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ `lifespan` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. `lifespan` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๋ฉด `startup`๊ณผ `shutdown` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” ๋” ์ด์ƒ ํ˜ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. `lifespan`์„ ์‚ฌ์šฉํ• ์ง€, ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ์„ ํƒํ•ด์•ผ ํ•˜๋ฉฐ ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
+
+์ด ๋ถ€๋ถ„์€ ๊ฑด๋„ˆ๋›ฐ์…”๋„ ์ข‹์Šต๋‹ˆ๋‹ค.
 
 ///
 
-## `startup` ์ด๋ฒคํŠธ
+*์‹œ์ž‘*๊ณผ *์ข…๋ฃŒ* ๋™์•ˆ ์‹คํ–‰๋  ์ด ๋กœ์ง์„ ์ •์˜ํ•˜๋Š” ๋Œ€์ฒด ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— ๋˜๋Š” ์ข…๋ฃŒ๋  ๋•Œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ(ํ•จ์ˆ˜)๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
-์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์‹คํ–‰ํ•˜๋ ค๋Š” ํ•จ์ˆ˜๋ฅผ "startup" ์ด๋ฒคํŠธ๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค:
+์ด ํ•จ์ˆ˜๋“ค์€ `async def` ๋˜๋Š” ์ผ๋ฐ˜ `def`๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+### `startup` ์ด๋ฒคํŠธ
+
+์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด, `"startup"` ์ด๋ฒคํŠธ๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค:
 
 {* ../../docs_src/events/tutorial001.py hl[8] *}
 
-์ด ๊ฒฝ์šฐ `startup` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋Š” ๋‹จ์ˆœํžˆ ๋ช‡ ๊ฐ€์ง€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ `dict` ํ˜•์‹์˜ "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค"๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
+์ด ๊ฒฝ์šฐ, `startup` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋Š” "database"๋ผ๋Š” ํ•ญ๋ชฉ(๋‹จ์ง€ `dict`)์„ ์ผ๋ถ€ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
 
-ํ•˜๋‚˜ ์ด์ƒ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
+์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
-๊ทธ๋ฆฌ๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ชจ๋“  `startup` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์š”์ฒญ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ชจ๋“  `startup` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์š”์ฒญ์„ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
 
-## `shutdown` ์ด๋ฒคํŠธ
+### `shutdown` ์ด๋ฒคํŠธ
 
-รฌ\9d\91รฌ\9aยฉ รญ\94\84รซยก\9cรชยทยธรซ\9eยจรฌ\9dยด รฌยข\85รซยฃ\8cรซ\90ย  รซ\95\8c รฌ\8bยครญ\96\89รญ\95\98รซย ยครซ\8a\94 รญ\95ยจรฌ\88\98รซยฅยผ รฌยถ\94รชยฐ\80รญ\95\98รซย ยครซยฉยด `"shutdown"` ์ด๋ฒคํŠธ๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค:
+รฌ\95ย รญ\94\8cรซยฆยฌรฌยผ\80รฌ\9dยดรฌ\85\98รฌ\9dยด รฌยข\85รซยฃ\8cรซ\90ย  รซ\95\8c รฌ\8bยครญ\96\89รซ\90\98รฌ\96ยดรฌ\95ยผ รญ\95\98รซ\8a\94 รญ\95ยจรฌ\88\98รซยฅยผ รฌยถ\94รชยฐ\80รญ\95\98รซย ยครซยฉยด, `"shutdown"` ์ด๋ฒคํŠธ๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค:
 
 {* ../../docs_src/events/tutorial002.py hl[6] *}
 
-รฌ\9dยด รฌ\98\88รฌย \9cรฌ\97\90รฌ\84\9c `shutdown` รฌ\9dยดรซยฒยครญ\8aยธ รญ\95ยธรซ\93ยครซ\9fยฌ รญ\95ยจรฌ\88\98รซ\8a\94 `"Application shutdown"`รฌ\9dยดรซ\9dยผรซ\8a\94 รญ\85\8dรฌ\8aยครญ\8aยธรชยฐ\80 รฌย \81รญ\9e\8c `log.txt` รญ\8c\8cรฌ\9dยผรฌ\9d\84 รฌยถ\94รชยฐ\80รญ\95ย  รชยฒ\83รฌ\9e\85๋‹ˆ๋‹ค.
+รฌ\97ยฌรชยธยฐรฌ\84\9c, `shutdown` รฌ\9dยดรซยฒยครญ\8aยธ รญ\95ยธรซ\93ยครซ\9fยฌ รญ\95ยจรฌ\88\98รซ\8a\94 `"Application shutdown"`รฌ\9dยดรซ\9dยผรซ\8a\94 รญ\85\8dรฌ\8aยครญ\8aยธรซยฅยผ `log.txt` รญ\8c\8cรฌ\9dยผรฌ\97\90 รชยธยฐรซยก\9dรญ\95ยฉ๋‹ˆ๋‹ค.
 
 /// info | ์ •๋ณด
 
-`open()` รญ\95ยจรฌ\88\98รฌ\97\90รฌ\84\9c `mode="a"`รซ\8a\94 "รฌยถ\94รชยฐ\80"รซยฅยผ รฌ\9d\98รซยฏยธรญ\95ยฉรซ\8b\88รซ\8bยค. รซ\94ยฐรซ\9dยผรฌ\84\9c รฌ\9dยดรซยฏยธ รฌยกยดรฌ\9eยฌรญ\95\98รซ\8a\94 รญ\8c\8cรฌ\9dยผรฌ\9d\98 รซ\82ยดรฌ\9aยฉรฌ\9d\84 รซ\8dยฎรฌ\96ยดรฌ\93ยฐรฌยง\80 รฌ\95\8aรชยณย  รฌ\83\88รซยก\9cรฌ\9aยด รฌยค\84รฌ\9d\84 รฌยถ\94รชยฐ\80รญ\95ยฉรซ\8b\88รซ\8bยค.
+`open()` รญ\95ยจรฌ\88\98รฌ\97\90รฌ\84\9c `mode="a"`รซ\8a\94 "รฌยถ\94รชยฐ\80"รซยฅยผ รฌ\9d\98รซยฏยธรญ\95\98รซยฏ\80รซยก\9c, รญ\8c\8cรฌ\9dยผรฌ\97\90 รฌ\9e\88รซ\8a\94 รชยธยฐรฌยกยด รซ\82ยดรฌ\9aยฉรฌ\9d\80 รซ\8dยฎรฌ\96ยดรฌ\93ยฐรฌยง\80 รฌ\95\8aรชยณย  รฌ\83\88รซยก\9cรฌ\9aยด รฌยค\84รฌ\9dยด รฌยถ\94รชยฐ\80รซ\90ยฉรซ\8b\88รซ\8bยค.
 
 ///
 
 /// tip | ํŒ
 
-์ด ์˜ˆ์ œ์—์„œ๋Š” ํŒŒ์ผ๊ณผ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ด์ฌ ํ‘œ์ค€ ํ•จ์ˆ˜์ธ `open()`์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
+์ด ๊ฒฝ์šฐ, ์šฐ๋ฆฌ๋Š” ํ‘œ์ค€ ํŒŒ์ด์ฌ `open()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
 
-๋”ฐ๋ผ์„œ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•ด "๋Œ€๊ธฐ"๊ฐ€ ํ•„์š”ํ•œ I/O (์ž…๋ ฅ/์ถœ๋ ฅ) ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+๋”ฐ๋ผ์„œ I/O(์ž…์ถœ๋ ฅ) ์ž‘์—…์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด ๋””์Šคํฌ์— ๊ธฐ๋ก๋˜๋Š” ๊ฒƒ์„ "๊ธฐ๋‹ค๋ฆฌ๋Š”" ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
 
-๊ทธ๋Ÿฌ๋‚˜ `open()`์€ `async`์™€ `await`์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋Š” `async def`๊ฐ€ ์•„๋‹Œ ํ‘œ์ค€ `def`๋กœ ์„ ์–ธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
+ํ•˜์ง€๋งŒ `open()`์€ `async`์™€ `await`๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+
+๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ `async def` ๋Œ€์‹  ์ผ๋ฐ˜ `def`๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
 
 ///
 
+### `startup`๊ณผ `shutdown`์„ ํ•จ๊ป˜ ์‚ฌ์šฉ
+
+*์‹œ์ž‘*๊ณผ *์ข…๋ฃŒ* ๋กœ์ง์ด ์—ฐ๊ฒฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹œ์ž‘ํ•œ ํ›„ ๋๋‚ด๊ฑฐ๋‚˜, ์ž์›์„ ํš๋“ํ•œ ํ›„ ํ•ด์ œํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด๋Ÿฌํ•œ ์ž‘์—…์„ ๋ณ„๋„์˜ ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ์„œ๋กœ ๋กœ์ง์ด๋‚˜ ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค. ๊ฐ’๋“ค์„ ์ „์—ญ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋น„์Šทํ•œ ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ `lifespan`์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.
+
+## ๊ธฐ์ˆ ์  ์„ธ๋ถ€์‚ฌํ•ญ
+
+ํ˜ธ๊ธฐ์‹ฌ ๋งŽ์€ ๋ถ„๋“ค์„ ์œ„ํ•œ ๊ธฐ์ˆ ์ ์ธ ์„ธ๋ถ€์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๐Ÿค“
+
+ASGI ๊ธฐ์ˆ  ์‚ฌ์–‘์— ๋”ฐ๋ฅด๋ฉด, ์ด๋Š” <a href="https://asgi.readthedocs.io/en/latest/specs/lifespan.html" class="external-link" target="_blank">Lifespan Protocol</a>์˜ ์ผ๋ถ€์ด๋ฉฐ, `startup`๊ณผ `shutdown`์ด๋ผ๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
+
 /// info | ์ •๋ณด
 
-์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ๊ด€ํ•œ ๋‚ด์šฉ์€ <a href="https://www.starlette.io/events/" class="external-link" target="_blank">Starlette ์ด๋ฒคํŠธ ๋ฌธ์„œ</a>์—์„œ ์ถ”๊ฐ€๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+Starlette์˜ `lifespan` ํ•ธ๋“ค๋Ÿฌ์— ๋Œ€ํ•ด ๋” ์ฝ๊ณ  ์‹ถ๋‹ค๋ฉด <a href="https://www.starlette.io/lifespan/" class="external-link" target="_blank">Starlette์˜ Lifespan ๋ฌธ์„œ</a>์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด ๋ฌธ์„œ์—๋Š” ์ฝ”๋“œ์˜ ๋‹ค๋ฅธ ์˜์—ญ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” lifespan ์ƒํƒœ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
 
 ///
+
+## ์„œ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
+
+๐Ÿšจ ์ด lifespan ์ด๋ฒคํŠธ(`startup`๊ณผ `shutdown`)๋Š” ๋ฉ”์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด์„œ๋งŒ ์‹คํ–‰๋˜๋ฉฐ, [์„œ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ - Mounts](sub-applications.md){.internal-link target=_blank}์—๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Œ์„ ์œ ์˜ํ•˜์„ธ์š”.