슈코딩

[기술면접] Django 50문 50답 46~52 본문

코딩공부/기술면접

[기술면접] Django 50문 50답 46~52

Roshu 2022. 10. 27. 15:33

 

⭐46. Django 프로젝트를 배포할 때, 시크릿키를 노출하지 않는 방법에 대해서 설명하시오

  • .env에 시크릿키와 database정보들을 작성하고 settings.py에서는 .env파일의 정보를 가져와서 사용합니다.
    그리고 .env를 .gitignore에 포함시켜 github에 push되지 않도록 하고 EC2서버에 따로 .env파일을 업로드합니다.
    같은 방식으로 local_settings.py라는 파일을 생성해서 하는 방법도 있습니다.

⭐47. Django 프로젝트 진행 시 발생하는 CORS 오류를 처리하는 방법에 대해서 설명하시오

  • CORS는 Cross Origin Resource Sharing의 약자로
    도메인 또는 포트가 다른 서버의 자원을 요청하는 매커니즘입니다.
  • CORS 문제는 다른 도메인의 서버로부터 요청이 들어왔을 때, 헤더에 접근을 허락하는 내용이 없으면 발생합니다.
    이럴 경우 외부 서버에서 보내는 요청의 헤더(Access-Control-Allow-Origin response 헤더)에 
    cross origin HTTP 요청을 허가해 접근을 허락하는 내용을 추가해 주면 된다.
  • pip를 통해(혹은 Poetry)django-cors-headers를 다운받고 installed app에 명시를 해준다음
    cors allow (header, method, allowed_origin) 설정들을 용도에 맞게 설정해주면 해결됩니다.

⭐48. Django 프로젝트를 배포할 때 Allow Host에 * 가 들어가면 안되는 이유는?

  • allow host *은 어떤 호스트에서 접근을 해도 허락하겠다는 의미로 다양한 공격의 대상이 될 수 있습니다

⭐49. Django 프로젝트를 배포할 때 사용되는 Gunicorn이 무엇이며, WSGI를 왜 사용해야 하는지 설명하시오

  • Gunicorn은 웹서버에 필요한 동적페이지 요청을 python에 맞게 해석하여 응용프로그램에 전달해주는 역할을 합니다.
    이를 통해 장고 어플리케이션은 웹서버로 구동될 수 있습니다.
  • 장고의 공식문서를 보면 django의 runserver는 테스트, 디버깅용이며
    보안과 성능테스트를 거치지 않았기 때문에 wsgi와 웹서버로 서비스하도록 권장되어있습니다.

⭐50. Django 프로젝트를 배포할 때 사용되는 NGINX가 무엇이며, 웹서버를 왜 사용해야 하는지 설명하시오

  • nginx란 정적 페이지 요청을 처리하고 웹서버의 구축을 도와주는 소프트웨어입니다.
    비동기 이벤트를 기반으로 하는 처리방식으로 응답이 빠르고 트래픽 처리에 유리합니다.
  • nginx를 프록시 서버로 사용할 수 있으며, 클라이언트의 요청을 서버에 분산하기 위한 로드 밸런싱 기능, 
    DDos 공격 완화, 웹서버의 ssl인증도 적용도 가능합니다.
  • Gunicorn만으로 서버를 구축하면 정적인 페이지를 관리할 수 없고 클라이언트와 서버를 분리해
    REST API서버를 구축하여 사용한다고 해도 Nginx를 통해 장점으로 언급한 프록시 서버를 구축해 다양한
    보안이점도 얻을 수 있습니다.

⭐51. Django에서 PostgreSQL을 선호하는 이유는 무엇입니까?

  • PostgreSQL은 확장 가능성 및 표준 준수를 강조하는 
    객체-관계형 데이터베이스 관리 시스템(ORDBMS)의 하나 입니다.
  • Django는 PostgreSQL에서만 작동하는 여러 데이터 유형을 제공합니다.
  • PostgreSQL에는 Django가 지원하는 다른 데이터베이스에서 공유되지 않는 많은 기능이 있습니다.

PostgreSQL에 Django에서 지원하는 기능

  • 집계 함수 기능
  • 데이터베이스 제약 기능
  • 양식 필드 및 위젯 기능
  • 데이터베이스 함수 기능
  • 모델 인덱스 기능
  • 조회 기능
  • 데이터베이스 마이그레이션 작업
  • 전체 텍스트 검색
  • 검증

https://docs.djangoproject.com/en/3.0/ref/contrib/postgres/

 

django.contrib.postgres | Django documentation | Django

Django The web framework for perfectionists with deadlines. Toggle theme (current theme: auto) Toggle theme (current theme: light) Toggle theme (current theme: dark) Toggle Light / Dark / Auto color theme Overview Download Documentation News Community Code

docs.djangoproject.com

Django 공식문서 참고

Comments