Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- github
- flask
- docker
- 장고
- 파이썬
- 쿠키(cookie)
- django
- NoSQL
- Python
- viewsets
- 자료구조
- 코딩테스트
- 개발공부
- 아티클 스터디
- 티스토리챌린지
- redis
- 오블완
- git
- CS
- Doker
- 연습
- ERD
- Til
- 세션(Session)
- 도커
- SQL
- Wil
- JWT
- web
- nginx
Archives
- Today
- Total
SteadyDrills
WSGI와 ASGI 본문
250128
WSGI (Web Server Gateway Interface)
Python 웹 애플리케이션과 웹 서버 간의 표준 인터페이스로 HTTP 요청을 처리하기 위해 동기적으로 작동를 기반으로 하는 프로토콜이다. Python의 모든 웹 프레임워크가 WSGI를 사용하여 서버와 연결된다.
특징
- 동기식(Synchronous) 처리 방식
- 단순하고 이해하기 쉬운 인터페이스
- 요청당 하나의 함수 호출 패턴
- HTTP/1.1 프로토콜에 최적화
활용 사례
- Django (버전 3.0 이전)
- Flask
- Pyramid
- uWSGI 서버
- Gunicorn
ASGI (Asynchronous Server Gateway Interface)
ASGI는 WSGI의 한계를 극복하기 위해 개발된 차세대 웹 서버 인터페이스 규격입니다. 비동기 처리를 지원하며, 현대적인 웹 프로토콜과 기능을 더 효과적으로 다룰 수 있습니다.
주요 특징
- 비동기식(Asynchronous) 처리 지원
- WebSocket 및 HTTP/2 같은 양방향 프로토콜 지원
- 이벤트 기반 아키텍처
- 확장성이 뛰어난 설계
활용 사례
- Django (버전 3.0 이후)
- FastAPI
- Starlette
- Uvicorn
- Daphne
3. WSGI와 ASGI의 주요 차이점
아키텍처 관점
WSGI는 단순한 요청-응답 사이클을 가진 동기식 아키텍처를 채택하고 있습니다. 반면 ASGI는 비동기 이벤트 루프를 기반으로 하여 더 복잡한 통신 패턴을 지원합니다.
# WSGI 애플리케이션 예시 def wsgi_app(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) return [b'Hello, World!'] # ASGI 애플리케이션 예시 async def asgi_app(scope, receive, send): await send({ 'type': 'http.response.start', 'status': 200, 'headers': [(b'content-type', b'text/plain')], }) await send({ 'type': 'http.response.body', 'body': b'Hello, World!', })
4. 장단점 비교
WSGI의 장점
- 단순하고 이해하기 쉬운 구조
- 안정적이고 성숙한 생태계
- 디버깅이 상대적으로 용이
- 기존 프레임워크와의 높은 호환성
WSGI의 단점
- 비동기 처리 불가능
- WebSocket 등 현대적 프로토콜 지원 제한
- 동시성 처리의 한계
- 실시간 애플리케이션 구현의 제약
ASGI의 장점
- 비동기 처리를 통한 높은 성능
- 현대적인 프로토콜 지원
- 확장성이 뛰어난 설계
- 실시간 애플리케이션 개발 용이
ASGI의 단점
- 상대적으로 복잡한 구현
- 학습 곡선이 높음
- 디버깅이 더 어려울 수 있음
- 생태계가 아직 성숙 단계
5. 활용 시나리오
WSGI 적합 사례
- 전통적인 요청-응답 기반 웹 애플리케이션
- 간단한 REST API 서비스
- 레거시 시스템 통합
- 리소스 요구사항이 낮은 애플리케이션
ASGI 적합 사례
- 실시간 채팅 애플리케이션
- 스트리밍 서비스
- 대규모 동시 연결이 필요한 시스템
- WebSocket 기반 애플리케이션
- 마이크로서비스 아키텍처