Web Server
클라이언트(웹 브라우저)로부터 Requset를 받아 정적인 컨텐츠(html , css 등등)을 Response 하는,
클라이언트(웹 브라우저)와 직접적인 통신을 하는 프로그램을 말합니다.
대표적인 웹 서버의 종류로는 아파치(Apache), 엔진엑스(NGINX) 가 있습니다.
웹 서버가 필요한 이유
클라이언트가 서버로부터 Response를 받을때 HTML문서와 이미지 파일등의 정적 컨텐츠를
한꺼번에 받는것이 아닌, 웹 문서를 모두 받고 나면 그에 맞는 이미지 파일을 재요청하여 받아오는 식입니다.
이때 웹서버 프로그램이 이미지 파일 요청까지 한번에 처리해서 Response 해주면
WAS에 요청을 다시 보낼 필요가 없이 서버의 부담을 줄일 수 있습니다.
WAS
웹 애플리케이션 서버(Web Application Server, WAS)는
웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크로,
주로 웹 서버가 할 수 없는 로직처리나 DB 조회 등 동적 콘텐츠를 제공하는 역할을 합니다.
대표적인 웹 애플리케이션 서버의 종류로는 플라스크(Flask), 장고(Django) 등이 있습니다.
WAS가 필요한 이유
웹 페이지에 존재하는 동적 컨텐츠를 처리하기 위함 입니다.
웹서버만을 이용한다면 동적으로 동작해야 하는 컨텐츠의 결과를
웹서버에서 모두 미리 로드해두고 클라이언트에 Response를 보내야하기 때문에
WAS를 통해 클라이언트의 요청에 맞는 컨텐츠를 그때 그때 제공할 수 있습니다.
WSGI
Web Server Gateway Interface
파이썬 Web Application (파이썬 스크립트) 가 Web Server 와 통신하기 위한 인터페이스 (일종의 프로토콜)
다수의 클라이언트에서 전해지는 Request들을 동시에 처리하기 위해 사용합니다.
WSGI가 필요한 이유
웹 서버(Apach, Tomcat) Java 기반이므로 플라스크 또는 장고의 파이썬 코드들을 이해하지 못합니다.
따라서 웹 서버와 프레임워크는 통신을 할 수 없습니다.
웹 서버와 Python 계열의 프레임 워크가 통신할 수 있게 해주는 미들웨어가 필요한데,
WSGI는 파이썬 코드들을 웹 서버가 이해할 수 있게 도와줍니다.
WSGI 종류로는 mod_wsgi, gunicorn 등이 있습니다.
1. 클라이언트에서 요청을 보냄
2. 웹 서버에서 요청을 받고, WSGI 서버(미들웨어)를 호출
3. WSGI 서버는 WSGI를 사용하는 웹 어플리케이션(Flask)을 호출
4. 호출받은 웹 어플리케이션은 요청에 따라 적절한 처리를 수행
5. 수행 결과를 다시 WSGI 서버를 통해 웹 서버로 전달하고, 웹 서버는 최종 응답을 클라이언트로 보냄
Werkzeug
- WSGI Middleware 기능을 가진 라이브러리
- Werkzeug는 WSGI 서버를 자체 내장
- Flask 프레임워크는 Werkzeug를 기반 중 하나로 사용
- requests, response 와 같은 명령 실행은 Werkzeug에 의해 이루어짐
Reference Path
'flask' 카테고리의 다른 글
flask clone coding [4] (댓글 API) (0) | 2022.11.20 |
---|---|
werkzeug 의 정규표현식 (0) | 2022.11.16 |
flask clone coding [3] (JWT 구현) (0) | 2022.11.15 |
flask clone coding [2] (데이터 검증) (0) | 2022.11.13 |
flask clone coding [1] (Flask-SQLAlchemy 3.0 변경사항) (0) | 2022.11.06 |