슈코딩
[기술면접] Django 50문 50답 46~52 본문
⭐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 공식문서 참고
'코딩공부 > 기술면접' 카테고리의 다른 글
[기술면접] Django 50문 50답 31~45 (0) | 2022.10.26 |
---|---|
[기술면접] Django 50문 50답 16~30 (0) | 2022.10.25 |
[기술면접] Django 50문 50답 1~15 (0) | 2022.10.24 |
[신입 기술면접] 기술면접 스터디 정리 3 (0) | 2022.10.22 |
[신입 기술면접] 기술면접 스터디 정리 2 (0) | 2022.10.21 |
Comments