본문 바로가기
취업_TIL

취업_TIL | 2022-09-07 (8) _ 기술 면접 대비 질문 43~52

by Hee94 2022. 9. 7.

기술 면접 준비

43. AWS를 통해 배포할 경우, sqlite를 사용하지 않는 이유는 무엇인가요?

  • 만약 SQLite의 데이터가 응용 프로그램과 별도의 컴퓨터에 존재하는 경우 높은 대역폭의 네트워크가 필요합니다. 이는 비싸고 비효율적인 솔루션이기에 사용하지 않습니다.

44. Django settings에서 DB 스택을 변경하는 방법은 무엇인가요?

  • Sqlite를 데이터베이스로 사용하지 않고, 원하는 데이터베이스를 사용할 경우 settings.py 에서 DATABASES 의 default값을 USER, PASSWORD, HOST, PORT번호를 기재함으로써 원하는 DB로 변경할 수 있습니다

45. Django 프로젝트를 배포할 때, 노출되어서는 안되는 값은 어떤 것이 있나요?

  • DEBUG = False 로 변경해야 합니다
    디버깅 정보를 오픈하면 소스를 그대로 보여주는것과 다름이 없습니다
  • Secret Key
    암호화 서명, 해싱등에 사용하는 값이기때문에 노출하면 안됩니다
  • ALLOWED_HOSTS
    HTTP Host Header Attack 위협에 대응하기 위해서 비공개 처리해야합니다
  • RDS, S3
    AWS 계정 정보가 있기 때문에 비공개 처리해야 합니다

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

  • pip install django-dotenv를 통해 설치 해줍니다.
    git을 사용한다면 .gitignore 파일에 반드시 .env을 추가하여 github에 올라가는 것을 방지해야 합니다.
    manage.py에 import dotenv를 통해 env를 활성화 해주고, import os를 통해 필요한 환경변수를 불러올 수 있도록 준비합니다
    기존 settings.py 에 SECREY_KEY의 벨류값을 복사하여 .env 파일을 생성한 후 SECRET_KEY = ‘복사해온 벨류값 작성’ 형태로 가져와줌으로 보이지 않지만 역할을 할 수 있도록 해줍니다
    settings.py 에 SECREY_KEY = os.environ.get(”SECRET_KEY”)를 통해 .env에 있는 시크릿파일을 읽습니다

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

  • Django Settings.py
    CORS_ORIGIN_WHITELIST
    CORS_ALLOW_METHODS
    CORS_ALLOW_HEADERS 를 추가,
    추가로 MIDDLEWARE corsheaders.middleware.CorsMiddleware 순서가 중요하기에 맨위에 에 추가한 후
    CORS_ORIGIN_WHITELISTE 에 교차출처를 허용할 사이트 주소를 명시해줌으로써 CORS 오류를 해결할 수 있습니다.

48. Django 프로젝트를 배포할 때 Allowed Host에 * 가 들어가면 안되는 이유는 무엇인가요?

  • 와일드카드를 사용하게 되면 모든 호스트에서 접속이 가능해지기 때문에 해킹당할 수 있습니다. 와일드카드는 개발할 때 혹은 특별한 경우를 제외하고는 사용하지 않는 것이 좋습니다.

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

  • Gunicorn은 Python WSGI로 WEB Server(Nginx)로부터 서버사이드 요청을 받으면, WSGI를 통해 서버 애플리케이션(Django)에 전달해주는 역할을 수행합니다.
  • WSGI는 파이썬 애플리케이션이 웹 서버와 통신하기위한 인터페이스로, 웹서버서의 요청을 해석하여 분배해야함으로 필요하고 멀티 쓰레드를 만들 수 있기 때문에 Request 요청이 많아지더라도 효율적으로 처리할 수 있으며, 이는 production 환경에 적합합니다

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

  • Nginx는 동시접속 처리에 특화된 웹 서버로 http 요청을 받아 요청에 해당하는 파일을 http통신을 통해 응답해주는 프로그램입니다
    Apache보다 동작이 단순하고, 전달자 역할만 하기때문에 효율적입니다
    Nginx를 사용함으로써 여러 Request를 처리할 수 있음으로 정적 콘텐츠를 고속으로 처리하기에 사용합니다

51. Django에서 PostgreSQL을 선호하는 이유는 무엇인가요?

  • Django 는 PostgreSQL에서만 작동하는 여러 데이터 유형을 제공합니다
    지도를 사용하여 애플리케이션을 구축하거나, 지리적 데이터를 저장하는 경우, GeoDjango는 PostgreSQL과 완벽하게 호환할 수 있기에 타 DB보다 장점이 있습니다

52. HTTP가 아닌 HTTPS로 배포했을 때의 장점에 대해 설명하시오

  • HTTPS는 Hyper Text Transfer Protocol Secure로 보안이 추가된 HTTP입니다.
    클라이언트와 서버가 서로 비밀리에 약속된 방식을 통해 주고받는 내용을 암호화 하여 전달받기때문에
    하이재킹 공격을 통한 위험을 줄여줍니다.
    또한 구글 검색결과로 HTTPS를 우선하여 보여주기때문에 SEO관점에서도 좋습니다.