Two Scoops of Django 0. 시작하기 전에

지은이의 글

대니얼은 NASA에서 자바 기반 RESTful웹 서비스를 구현하는 프로젝트를 하는 도중 상사가 하루 자리 비운사이에 파이썬으로 한 시간 반만에 구현했다고 한다. 그 이후로 파이썬을 애용하게 되었는데 그 당시 장고는 겨우 0.9x버전이라 매우 최신의 변방 기술로 여겨져 실제 프로젝트용으로 아직 미흡하다는 얘기를 들었다.

9년이 지나고 인스타그램, 핀터레스트, 모질라 등에서 사용하는 성숙하고, 강력하며, 보안성이 뛰어나고, 매우 안정적인 프레임워크로 성장함.

저자는 8년간 장고 프로젝트를 하면서 개발 속도를 높이는 동시에 기술적 부채(technical debt)를 최소한으로 하는 제작 방법을 배웠고 이를 공유하기 위해 이 책을 쓰게 되었다.

오드리는 구글 앱 엔진과 슈퍼해피데브하우스(SuperHappyDevHouse)의 많은 친구들 그리고 실리콘밸리의 해커톤 문화 덕에 장고에 관심을 갖게 되었고, 다양한 프리랜서 프로젝트와 여러 동업 관계의 프로젝트에서 장고의 강력함을 깨달았다고 한다.

이 책에서 추천하는 기술적 내용

공식 장고 문서처럼 장고 이용방법을 여러 시나리오와 코드 예제를 들어 설명했지만 공식 문서와 다른 점은 특별한 코딩 스타일, 패턴, 라이브러리를 직접적으로 언급하고 추천한다.

최고의 방법이라고 생각하는 기술만 옹호하고 선호하므로 널리 사용되는 방법이라도 안티 패턴은 철저하게 배제하였다.

왜 Two Schoops of Django인가?

저자는 아이스크림을 매우 좋아하는데 정말 좋아하는 맛의 아이스크림을 찾으면 기술 서적을 뒤지다가 유용한 코드 한 토막을 발견했을 때 처럼 미소가 지어진다고 한다. 그래서 독자들에게 그런 미소를 선사 해주는 책이 되길 기대하며 지었다고 함.

시작하기 전에

  • 최소한 장고 튜토리얼 첫 여섯 쪽 숙지하고
  • 객체 지향 프로그래밍 경험있으면 좋음
  • 장고 1.8, 파이썬 2.7.x, 3.3.x기반
  • 각 장은 독립적으로 구성됨
  • 코드 샘플은 http://www.2scoops.co/1.8-code-examples

핵심 개념

단순 명료하게 하라(Keep it simple, stupid

단순함은 곧 고도의 정교함이다

모델은 크게, 유틸리티는 모듈로, 뷰는 가볍게, 템플릿은 단순하게

뷰와 템플릿을 제외한 다른 부분에 많은 로직을 넣는 것을 추천.
코드는 깔끔해지고 문서화가 잘 되며 중복되는 부분이 줄어든다.
템플릿 태그와 필터는 가능한 최소의 로직으로

Fat Models : 6.5 거대 모델 이해하기
Utility Modules : 29.2 유틸리티 모듈들을 이용하여 앱을 최적화하기
Thin Views : 16.3.3 비즈니스 로직을 API 뷰에서 분리하기
Stupid Template I : 13.9 미니멀리스트 접근법을 따르도록 한다.
Stupid Template II : 14장 템플릿 태그와 필터

시작은 장고 기본 환경으로부터

코어 장고 컴포턴트 대신 다른 대안 템플릿이나 다른 종류의 ORM 또는 비관계형 DB를 도입하기 전에 장고 기본 환경에서 먼저 시스템을 구현해야한다.
기본 환경으로만 구현했을 때 문제가 생긴다면 먼저 해결하고 교체해야 하기 때문.
18장 장고 코어 모듈을 교체할 때 주의점 참고

장고의 디자인 철학 이해하기

주기적으로 장고 디자인 철학 읽어보기 https://docs.djangoproject.com/ko/2.0/misc/design-philosophies/

12팩터 앱

웹 기반 애플리케이션 디자인의 통합 전략인 12팩터(Twelve-Factor)앱 방법론은 많은 숙련된 장고 개발자와 코어 장고 개발자들 사이에서 최근 인기를 끌고 있는 주제.
확장 가능하고 배포 가능한 앱을 만드는 방법론으로 충분히 읽어볼 가치가 있다. http://12factor.net/ko/

집필 철학

  • 최고의 내용 만들기
  • 커뮤니티와 오픈소스, 도움을 준 분들에 대한 감사
  • 독자와 리뷰어들에게 귀 기울이기
  • 이슈와 수정 사항 공개하기

참고) 이 책(1.8) 다음 버전인 1.11버전의 장고와 바뀐 점 http://raccoonyy.github.io/django-1-11-release-note-summary-korean/

Comments