장고로 웹 사이트 개발하기
|
자바나 루비와는 달리 파이썬은 웹 개발을 위한 표준 프레임워크가 없었습니다. 늘 몇 가지 대안들이 공존하고 있었고, 지금도 마찬가지 입니다. 데이터베이스에 대한 표준 인터페이스가 정립된 시기와 비교해 보더라도, WSGI 라는 인터페이스에 대한 합의는 너무 늦습니다. 이런 상황으로 인해 RoR 에 상당부분 스크립트 기반의 웹 개발 시장을 잠식당한 것으로 생각하고 있습니다. 하지만 여전히 혁신에 개방되어 있다는 긍정도 존재합니다. 이런 상황에 약간의 변화의 바람이 일고 있는듯합니다. 구글 애플리케이션 엔진(GAE - Google App Engine)이 파이썬을 지원하고, 상당부분 장고에 기반하고 있다는 소문이 퍼진 것입니다. 이 때문인지 장고와 터보기어즈간의 균형이 무너지고 장고로 사용자들이 흡수되고 있는 것으로 보입니다. Zope 은 오래 전에 마이너리티로 전락했지요. 개인적인 생각에 장고가 유일한 시장표준이 되는 일은 없을 것으로 보입니다만, 파이썬에서 중요한 위치를 점하는 웹 프레임워크로 자리매김할 것은 분명해 보입니다. 가장 중요한 이유는 사용자들이 장고로 부터 얻을 수 있는 가치가 매우 높다는 것입니다. 대단히 완성도 있는 시스템이고 실용적입니다. 파이썬의 언어적인 장점과 합쳐져서 높은 생산성을 제공합니다. 장고는 2003년 Lawrence Journal-World 사이트의 내부 프로젝트로 시작했다가 오픈 소스 프로젝트로 세상에 나왔습니다. 프로젝트 명은 개발팀이 좋아하던 장고 라인하르트(Django Reinhardt)라는 재즈 기타리스트의 이름에서 따왔다고 합니다. 장고의 특징은 꽤 편리한 ORM(Object Relational Mapper), MVC(Model-View-Controller) 분리를 강조하는 템플릿 시스템에 더해, 이 둘을 기반으로 각종 기능들을 당장 사용할 수 있는 형태로 제공한다는 것입니다. 파이썬에서 자주 사용되는 말로 "건전지가 함께 제공됩니다". 거의 공짜로 얻어지는 관리 페이지를 좋아하는 사람들이 많습니다. 물론 템플릿 시스템이 불편하다는 사용자들도 있습니다. JSP 나 다른 템플릿 시스템들이 템플릿에 임의의 코드를 삽입할 수 있도록 허락하는데 반해서 장고는 조건문과 루프 정도만을 지원할 뿐 코드 삽입을 허락하지 않습니다. 코드는 별도의 파이썬 스크립트에서 제공해야 합니다. 이는 모델과 뷰를 분리하려는 목적으로 의도된 제약으로 보입니다. 즉 이 부분을 불편하게 여기신다면 앞으로도 바뀔 가능성은 별로 없다는 뜻입니다. GAE가 장고에 기반한다는 소문은 일부만 사실입니다. 가령 템플릿 시스템은 장고 0.96 의 템플릿을 그대로 복사했습니다.(안타깝지만 1.0 템플릿이 아닙니다.) Datastore 는 장고의 ORM 을 상당 부분 흉내 냈습니다. 이 부분은 흉내만 내야지 같을 수는 없습니다. GAE는 관계형 DB 를 지원하지 않고 그 유명한 BigTable 기반이기 때문입니다. 또 GAE에는 장고 1.0 라이브러리가 이미 설치되어 있어서 새로 업로드 하지 않아도 됩니다. 이 세 가지를 제외한 나머지는 별로 비슷한 구석이 없습니다. memcached 를 지원한다는 점이 있기는 하지만 장고의 특징으로 볼 수는 없지요. 몇 가지 장고의 라이브러리는 그대로 사용할 수 있기도 하지만 많은 경우 새로 작성되어야 합니다. 실제로 GAE로 Django 를 포팅(아마도 ORM빼고) 하는 프로젝트가 구글 코드에 (최소한) 두 개나 존재합니다. (필요하시면 google-app-engine-django 와 app-engine-patch 프로젝트를 찾아보세요.) 장고를 사용하여 북마크 공유 사이트를 제작하는 과정을 소개하는 책이 번역되었습니다. 코드를 한 줄 한 줄 독자와 함께 만들어가는 과정 중에, 장고의 다양한 기능들을 소개하는 형식을 취하고 있습니다. 끝까지 따라가신 다면 장고의 기능들 대부분에 대한 설명들을 보실 수 있습니다. 좀 엉뚱하지만 jQuery 를 사용한 Ajax 도 소개하고 있네요. 원서의 장고는 0.96 버전이지만 역자가 현재 버전인 1.0 기준으로 여기 저기 수정해 두었습니다. 원서에는 없는 GAE로 이식한 북마크 공유 사이트 코드와 GAE 의 간단한 사용법을 제공하는 부록도 역자가 추가해 두었습니다. 이 책이 현재 GAE 가 언급된 유일한 한글 책이 아닐까 생각됩니다. 하지만 이 책에는 문제가 몇 가지 있습니다. 첫째, 번역의 수준이 낮습니다. 무슨 뜻일지 고민하게 하는 부분들이 종종 있습니다. 둘째, 교정이 엉망입니다. 편집상의 오류와 코드상의 오류가 너무 많습니다. 셋째, 예제의 소스 코드를 다운로드 할 수 있는 곳을 도무지 찾을 수가 없습니다. 넷째, 역자가 작업한 1.0 으로의 번역작업이 완전하지 않습니다. 최소한 1.0 으로 모두 실행해보지 않은 것으로 보이네요. 다섯째, 이 번역본이 나오기 한달 전쯤 "Django 1.0 Website Development" 라는 제목의 2판이 출간되었습니다.(판을 올리면서 제목도 바꿨네요.) 즉 이 책은 지난 판본을 갖고 1.0 으로 바꾸는 작업을 했는데, 원서는 이미 1.0 으로 바뀐 개정판이 나왔다는 뜻이지요. 그나마 다행인 것은 2판 원서 사이트에서는 소스 코드를 다운로드 할 수 있는 장소를 제공한다는 것입니다. 이 소스 코드를 갖고 번역서를 읽으시는 것도 한 방법입니다. 출판사 사이트에서 다운로드 하기 곤란할 경우를 위해 밑에 파일을 첨부해 둡니다. 관련 포스트:
원서 2판 예제 코드: 6781_Code