[Interface] WSGI, ASGI

2023. 6. 2. 15:57

๐Ÿ’ก WSGI (Web Server Gateway Interface) ๐Ÿ’ก

ํŒŒ์ด์ฌ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์›น ์„œ๋ฒ„ ๊ฐ„์˜ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค

์ฃผ๋กœ HTTP ํ”„๋กœํ† ์ฝœ์„ ๋‹ค๋ฃจ๋Š” ๋ฐ ์‚ฌ์šฉ

๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์ด ํ•„์š”

 

WSGI ์„œ๋ฒ„

WSGI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ์›น ์„œ๋ฒ„

WSGI ์„œ๋ฒ„์—๋Š” Gunicorn, uWSGI ๋“ฑ์ด ์žˆ์Œ

 

*  WSGI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค *

- WSGI๋ฅผ ์ค€์ˆ˜ํ•˜๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ–ˆ๋‹ค

 

๋”ฐ๋ผ์„œ WSGI๋ฅผ ์ง€์›ํ•˜๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ทœ์น™๊ณผ ๊ทœ๊ฒฉ์— ๋”ฐ๋ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•˜๊ณ 

์ด๋ฅผ ์›น ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

 


๐Ÿ’ก ASGI (Asynchronous Server Gateway Interface) ๐Ÿ’ก

ํŒŒ์ด์ฌ์˜ ๋น„๋™๊ธฐ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์›น ์„œ๋ฒ„๊ฐ„์˜ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค

WSGI๋ณด๋‹ค ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณต

HTTP ์™ธ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ ์ง€์›

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ(FastAPI, Django ๋“ฑ) โ†” ์›น ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์„ ๋‹ด๋‹น

 

ASGI ์„œ๋ฒ„

ASGI ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(ASGI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋”ฐ๋ฅด๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜=FastAPI, Django ๋“ฑ)์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„

ASGI ์„œ๋ฒ„์—๋Š” Uvicorn์ด ์žˆ์Œ

 


๐Ÿ’ก ์›น ํ”„๋ ˆ์ž„์›Œํฌ ๋น„๊ต ๐Ÿ’ก

Django

์ดˆ๊ธฐ ๋ฒ„์ „์€ WSGI์— ๋งž์ถฐ์ง

3.1 ์ดํ›„ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ASGI๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

Starlette

ASGI ๊ธฐ๋ฐ˜ ๊ฒฝ๋Ÿ‰ ์›น ํ”„๋ ˆ์ž„์›Œํฌ

FastAPI

Starlette ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ (Starlette ๊ธฐ๋Šฅ ํ™•์žฅ)

Flask

 

WSGI ์ง€์›

Python์˜ ๊ธฐ๋ณธ ๋ชจ๋“ˆ์ธ Werkzeung, Jinja2 ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ

Sanic

ASGI ๊ธฐ๋ฐ˜

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ

'WebFramework' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Web] SSR๊ณผ CSR  (0) 2023.07.25