무엇을 공부했나요?
Two Scoops of Django 1~3장 내용을 살펴보는 시간을 가졌습니다.
- 1장 코딩스타일
- 2장 최적화된 장고 환경 꾸미기
- 3장 어떻게 장고 프로젝트를 구성할 것인가
문수 님께서 1장부터 3장의 내용을 요약한 자료를 준비해주셨고, 스터디 시간에 직접 발표를 해주셨습니다. 각 장에 대한 요약이 끝나면 호성 님께서 심화발표 형식으로 실무 경험담, 8퍼센트에서의 적용방식에 대해서 공유해주셨습니다. 중간중간 궁금한 내용에 대해서는 서로 질문하고 답변하는 형식으로 진행되었습니다.
스터디에서 다루었던 내용 중 주요 내용을 정리하면 아래와 같습니다.
1장 코딩스타일
- 파이썬 공식 스타일 가이드인 PEP8를 적용한다.
- flake8 패키지를 활용하면 PEP8 가이드에 맞추어 파이썬 파일의 코드 스타일을 검사한다.
- import를 할 때 아래와 같은 순서로 그룹을 짓는다. isort 유틸리티를 활용하면 import 순서를 자동으로 조정할 수 있다.
- 표준 라이브러리 임포트
- 코어 장고 임포트
- 장고와 무관한 외부 앱 임포트
- 프로젝트 앱 임포트
- 명시적 성격의 상대 임포트를 이용한다.(explicit relative imports)
import *
를 피한다. 각 모듈은 개별적으로 임포트 한다.
2장 최적화된 장고 환경 꾸미기
- 같은 데이터베이스를 이용한다. 운영 환경에서 PostgreSQL을 사용한다면 로컬 개발 환경에서도 PostgreSQL을 사용한다. 이는 여러 가지 이유가 있는데, 같은 데이터베이스를 사용하지 않으면 문제가 발생해도 재현이 어려울 수 있고, 테스트에서 미리 오류를 발견하지 못할 가능성이 있다.
- pip와 virtualenv를 활용하여 파이썬 패키지 의존성 문제를 해결하고 독립된 프로젝트 환경을 구성한다.
- git과 같은 버전 컨트롤 시스템을 이용하여 코드의 변경 내용을 기록한다.
3장 어떻게 장고 프로젝트를 구성할 것인가
- 프로젝트의 레이아웃은 코어 장고 개발자들 사이에서도 여러 의견이 분분하다.
- 일반적으로 가장 널리 쓰이는 프로젝트 구성은 아래와 같다.
<repository_root>/ # 최상위 레벨 : 저장소 루트 (.gitignore, requirements.txt 포함)
├── <configuration_root>/ # 두 번째 레벨 : 설정 루트 (settings.py, urls.py 포함)
├── <django_project_root>/ # 세 번째 레벨 : 프로젝트 루트 (manage.py, app폴더 포함)
- Cookiecutter를 활용하여 장고 프로젝트 초기 구성을 쉽게 생성할 수 있다.
- 사람들은 프로젝트 구성에 대해 각자 자신만이 생각하는 ‘옳은’ 방법을 가지고 있다. 그리고 언제나 옳은 방법이 하나만 있는 건 아니다.
자세한 스터디 자료는 github에서 확인하실 수 있습니다.
어땠나요?
저는 초보 개발자이자 외부인으로서 8퍼센트의 스터디에 참여하고 있습니다. 그동안 혼자 공부 하면서 궁금했던 내용에 대해서 질문을 하고 답변을 받을 수 있어서 유익한 시간이었습니다. 무엇보다도 경험이 풍부하신 개발자 분들의 이야기를 듣는 것 만으로 공부가 되는 기분이 듭니다. 호성 님께서 스터디 중간에 Travis CI 를 활용하여 커밋 된 코드의 테스트를 진행하는 부분을 보여주셨습니다. 스터디에서 다루었던 flake8, isort을 현업에서도 직접 활용하고 있었고, 이를 통해서 필요성에 대해 더욱 공감할 수 있었습니다.
집에 돌아와서는 flake8을 설치하고 실행해보았습니다. 제가 작성한 코드 중 생각도 못했던 부분에서 PEP8 가이드에 맞지 않는 부분이 많았기에 놀랐습니다. 오늘 배운 내용을 바탕으로 더 읽기 쉬운 코드를 작성할 수 있도록 연습 해야겠다는 생각을 했습니다.
앞으로 두숟갈 스터디에서 바보 같은 질문 담당으로 꾸준히 공부할 수 있었으면 좋겠습니다 :)