FAQ: 일반

왜 이 프로젝트가 존재하나요?

Django는 매우 실용적인 필요에 의해 만들어졌습니다. 신문사 웹 오퍼레이션인 World Online은 저널리즘 데드라인에 맞추어 집약적인 웹 애플리케이션을 구축하는 책임을 지고 있습니다. 숨가쁘게 돌아가는 뉴스룸에서, World Online은 복잡한 웹 애플리케이션의 구상에서 대외적인 배포까지에 몇 시간이 채 걸리지 않는 경우가 종종 있습니다.

한편, World Online의 웹 개발자들은 웹 개발의 모범 사례를 지속적이고도 철저하게 따르고 있습니다.

2003년 가을에 들어, World Online의 개발자(Adrian Holovaty와 Simon Willison)들은 PHP를 버리고 파이썬을 웹 사이트 개발에 사용하기 시작했습니다. 그들은 Lawrence.com과 같이 집약적이고 두터운 상호작용을 하는 사이트를 구축하면서 웹 개발의 일반적인 틀(framework)을 만들어내기 시작했고, 점점 더 빨리 개발을 해나갔습니다. 이 프레임워크를 2년 이상 지속적으로 고치고, 개선하였습니다.

2005년 여름에 들어, World Online은 그 결과물인 Django를 오픈 소스로 내놓기로 결정했습니다. Django는 Apache, Python, 그리고 PostgreSQL과 같은 오픈 소스 프로젝트 없이는 만들어지지 못했을 것인데, 이것을 다시 오픈 소스 커뮤니티에 환원할 수 있게 되어 기쁩니다.

“Django”는 어떤 의미이며, 어떻게 발음하나요?

Django는 Django Reinhardt라는 1930년대에서 1950년대 초반에 활동한 집시 재즈 기타리스트의 이름을 딴 것입니다. 오늘날, 그는 최고의 기타리스트 중 한 명으로 불리고 있습니다.

그의 음악을 들어보신다면 좋아하게 될 겁니다.

장고는 JANG-oh로 발음합니다. FANG-oh와 각운을 이룹니다. “D”는 묵음입니다.

발음 듣기도 가능합니다.

Django는 안정적인가요?

그렇습니다. World Online는 Django를 삼 년 이상 사용해오고 있습니다. Django로 구축한 사이트는 시간 당 백만 건 이상의 히트와 일시적인 방문자 급증을 견뎌왔습니다. 네, 상당히 안정적입니다.

Django는 규모변경이 용이한가요?

예. 개발 기간에 따른 비용보다는 하드웨어가 값이 싸기 때문에, Django는 하드웨어를 많이 쓸수록 성능이 더 좋아지도록 디자인되었습니다.

Django는 “shared-nothing” 아키텍처를 채택했는데, 이는 데이터베이스 서버, 캐시 서버 및 웹/애플리케이션 서버 등 어떠한 수준에서도 하드웨어를 추가할 수 있음을 의미합니다.

프레임워크는 데이터베이스 계층 및 애플리케이션 계층과 같은 구성요소를 깔끔하게 분리하였으며, 간단하면서도 강력한 캐시 프레임워크를 탑재하였습니다.

배후에는 누가 있나요?

Django는 미국 캔사스 주 로렌스의 World Online에서 처음 만들었습니다. 지금은 국제적인 자원봉사 팀에 의해 진행되며 커미터 목록에서 그 구성원을 확인하실 수 있습니다.

어떤 사이트에서 Django를 사용하나요?

DjangoSites.org에 장고로 만들어진 사이트의 목록이 있는데, 계속 길어지고 있습니다.

Django는 MVC 프레임워크이면서도, 컨트롤러를 “뷰”라고 부르고, 뷰를 “템플릿”이라고 부릅니다. 왜 표준적인 이름을 사용하지 않는 건가요?

사실, 표준적인 이름에 대해서는 이론이 있습니다.

MVC에 대한 우리의 견해에 따르면, “뷰”는 사용자에게 표출되는 자료를 기술합니다. 자료가 어떻게 보이느냐가 아니라, 어떤 자료를 보여줄 것인지가 필수적인 부분입니다. 뷰는 어느 데이터를 볼 것인지를 기술하는 것이지, 그것을 어떻게 볼 것인지를 기술하는 것이 아닙니다. 이것은 미묘한 차이입니다.

즉, 우리의 경우에는 “뷰”는 특정 URL에 대한 파이썬 콜백 함수인데, 이는 그러한 콜백 함수가 바로 어느 자료를 보여줄 것인지에 대하여 기술하기 때문입니다.

더 나아가, 내용과 형식을 분리하는 것은 민감한 부분이며 여기에서 템플릿이 유래합니다. 장고에서는, “뷰”는 어떠한 자료를 보여줄 것인지를 기술하지만, 자료가 어떻게 보일 것인가에 대해서는 템플릿에 위임하는 것이 보통입니다.

