본문 바로가기

IT/Hot Issue, Services

Django 웹프레임웍

요즘 새 스팍스 홈페이지를 만들면서 Python 기반의 웹프레임웍인 Django를 사용하고 있는데, 정말 편리하고 깔끔하다. 프레임웍 기반은 Model - View - Template의 개념으로 각각 MVC 모델의 Model - Controller - View에 해당한다고 보면 된다. (View가 로직·동작과 template에 보여줄 내용을 결정한다. Template은 간단한 if, for 정도의 프로그래밍이 가능한 스킨이라고 보면 된다) DB 백엔드가 완벽하게 추상화되어 있어 쿼리문을 전혀 쓸 필요가 없고, 프로젝트 설정파일만 바꿔주면 백엔드를 언제든지 교체할 수 있다. (이때 존재하는 데이터의 백업 등은 어떻게 하는지 아직 잘 모르겠다)

다른 것보다도, 웹프로그래밍에 처음 입문하는 사람들이 가장 쉽게 접하는, C와 비슷한 스타일의 php에 요즘 질려 있던 터라 Python의 깔끔함을 그대로 이어가는 것이 매우 맘에 들었다. Python 자체가 원래부터 디렉토리 단위로 만들어지는 package라는 개념과 namespace가 명확히 구분되는 특징을 가지고 있었던 데다, 정규표현식을 이용한 URL 패턴 매칭이 접목되어 매우 높은 자유도로 URL 형식을 정의할 수 있다. 또한 설치 환경마다 매번 magic quotation, safe mode 등을 고려하여야 했던 PHP와 달리 그렇게 보안 취약점을 만들 수 있는 부분이 없는 것도 좋다. (PHP6에서는 이런 단점들이 개선된다고 하니 그또한 나름대로 기대할 만하다.)

또 하나의 장점은, 웹개발할 때 보통 DB 스키마를 정의해놓고 html과 로직 등을 합치는 과정에서 실제 데이터가 어떻게 보일지 예시로 넣어보는 게 은근슬쩍 귀찮은데, admin 모드를 제공하여 model에 정의된 필드 형식에 맞도록 적절한 입력폼이 주어진다는 사실이다. 따라서 방문자에게 보여질 model과 view, template을 만드는 것만으로 별도의 관리자 모드를 제작할 필요 없이 내장된 것만으로도 블로그를 만들 수 있을 정도다. (물론 위지윅 에디터 같은 건 아니지만...)

한 가지 더, django에서 사용하기 위해 정의한 model 클래스들은, 웹사이트가 아닌 전혀 다른 프로그램에서 적당히 import해오기만 하면 그대로 사용이 가능하다. 따라서 model 객체를 만들어 사용하면, 그 model이 속한 DB 설정에 따라 알아서 쿼리를 수행해주고, 우리는 그냥 그런 오브젝트가 원래 있었던 것처럼 쓰기만 하면 된다. 따라서 웹사이트의 데이터를 다른 프로그램에 매우 쉽게 이식할 수 있다는 장점이 있다. (이것은 백업·복원과 같은 작업에 큰 도움을 줄 수 있을 것이다)

아무튼 이 Django 프로젝트가 꾸준히 발전하였으면 좋겠다. Python을 Apache에 모듈로 올리면 속도가 좀 느리다는 단점이 있긴 하지만 앞으로 FastCGI 등이 일반화되면 성능도 크게 뒤떨어지지는 않을 것 같다. (PHP6도 fCGI를 기본 지원한다) 사람들이 php와 asp, jsp의 세계에서 벗어나 보다 다양한 웹프레임웍에 관심을 돌려본다면 django와 같이 재미있는 물건들을 많이 발견할 수 있을 것이다. (RoR은 이미 너무 유명해져 버렸나...-_-)