모의면접을 준비하면서도 헷갈렸던 웹 서버와 웹 애플리케이션 서버에 대해서 정리해본다.
웹 서버(Web Server)
- 정적 컨텐츠를 제공 -> WAS를 거치지 않고, 바로 요청한 컨텐츠를 제공할 수 있다
- 동적인 컨텐츠의 제공을 위한 요청을 전달하기도 함
마치 우리가 주기억장치에서 데이터를 가져오는 것의 비효율성을 극복하기 위해 캐시메모리를 쓰는 것과 유사한 원리이다.
즉, 사용자와의 상호작용이 필요하지 않고, 모든 사용자에게 동일한 데이터를 반환하면 될 때는 굳이 DB까지 hit하지 않고, 앞단에 위치하는 웹 서버 차원에서 바로 요청에 대한 결과를 반환해주는 것이다.
웹 애플리케이션 서버(WAS: Web Application Server)
- 클라이언트의 요청에 따라 동적인 컨텐츠를 제공하는 서버(프로그램)
- 정적 컨텐츠 처리 외의 거의 모든 처리를 담당
- 알고리즘, 비즈니스 로직, DB 조회 등
- Tomcat: JAVA SPRING 기반의 WAS
- Django: Python 기반의 WAS
- Django는 파이썬 기반의 웹 프레임워크인 동시에 파이썬으로 작성된 웹 애플리케이션을 구동하는데 사용되는 웹 애플리케이션 서버(WAS)의 역할도 수행
WSGI (Web Server Gateway Interface)
-웹 서버와 웹 프레임워크를 중계해주는 인터페이스
-개발환경에서는 Django만을 WAS로 사용할 수 있지만, 배포환경(Production환경)에서는 WSGI가 쿠션 역할을 해줘야 한다
-> Django의 runserver는 production 환경에서는 보안상, 성능상, 효율상 적합하지 않음
즉, 배포환경에서 클라이언트의 Request요청이 많아지더라도 이를 효율적으로 처리하기 위해서는 WSGI가 필요하다. 정리하면, 웹 서버나 WSGI나 WAS의 부하를 줄여주는 역할을 수행한다.
'TIL' 카테고리의 다른 글
[TIL 2024. 05. 07] 멀티스레딩과 멀티프로세싱 (0) | 2024.05.08 |
---|---|
[TIL 2024. 05. 03] 심화 팀프로젝트 (0) | 2024.05.07 |
[TIL 2024. 05. 01] DRF 개인과제 오류수정(2) (0) | 2024.05.02 |
[TIL 2024. 04. 30] DRF 개인과제 오류수정 (0) | 2024.05.01 |
[TIL 2024. 04. 29] 모의면접 회고록 (0) | 2024.04.30 |