그렇다면 “컨트롤러”는 어디에 들어맞는 것일까요? Django에서는 프레임워크 자체, 즉 Django URL 구성에 따라서 적절한 뷰에 대한 요청을 보내는 기계적인 부분이 될 것입니다.

두문자어를 굳이 만들어내자면, Django는 “MTV” 프레임워크라 하겠습니다. 각각의 대문자는 “model”, “template” 그리고 “view”를 나타냅니다. 이러한 얼개가 보다 타당합니다.

이름이야 어찌됐건 결국 일을 제대로 처리하느냐가 중요한 것이고, Django는 우리에게 있어 가장 논리적인 방법으로 일을 처리해주고 있습니다.

<프레임워크 X>에는 <Y 기능>이 있는데, Django에는 왜 없나요?

대단한 프레임워크들이 많이 있는 것도 알고 있고, 아이디어를 빌려오는 것을 꺼리지도 않습니다. 하지만 Django는 현 상태에 불만이 있어서 개발을 하는 것이지, “<X 프레임워크>에 좋은 기능이 있기 때문에” Django에도 그러한 기능을 추가해야한다는 것이 기능을 추가해야 할 만한 이유가 되지는 못함을 알아주시기 바랍니다.

좋은 파이썬 라이브러리를 두고, 굳이 바닥에서부터 Django를 만든 이유가 무엇인가요?

몇 년 전에 Django를 처음 만들 때만 해도, Adrian과 Simon은 파이썬에서 사용할 수 있는 다양한 웹 프레임워크를 조사하는 데에 시간을 들였습니다.

우리가 보기에는, 그 중에 완전히 마음에 드는 것이 없었습니다.

우리는 까다롭습니다. 혹자는 완벽주의자라고 할 지도 모르겠습니다.

오픈 소스 라이브러리 가운데는, 우리가 이미 구현한 것들과 같은 것들이 여럿 있었습니다. 이를 통해 다른 사람들도 비슷한 문제를 비슷한 방법으로 해결하려한다는 것을 재확인하였지만, 외부 코드를 통합하기에는 너무 늦어버렸습니다. 우리는 이미 구현과 테스트를 마치고 여러 프로덕션 환경에 구성을 했고, 우리의 코드가 우리가 필요하는 것을 잘 충족시켰습니다.

하지만 대부분의 경우에, 기존의 프레임워크 및 도구들은 역시나 초보적이고, 견디기 힘든 치명적인 결함을 안고 있었습니다. 우리의 철학에 100% 들어맞는 도구는 없었습니다.

우리는 까다롭거든요.

디자인 철학 페이지에 우리의 철학을 문서로 남겨두었습니다.

Django는 컨텐트 관리 시스템(CMS)인가요?

아니오, Django는 CMS가 아닐 뿐더러, 어떠한 종류의 “턴키 제품”도 아닙니다. 웹 프레임워크로서 웹 사이트를 구축할 수 있게 해주는 프로그래밍 도구입니다.

예컨대, Django를 Drupal 등과 비교하는 것은 적절치 못한데, 이는 Django가 Drupal 같은 것을 만들어내기 위해 쓰이는 것이기 때문입니다.

물론 Django에서 자동으로 만들어내는 admin 사이트는 멋지고 시간도 아껴주기는 하지만, admin 사이트는 Django 프레임워크의 일개 모듈에 불과합니다. 게다가, Django가 “CMS-y” 앱 같은 것을 만들어내기에 특별히 편리하다고 해서, 그것이 “비 CMS-y” 앱(그게 뭐가 되었든!)을 만들기에 부적당함을 의미하지는 않습니다.

Django 문서를 오프라인으로 읽고 싶은데, 어떻게 다운로드하나요?

Django 문서는 Django의 tarball 릴리스의 docs 디렉토리에 있습니다. 이 문서는 reST(reStructuredText) 형식으로 되어 있으며, 각각의 텍스트 파일은 공식 Django 사이트의 각 페이지에 해당합니다.

문서는 리비전 컨트롤에 저장되어 있으므로, 코드의 변경사항을 살펴보듯이 문서의 변경사항을 확인할 수 있습니다.

기술적으로는, Django에 대한 문서는 이러한 reST 문서의 최신 개발 버전으로부터 만들어지므로, Django 사이트에 있는 문서가 최종 Django 릴리스에 있는 것보다 더 많은 정보를 제공할 수도 있습니다.

Django 개발자를 고용하고 싶은데 어디에서 찾을 수 있나요?

개발자 구직 페이지의 Django 개발자 목록을 참고하시기 바랍니다.

http://djangogigs.com/에 구인 광고를 낼 수도 있습니다. Django를 다룰 수 있는 사람을 지역 내에서 찾고자 한다면, http://djangopeople.net/을 살펴보세요.