1. 웹 서버란 무엇일까요 ?
웹 서버(Web Server)는 HTTP를 통해 웹 브라우저에서 요청하는 HTML문서나 오브젝트를 전송해주는 서비스 프로그램을 말한다.
2. 웹 어플리케이션 서버란 무엇일까요 ?
웹 어플리케이션 서버(Web Application Server, WAS)는 웹 어플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크이다. 인터넷 상에서는 HTTP를 통해 사용자나 컴퓨터 장치에 어플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)로 볼 수 있다.
웹 어플리케이션 서버는 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별되며, 주로 데이터베이스 서버와 같이 수행된다.
웹 어플리케이션 서버의 기능
- 프로그램 실행 환경과 데이터베이스 접속 기능 제공
- 여러 개의 트랜잭션 관리
- 업무를 처리하는 비지니스 로직 수행
* 웹 어플리케이션 서버가 정적. 동적 콘텐츠를 모두 존재하는데, 그럼 웹 어플리케이션 서버가 웹 서버 역할까지 하면 되는 거 아닌가 ? → 땡 !
웹 서버와 웹 어플리케이션을 함께 사용하는 이유
- 서버부하 방지
: 웹 어플리케이션 서버는 동적 데이터 처리 (들어온 요청에 맞게 동적으로 만들어진 콘텐츠. 즉 데이터베이스, 서버 내 로직을 활용해 만들어진 컨텐츠 반환)하므로 바쁘다. 따라서 단순한 정적 데이터 처리를 웹 서버가 빠르게 해준다면 서버의 부담을 줄일 수 있고, 처리 속도가 빨라질 것이다.
- 보안 강화
: 물리적으로 분리하여 SSL에 대한 암복호화 처리에 웹 서버를 사용하여 보안을 강화시킨다.
- 여러대의 웹 어플리케이션 서버 연결 가능해 로드 밸런싱 용도 사용 가능
: Load Balancing을 위해 웹 서버 사용
앞 단의 웹 서버에서 오류가 발생한 웹 어플리케이션 서버를 이용하지 못하도록 한 후 웹 어플리케이션 서버를 재시작하여 무중단 운영을 가능하게 한다.
- 여러 언어의 웹 어플리케이션 서비스 가능
: 예를 들어, 하나의 서버에 PHP Application과 Java Application을 함께 사용하는 경우
3. Django에서 제공하는 Runserver로 배포하면 안되는 이유 ?
django에서 run 함수는 django.core.servers.basehttp 말그대로 python이 제공하는 http server를 여는 것이다.
이것은, https를 사용하면 예외처리를 하는데 이 말은 즉, 보안처리를 최대한 생략한다는 것이다.
공식문서에서 조차도, DO NOT USE THIS SERVER IN A PRODUCTION SETTING 라고 나와있다.
그럼 배포는 어떻게 해야하나 ?
* Django WSGI
WSGI는 Web Server Gateway Interface의 줄임말로 파이썬의 표준 게이트웨이 인터페이스이다.
- 역할
: 웹 서버 자체는 정적인 페이지만 보여줄 수 있다. 우리가 인터넷에서 보는 동적 페이지들은 웹 서버가 전적으로 처리하는 것이 아닌 웹 어플리케이션(django 등으로 작성된 프로그램)의 도움으로 보게 되는 것인데, 웹 서버는 파이썬의 코드를 이해하지 못한다. 그럼 소통이 불가한데 ? !
이 때를 위해 WSGI가 존재한다.
따라서, WSGI는 웹 서버와 파이썬 웹 어플리케이션 간의 인터페이스 역할을 하는 것이다.
https://docs.djangoproject.com/ko/3.2/howto/deployment/wsgi/ ← WSGI로 django 배포하기
* 배포하기 전 체크리스트
https://docs.djangoproject.com/ko/3.2/howto/deployment/checklist/
[참고자료] https://dailyheumsi.tistory.com/21
django를 웹사이트 만들며 알게된 점
이번 프로젝트는 yp* 라는 조직에 웹사이트를 만들어 주는 것이 목표였다. 웹은 이전부터 많이 해와서 금방 끝낼 수 있을 줄 알았고, 후딱 돈벌고 다시 내 할 일로 돌아갈 계획이었다. 허나 일반
dailyheumsi.tistory.com
https://tibetsandfox.tistory.com/22
장고(Django) - WSGI(Web Server Gateway Interface)
WSGI란? WSGI는 Web Server Gateway Interface의 줄임말로 파이썬의 표준 게이트웨이 인터페이스입니다. 파이썬에서의 CGI정도로 이해하시면 됩니다만 더 쉽게 생각하자면 일종의 프로토콜 처럼 생각할 수
tibetsandfox.tistory.com
웹서버(Web Server) 와 웹 어플리케이션 서버 (WAS)
"웹 서버와 웹 어플리케이션 서버의 차이를 아시나요?" 이번 면접의 질문이었다. 서버공부를 한지 오래되지 않은 나로서 매우 기본적인 백엔드 개발자 면접 질문임에도 답할 수 없었다. 면접이
binux.tistory.com
[Django] runserver 로 실제 서버를 돌리면 안되는 이유-1 (런서버는 어떻게 동작하나??)
django를 개발하다보면, 혹은 다른 프레임워크로 웹백엔드를 개발하다 보면 앵간하면 개발 서버를 켜는 명령어가 있다. django에서는 python manage.py runserver 라는 명령어를 치면 아주쉽게 간편하게 로
twowix.me
'Django' 카테고리의 다른 글
Django Rest Framework (0) | 2021.09.01 |
---|---|
DataBase Modeling (0) | 2021.08.18 |
DataBase 개념 및 쿼리 사용법 (3) | 2021.08.11 |