Django

miniminion·2023년 1월 3일
0

Django(장고)란?

Django는 파이썬을 기반으로한 웹 프레임워크이다.

  • 웹프레임워크: 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이기 위해 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 기능을 포함하고 있는 구조체이다.

※ 요약

  • django에는 기본적인 웹서버가 존재하고, runserver 명령으로 구동 가능하다.
  • 하지만 runserver 구동 시 성능저하, 보안 문제로 실제 운영환경 배포에서는 권장 하지 않는다.
  • 기본적으로 운영환경 배포시 nginx(web server) + gunicorn(wsgi) + django 조합으로 구성한다.
  • 좋은 성능을 위해 wsgi + django를 사용하고 몇몇 wsgi는 SSL과 정적파일 지원하지 않고, DDos 공격과 같은 많은 주기적 요청이 발생하기 때문에 별도의 web server를 사용한다.

WSGI ?

파이썬으로 만들어진 장고(Django) 프레임워크의 경우 동적 페이지 요청에서 웹서버와 통신이 필요한데 웹서버는 python으로 되어있지 않다. 그렇기 때문에 웹서버와 장고를 이어줄 중간 개체가 필요하다. 그 중간 개체는 WSGI(web server gateway interface) 서버이다. WSGI는 request/response를 동기적으로 처리하며, 멀티프로세싱 방식으로 동작하므로서 request가 많을 경우에도 병목현상이 일어나지 않도록 한다.

nginx(엔진엑스)?

nginx는 웹서버의 한 종류이다.
웹서버: 웹 페이지를 클라이언트로 전달한다. 주로 정적인 정보(이미지, css, 자바스크립트)를 포함한 HTML문서가 클라이언트로 전달된다.
(동적인 정보(db 조회 등)를 전달하는 서버는 web application server이다. => django)

※ 아파치 vs 엔진엑스

  • 아파치 : 다중 프로세스
    • MPM, 멀티 프로세스 모듈 방식으로 일 처리
      요청이 들어 올때마다 프로세스를 새로 생성하는 방식이 있고 한 프로세스 안에서 스레드를 생성하는 방식이 있다.
    • 오랜기간 사용 되어왔기 때문에 안정성이 더 좋다.
  • Nginx : 이벤트로 일 처리
    • event driven 방식 요청을 한줄로 세워 순차대로 진행함
    • 성능면에서 아파치보다 좋다.
    • 장고는 엔진엑스와 잘 맞는다.

0개의 댓글