웹 서버와 웹 어플리케이션 서버, Gunicorn, Nginx / TIL_221101
- 웹 서버와 웹 어플리케이션 서버 차이
- 정적(Static) vs 동적(Dynamic)
정적(Static)
- image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들을 의미
- 웹 서버에서 요청에 알맞은 파일을 반환하며, 항상 동일한 페이지를 반환
- 웹 서버에서 제공
- 서버는 nginx와 apache를 주로 사용
동적(Dynamic)
- 들어온 요청에 맞게 동적으로 만들어진 컨텐츠를 의미
- 데이터베이스, 서버 내 로직 등을 활용해 만들어진 컨텐츠를 반환
- 웹 어플리케이션 서버에서 제공
- 서버로는 톰캣 getty, undertow이 있음
- 웹 서버와 웹 어플리케이션 서버 차이
웹 서버(web server)
웹 서버는 일반적으로 정적인 컨텐츠를 제공하고 동적인 컨텐츠 제공을 위해 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달
- 클라이언트가 요청한 정적인 컨텐츠를 HTTP를 통해 제공해주는 서버
- 클라이언로부터 들어온 요청에 대해 사용자 인증을 처리하는 역할을 함
- 요청한 파일이 없거나 문제가 발생하면 특정한 코드 값을 전달
웹 어플리케이션 서버(web applicateion server)
다양한 서버 내 알고리즘, 비즈니스 로직, DB 조회 등 클라이언트 요청에 따라 동적인 컨텐츠를 제공하는 서버, 프로그램
- 프로그램 실행 환경과 데이터베이스 접속 기능을 제공
- 여러 개의 트랜잭션을 관리
- 업무를 처리하는 비즈니스 로직 수행
- Gunicorn
- WSGI
파이썬 애플리케이션이 웹 서버와 통신하기 위한 인터페이스로 웹 서버에서의 요청을 해석하여 파이썬 애플리케이션 쪽으로 던지는 역할을 수행한다.
- Gunicorn
Gunicorn은 python WSGI로 서버로 WSGI란 python으로 작성된 웹 어플리케이션과 python으로 작성된 서버 사이의 약속된 인터페이스 또는 규칙이라 보시면 됩니다. 간단히 말하면 WSGI 서버와 웹 어플리케이션이 WSGI의 규칙에 따라 작성되면, 웹 어플리케이션 입장에서는 내부 구현과 상관 없이 자유롭게 WSGI 서버를 골라서 사용할 수 있는 유연성을 제공한다.
- Nginx
가벼우면서도 강력한 프로그램을 목표로 개발된 오픈 소스 웹 서버 프로그램. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP web server로 활용되기도 하고, reverse proxy server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 한다.