π django μ€μκ° μ±ν νλ‘κ·Έλ¨μ λ§λ€κΈ° μν΄μ 곡λΆν΄ 보μλ€.
- django λ
Djangoλ MTV ν¨ν΄μ μ 곡νμ¬ API λΏ μλλΌ ν νλ¦Ώμ μ΄μ©νμ html νμΌμ μμ±ν΄ λ·°λ₯Ό λ§λ€ μ μλλ‘ μ 곡νμ¬ λΉ λ₯Έ μμ°μ±μ μλνλ€.spring κ³μ΄μμλ μΉ μλΉμ€λ₯Ό Tomcat λ±μ WAS λ‘ λ°°ν¬λ₯Ό νλλ° python μλ μ‘΄μ¬νμ§ μλλ€ μλλ λ€λ₯Έ λ°°ν¬ λ°©λ²μ΄λ€.
- CGI & FastCGI
CGIλ μ μ λ°μ΄ν° μ²λ¦¬λ§ κ°λ₯ν web μλ²λ₯Ό λμ μΌλ‘ μ²λ¦¬νκΈ° μν΄ μ¬μ©μ μμ²μ λ°λΌ μ€ν κ°λ₯ν μΈλΆ νλ‘κ·Έλ¨μ νΈμΆνκ³ μ²λ¦¬ κ²°κ³Όλ₯Ό λλ €μ€ μ μλ μΈν°νμ΄μ€μ΄λ€.
CGIλ request μμ²μ΄ μ€λ©΄ νλ‘κ·Έλ¨μ μμνκ³ responseκ° μλ£λλ©΄ νλ‘κ·Έλ¨μ μ’ λ£νμ¬ μ±λ₯μ΄ ν¬κ² μ νλμ§λ§
FastCGIλ Web μλ² λ΄ λμνλ νλ‘κ·Έλ¨μ΄ νΈμΆλμλ€λ©΄ ν΄λΉ νλ‘μΈμ€λ₯Ό μΌμ μκ° λ³΄κ΄νμ¬ μμ² μ μ²λ¦¬ μκ°μ μ€μ¬ μλ΅ μ±λ₯μ ν₯μμν¬ μ μλ€.
- WSGI λ
WSGIλ CGIμ λμΌνκ² μΉ μλ²μ μ ν리μΌμ΄μ μ€κ°μ μμΉνλλ° CGIλ μμ²λ§λ€ νλ‘μΈμ€λ₯Ό μμ±νκ³ , WSGIλ ν νλ‘μΈμ€μμ λͺ¨λ μμ²μ λ°λλ€. CGIλ μμ²λ§λ€ Fork ν¨μλ₯Ό ν΅ν΄ 컀λμμ 리μμ€λ₯Ό μΆκ°νκ³ λ°λ©νμ§λ§ WSGIλ λ§μ μμ²μ μ½λ°± ν¨μλ₯Ό ν΅νμ¬ νλ²μ μ²λ¦¬νκ² λλ€.
ex) gunicorn
- ASGI λ
λ΄κ° νλ €λ djangoμμ μ±ν κΈ°λ₯μ λΉλκΈ° μ²λ¦¬λ₯Ό μ§μνλλ° WSGIλ λΉλκΈ° μ²λ¦¬λ₯Ό μ§μνμ§ μλλ€. κ·Έλμ WSGIλ μ¬λ¬ μμ μ λμμ μ²λ¦¬νλ κ²μ νκ³κ° μλ€.
ASGIλ Cython κΈ°λ°μΌλ‘ λ§λ€μ΄μ Έ λΉ λ₯Έ μλλ₯Ό μ 곡νλ©° μ λ°μ μΌλ‘ WSGIμ λΉμ·νλ λΉλκΈ° μ²λ¦¬λ₯Ό μ§μνλ€λ μ₯μ μ΄ μλ€.
ex) Uvicorn
π Channels λ§λ€κΈ° μν΄μ
- ASGI
- Asynchronous webserver
- Consumer
- Daphne : HTTP request, websocket requestλ₯Ό λ°λ‘ μμ²μ λ°μ urls.py, mysite.routing νμΌμ μλμΌλ‘ 맀νν΄μ£Όλ μΉμλ².
daphne νλμ μΉ μλ²λ‘ λ κ°μ§ λͺ¨λ κ°λ₯νκ²μ΄ μ₯μ - Channel Layer
- javascript - aiohttp
- DB - database_sync_to_async : channels.dbμμ μ§μν΄μ£Όλ db IO λΉλκΈ° μ²λ¦¬
pycon Django channels μλ£
https://www.youtube.com/watch?v=ehpr3YHSQlQ