Django 50문 50답 - 5

코변·2022년 9월 19일
0

장고 50문 50답

목록 보기
5/5
post-thumbnail
  1. Django는 어떤 종류의 데이터베이스를 사용합니까? Flask와의 차이는 무엇입니까?
  • 장고는 따로 설정을 하지 않는다면 sqllite를 사용하며 따로 설정하지 않는다는 내용에서도 유추할 수 있듯이 기본적으로 데이터베이스를 생성해주고 연결을 보장해준다.
  • 반면에 플라스크는 db연결을 보장해주지 않고 파이썬의 다양한 패키지를 활용하여 db와 연결해야한다. (ex-> sqlalchemy, pymysql, pymongo 등)
  1. Django에서 제공하는 sqlite는 어떤 장단점이 있습니까?
  • 장점
    • sqlite는 서버 프로세스로 실행되지 않기 때문에 즉시 사용할 수 있는 데이터 베이스이다.
    • 가볍지만 갖출 건 다 갖췄다. 트랜잭션을 지원하고 플랫폼의 제약이 없다.
    • 로컬에서 구동되는 db이기 때문에 이식성이 높다.
  • 단점
    • 분리된 환경이 아니라서 서버가 db에 대한 부담도 떠안아야 한다.
    • 사용자에게 권한 부여가 불가능하다.(운영체제의 기본적인 액세스권한만 가능)
  1. AWS를 통해 배포할 경우, sqlite를 사용하지 않는 이유는 무엇입니까?
  • 주어진 시간에 하나의 프로세스만이 데이터베이스를 변경할 수 있어 다른 mysql, postgres 같은 서버-클라이언트 구조 RDBMS보다는 동시성에서 속도저하를 보인다.
  • 다른 RDBMS에 비해 보안이 약하다.
  1. Django settings에서 DB 스택을 변경하는 방법은 무엇입니까?
  • settings.py에서 databases 설정을 찾아 engine값을 변경해주면 된다.
  1. Django 프로젝트를 배포할 때, 노출되어서는 안되는 값은 어떤 것이 있습니까?
  • django_secret_key 와 그 밖의 db비밀번호 데이터, jwt토큰을 사용한다면 해싱에 사용되는 jwt시크릿키가 있다.
  1. Django 프로젝트를 배포할 때, 시크릿키를 노출하지 않는 방법에 대해서 설명하시오
  • 숨기고 싶은 데이터들을 환경변수로 설정하여 os.environ으로 불러와 쓰는방법
  • config 파일 혹은 .env 파일을 만들어 저장 후에 불러오는 방법
  • 도커를 사용한다면 도커 컴포즈에 env파일을 명시하거나 환경변수 설정을 해준다.
  • 컴포즈를 쓰지 않을 때에는 docker run시에 태그를 사용하여 설정할 수도 있다.
  1. Django 프로젝트 진행 시 발생하는 CORS 오류를 처리하는 방법에 대해서 설명하시오
  • pip를 통해(혹은 Poetry)django-cors-headers를 다운받고 installed app에 명시를 해준다음
  • cors allow (header, method, allowed_origin) 설정들을 용도에 맞게 설정해주면 해결된다.
  1. Django 프로젝트를 배포할 때 Allow Host에 * 가 들어가면 안되는 이유는?
  • allow host *은 어떤 호스트에서 접근을 해도 허락하겠다는 의미로 다양한 공격의 대상이 될 수 있다
  1. Django 프로젝트를 배포할 때 사용되는 Gunicorn이 무엇이며, WSGI를 왜 사용해야 하는지 설명하시오
  • 구니콘은 웹서버에 필요한 동적페이지 요청을 python에 맞게 해석하여 응용프로그램에 전달해주는 역할을 한다.
  • 이를 통해 우리가 만든 장고 어플리케이션은 웹서버로 구동될 수 있다.
  • 처음에 장고를 사용할 때 runserver는 정적 페이지 동적페이지 다 구동이 가능한데 왜 웹서버로 쓰지말라고 할까하는 생각이 들었다.
  • 그러나 장고의 공식문서를 보면 알 수 있듯이 django의 runserver는 테스트, 디버깅용이며 보안과 성능테스트를 거치지 않았기 때문에 wsgi와 웹서버로 서비스하도록 권장된다고 나와있다.
  1. Django 프로젝트를 배포할 때 사용되는 NGINX가 무엇이며, 웹서버를 왜 사용해야 하는지 설명하시오
  • nginx란 정적 페이지 요청을 처리하고 웹서버의 구축을 도와주는 소프트웨어이다.
  • 비동기 이벤트를 기반으로 하는 처리방식으로 응답이 빠르고 트래픽 처리에 유리하다.
  • nginx를 프록시 서버로 사용할 수 있다 클라이언트의 요청을 서버에 분산하기 위한 로드 밸런싱 기능, DDos 공격 완화, 웹서버의 ssl인증도 적용 가능하다.
  • 구니콘만으로 서버를 구축하면 정적인 페이지를 관리할 수 없고 클라이언트와 서버를 분리해
  • rest-api서버를 구축하여 사용한다고 해도 Nginx를 통해 장점으로 언급한 프록시 서버를 구축해 다양안 보안이점도 얻을 수 있다.
profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글