본문 바로가기

내일배움 캠프/TIL

asgi 서버랑 wsgi서버의 차이점

ASGI(Asynchronous Server Gateway Interface)와 WSGI(Web Server Gateway Interface)는 웹 서버와 웹 애플리케이션 간 통신을 중개하는 인터페이스입니다. ASGI는 WSGI의 발전된 형태로 비동기 웹 애플리케이션을 지원합니다. 이 둘의 주요 차이점은 다음과 같습니다

 

  1. 동기 vs. 비동기:
    WSGI: WSGI는 동기적인 방식으로 요청과 응답을 처리합니다. 한 번에 하나의 요청만 처리하며, 요청이 끝나기 전까지 다른 요청은 처리되지 않습니다.
    ASGI: ASGI는 비동기적인 방식으로 요청과 응답을 처리합니다. 여러 개의 요청을 동시에 처리할 수 있으며, 비동기 I/O를 사용하여 효율적인 처리를 가능하게 합니다.

  2. 확장성:
    WSGI: WSGI는 동기적인 특성으로 인해 대규모 애플리케이션에서 확장성이 제한될 수 있습니다. 각 요청은 별도의 스레드 또는 프로세스를 필요로 하므로, 많은 동시 요청이 발생할 경우 성능 저하가 발생할 수 있습니다.
    ASGI: ASGI는 비동기적인 특성으로 인해 많은 동시 요청을 처리하는 데 효율적입니다. 비동기 I/O와 이벤트 루프를 활용하여 효율적인 리소스 관리가 가능하며, 대규모 애플리케이션에서도 높은 확장성을 제공합니다.

  3. 프로토콜:
    WSGI: WSGI는 HTTP 프로토콜에 특화되어 있습니다. WSGI 애플리케이션은 웹 서버로부터 HTTP 요청을 받고, HTTP 응답을 생성하여 반환합니다.
    ASGI: ASGI는 다양한 프로토콜을 지원합니다. HTTP 뿐만 아니라 WebSocket, HTTP/2 등 다양한 프로토콜을 처리할 수 있습니다.
    ASGI는 WSGI에 비해 비동기 처리와 다양한 프로토콜 지원 등의 장점을 갖고 있어, 최신의 웹 애플리케이션 개발에 더욱 적합한 선택입니다.