장고(Django)는 파이썬으로 작성된 오픈 소스 웹 애플리케이션 프레임워크로, 모델 - 뷰 - 컨트롤러(MVC) 패턴을 따르고 있습니다.

고도의 데이터베이스 기반 웹사이트를 작성하는 데 있어서 수고를 더는 것이 장고의 주된 목표입니다.

장고는 컴포넌트의 재사용성과 플러그인화 가능성, 빠른 개발 등을 강조하고 있습니다.


1. Django의 역사

  장고(Django)는 2003년과 2004년에 로렌스 저널-월드라는 신문사의 인턴 웹 프로그래머였던 에이드리안 홀로바티와 사이먼 윌리슨이 파이썬 이용해 애플리케이션을 만들기 시작하면서 처음 개발되었습니다. 홀로바티와 윌리슨은 PHP가 규마가 큰 웹사이트에 적합하지 않다고 생각하였고 이를 계기로 파이썬을 웹 개발 언어로 사용하기로 결심했습니다. 하지만 규모가 큰 웹 개발에 적합한 파이썬 도구가 없다는 것을 깨닫고 그들은 장고를 개발하게 되었습니다.




2. Django의 특징

  Django는 Python을 기반으로 만들어진 웹 프레임워크[각주:1]입니다. 웹 개발에서 번거로운 요소들을 새로 개발할 필요 없이 내장된 기능만을 이용해 빠른 개발을 할 수 있다는 장점이 있습니다. Django의 대표적인 특징을 몇 가지 정리해보도록 하겠습니다.


MVC 패턴 기반 MTV

  장고는 MVC(Model - View - Controller)를 기반으로 한 프레임워크입니다. 하지만 장고에서는 View를 Template, Controller를 View라고 부릅니다. 장고에서 View는 데이터를 가져오고 변형하는 컴포넌트인 반면에 Template는 데이터를 사용자에게 보여주는 컴포넌트입니다. 그래서 장고를 흔히 MTV(Model - Template - View) 프레임워크라고 부르기도 합니다.


우아한 URL 설계

  웹 프로그래밍을 할 때 URL 디자인은 필수적인 요소입니다. 장고에서는 유연하면서도 강력한 기능을 제공합니다. 장고는 파이썬 프레임워크의 일반적인 우아한 URL 방식을 채택하여 다른 프레임워크에서도 사용할 수 있습니다. 또한 URL 형태를 개발자가 직접 결정할 수 있고, 각 URL 형태를 파이썬 함수에 직접 연결하도록 되어 있어 개발이 편리하고 이해하기도 쉽습니다.


관리자 웹 인터페이스 제공

  보통 웹 어플리케이션 작성에 있어서 관리자 인터페이스는 꼭 필요한 것이면서도, 일반적인 기능과도 많이 중복되어 구현이 번거롭던 것이 사실입니다. 사용자관리, 사용자 그룹관리, 사용자 별 권한에 대한 것 뿐 아니라, 각각의 모델 객체에 대해서, 목록/추가/삭제/변경의 기능이 관리자 인터페이스에서 모두 제공됩니다. 이는 특히, 데이터베이스, 웹 어플리케이션을 실험적으로 작성하기 좋습니다. 데이터베이스 모델링만으로 웹 어플리케이션의 작동을 실험해 볼 수 있습니다.


객체 관계 매핑(ORM; Object-Relational Mapping)

  장고의 객체 관계 매핑은 데이터베이스 시스템과 데이터 모델을 연결시키는 다리와 같은 역할을 합니다. 이런 ORM 기능을 통해 다양한 데이터베이스 시스템을 지원하고 있으며, 이미 구축한 데이터베이스 시스템을 다른 데이터베이스로 변경하는 경우에도 설정을 조금만 변경하면 가능하도록 쉽고 편리해졌습니다.


자체 템플릿 시스템

  장고는 내부적으로 확장이 가능하고 디자인이 쉬운 강력한 템플릿 시스템을 갖고 있습니다. 이를 통해 화면 디자인과 로직에 대한 코딩을 분리하여 독립적으로 개발 진행이 가능합니다. 장고의 템플릿 시스템은 HTML과 같은 텍스트형 언어를 쉽게 다룰 수 있도록 개발되었습니다. 


캐시 시스템

  동적인 페이지를 만들기 위해서 데이터베이스 쿼리를 수행하고 템플릿을 해석하며, 관련 로직을 실행하서 페이지를 생성하는 일은 서버에 엄청난 부하를 주는 작업입니다. 그래서 캐시 시스템을 사용하여 자주 이용되는 내용을 저장해 두었다가 재사용하는 것이 성능을 높여주는 방법입니다.

  장고의 캐시 시스템은 캐시용 페이지를 메모리, 데이터베이스 내부, 파일 시스템 중 아무 곳에나 저장할 수 있습니다. 또한 캐시 단위를 페이지에서부터 사이트 전체 또는 특정 뷰의 결과, 템플릿의 일부 영역만을 지정하여 저장해 둘 수도 있습니다.


다국어 지원

  장고는 동일한 소스코드를 다른 나라에서도 사용할 수 있도록 텍스트의 번역, 날짜/시간/숫자의 포맷, 타임존의 지정 등과 같은 다국어 환경을 제공합니다. 간단한 작업만으로 메시지를 하나 이상의 언어로 번역해주기 때문에 다국어를 제공하는 웹 사이트에 아주 유용하게 사용할 수 있습니다.


풍부한 개발 환경

  장고는 개발에 도움이 될 수 있는 여러 기능을 제공합니다. 대표적으로 테스트용 웹 서버를 포함하고 있어서 개발 과정에서 아파치 등의 사용 웹 서버가 없어도 테스트를 진행할 수 있습니다. 또한 디버깅 모드를 사용할 경우에는 에러를 쉽게 파악하고 해결할 수 있도록 아주 상세한 메시지를 보여줍니다.


소스 변경사항 자동 반영

  장고에서는 *.py 파일의 변경 여부를 감시하고 있다가 변경이 되면 실행 파일에 변경 내역을 바로 반영해줍니다. 그래서 장고 테스트용 웹 서버를 실행 중인 상태에서 소스 파일을 수정할 경우에도 웹 서버를 다시 시작할 필요 없이 자동으로 새로운 파일이 반영됩니다.



. References


  1. 웹 프레임워크는 다양한 웹 프로그램들을 손쉽게 만드는 기반인 플랫폼의 개념으로, 이를 활용하면 CMS와 같은 복잡한 웹 프로그램을 비교적 적은 노력을 들여서 만들 수 있습니다. [본문으로]

+ Recent posts