ASGI CGI WSGI 비교 분석
이 기술들은 웹 서버와 애플리케이션 간의 통신 방식을 정의하는 인터페이스 규격.
시대 순으로 발전 과정을 이해하면 좋을 것 같다.
ASGI CGI WSGI 비교
특징 | CGI | WSGI | ASGI |
---|---|---|---|
등장 시기 | 1990년대 초반 | 2003년 (PEP 333) | 2016년 |
처리 방식 | 프로세스 기반 | 동기식 | 비동기식 |
성능 | 매 요청마다 새 프로세스 생성 (낮음) | 프로세스 재사용 (중간) | 비동기 처리로 높은 성능 |
프로토콜 지원 | HTTP/1.0 | HTTP/1.1 | HTTP/1.1, HTTP/2, WebSocket |
구현 복잡도 | 단순함 | 중간 | 상대적으로 복잡함 |
메모리 사용 | 높음 (프로세스당) | 중간 | 효율적 |
동시성 처리 | 프로세스 기반 | 스레드/프로세스 기반 | 이벤트 루프 기반 |
주요 사용 사례 | 레거시 시스템 | 전통적인 웹 애플리케이션 | 현대적 웹 애플리케이션 |
환경 변수 처리 | 시스템 환경 변수 | environ 딕셔너리 | scope 딕셔너리 |
스트리밍 지원 | 제한적 | 이터레이터 기반 | 네이티브 지원 |
프레임워크 예시 | 직접 구현 | Django, Flask | FastAPI, Starlette |
서버 예시 | Apache | gunicorn, uWSGI | uvicorn, daphne |
오류 처리 | 제한적 | 표준화된 방식 | 포괄적 지원 |
설정 복잡도 | 간단 | 중간 | 상대적으로 복잡 |
확장성 | 제한적 | 중간 | 높음 |
각 기술의 기본적인 구현 예제
CGI (Common Gateway Interface):
WSGI (Web Server Gateway Interface):
|
|
ASGI (Asynchronous Server Gateway Interface):
|
|
각 기술의 주요 사용 시나리오
파일 업로드 처리
CGI:
|
|
WSGI:
|
|
ASGI:
|
|