무엇을 공부했나요?
이번 시간에는 지난 시간에 이어 Two Scoops of Django 4~5장 내용을 살펴보았습니다.
- 4장 Django 앱 디자인의 기본
- 5장 Setting과 requirement 파일
제가 4장을 미주님께서 5장을 정리하여 요약 자료를 준비하였고, 남홍님께서 심화 자료를 준비하여 조금 더 실제로 적용되는 사례들에 대해 설명해 주셨습니다.
중간중간에 발표자가 질문을 하기도 하고, 받기도 하면서 자유로운 토론과 함께 발표가 진행되었습니다. 확실히 아는 만큼 질문의 수준도 많이 올라가는 것 같더군요.(더 열심히 공부해야된다는걸 느꼈습니다…ㅠㅠ) 이번 스터디는 특히 새로오신 동현님을 포함해 전원 참석한 스터디였어서 그런지 더 의미가 있었던 것 같습니다. 이제 간단하게 스터디 내용들을 살펴볼까요?
4장 Django 앱 디자인의 기본
- 각 앱이 그 앱의 주어진 임무에만 집중할 수 있어야 한다.(유닉스 철학)
- 프로젝트 내의 각 앱들은 어떠한 기능을 하는 라이브러리들이다.
- 장고 앱 이름
- 가능한 한 단어
- 앱의 중심모델의 복수형(의미를 해치지 않는 선에서)
- URL 주소가 어떻게 되는지 고려
- 파이썬 공식 스타일 가이드인 PEP8 규약에 맞게 import될 수 있는 이름
- 확신없는 앱은 피하고 앱을 작게 유지해야된다.
- 앱 안에 위치한 모듈
- 공통 앱 모듈 (대부분의 프로젝트가 지킴)
scoops/ __init_.py admin.py forms.py management/ migrations/ models.py templatetags/ tests/ urls.py views.py
- 비공통 앱
- 공통 앱 모듈 (대부분의 프로젝트가 지킴)
5장 Setting과 requirements 파일
- 버전 관리가 되지 않는 로컬 세팅은 피하도록 한다.
- SECRET_KEY, 아마존 API 키, 스트라이프(Stripe) API 키, 다른 비밀번호 형태의 여러 설정 변수도 보안을 위해 저장소에서 빼야 한다.
- 여러개의 setting 파일을 이용하기
settings/ __init__.py base.py local.py staging.py test.py production.py
- settings/ 디렉토리를 사용하여 아래 여러개의 셋업파일을 구성하는 방법
- 다중 개발 환경 세팅
- 코드에서 설정 분리하기
- 환경 변수를 이용하기를 권장한다.
- 환경 변수에 비밀 키 등을 넣어 두기 전에 저장 방법 등을 주의하자.
- 로컬, 운영 환경에서 환경 변수를 세팅하기(책 코드 참고)
- 비밀 키가 존재하지 않을 때 예외 처리하기(책 코드 참고)
- 환경 변수를 이용할 수 없을 때
- JSON 파일 이용하기
- Config, YAML, XML 파일 이용하기
- 여러 개의 requirements 파일 이용하기
- settings에서 파일 경로 처리
- 하드코딩 하지 않기
- Unipath 패키지 또는 os.path 파이썬 기본 라이브러리로 BASE_DIR 경로를 세팅하는 것을 추천
자세한 스터디 자료는 github에서 확인하실 수 있습니다.
심화 내용
남홍님께서 실제 회사에서 쓰이고 있는 예시를 보여주시며 좋은 점과 나쁜점을 설명해주셨습니다. 또한 서버마다 Secret Key를 다르게 했을때 생기는 문제, Secret Key를 실수로 공개했을 때 문제 등을 설명해주셨습니다. Secret Key에 대한 여러 이야기도 나왔고 조금 더 보안을 좋게 만들기 위해 할 수 있는 여러 방법들, 또 그 방법들의 부족한 점 등 여러가지 토론이 이루어졌습니다.
프로젝트 시작
스터디 발표가 끝나고 나서는 각 조별로 모여서 하나의 주제를 가지고 프로젝트를 시작하였습니다. 주제는 책 관리 서비스로 기능은 어떻게 넣느냐에 따라 많은 발전이 가능한 주제였습니다. 여러 명이 여러 개의 주제로 하는 것보다, 같은 주제로 서로 피드백이 가능하고 내용을 쉽게 파악할 수 있는 방향이 좋을 것 같다고 생각해 같은 주제로 시작하게 되었습니다. 이번은 첫 프로젝트 시간이라서 repository를 만들고, 기본 세팅 및 각 조의 프로젝트 이름을 정하였습니다.
- 1조 : ramen-prop
- 2조 : abook
- 3조 : booki3rd
앞으로 각 조들이 자기 조만의 프로젝트로 여러 내용들을 채워넣으며 발전시킬 것 같습니다. 실제로 서버에 배포하지는 않았지만 Secret Key를 공유하지 않게 주의하자는 서로의 훈훈한 다짐도 있었습니다.
어땠을까?
이제 본격적으로 프로젝트도 시작하고 스터디의 내용도 많아지기 시작했네요. 아는만큼 보이고 더 알아간다고 하듯이 더 열심히 공부해봐야 할 것 같습니다. 무엇보다 Django에 대한 공부와 별개로 여러 실제 예시를 듣고 실제로 어떻게 적용되는지를 보는 것이 많은 도움이 되는 것 같습니다. 이번처럼 매 스터디마다 빠지지 않고 다들 참여해서 끝까지 멋진 프로젝트를 해내면 좋겠네요. 다음 스터디가 많이 기대되네요 :D