TIL(Today I Learned)
6월 26일(일)
공부한 내용을 빠르게 정리한 내용이라서 잘못된 내용이 있을 수 있습니다.
Django
- 파이썬 웹 애플리케이션 프레임워크 (ORM, 관리자 기능 등을 제공)
- Django로 만든 웹앱을 구동하려면 Apache, Nginx 같은 서버를 이용하여야 한다.
사용자 - Nginx 서버 - WSGI(ASGI) - Django
Apache
- 클라이언트마다 프로세스 또는 쓰레드를 만들어서 처리하는 서버 (프로세스 기반 방식)
- 그래서 클라이언트가 1만명이 동시접속을 하면 이를 처리하기 위한 프로세스나 쓰레드를 만들기 위해 많은 양의 컴퓨팅 리소스가 필요하다는 단점이 있음.
- Apache는 다양한 모듈이 있고, 높은 안정성, 확장성, 호환성이라는 장점이 있다고 한다.
Nginx
- Apache의 C10K(사용자 1만명이 넘어가면 생기는 아파치의 문제점)을 해결하기 위해 고안된 Event Driven 방식의 서버.
- 이벤트 핸들러가 요청을 비동기 방식으로 처리.
WSGI vs ASGI
- 장고로 만든 웹앱은 파이썬으로 구현되어 있고, 웹서버는 C 등의 언어로 구현되어 있기 때문에 중간에서 이 둘을 연결해줄 미들웨어가 필요하다. WSGI, ASGI가 그 역할.
- WSGI(Web Server Gateway Interface)
- 동기방식으로 작동.
- ASGI(Asynchronous Server Gateway
Interface)
- 동기방식의 WSGI의 단점을 보완하기 위해 비동기 작업을 가능하게 하기 위해 개발됨.