 |
파이썬 마을 우리나라 파이썬 사용자들의 이야기 마을
|
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
sabzil
가입: 올린 글: 2
|
올려짐: 2007 10월 11 2:44 am 주제: 웹 프레임워크에 대한 고민과 비교 |
|
|
매번 여기서 정보만 얻어가다가 한번 남겨봅니다^^;
우선 개발 배경상황은 이렇습니다.
1.Web으로 DB의 기본적인 처리를 할 수 있을 것
2.콘솔 커맨드를 지원할 것 (콘솔명령 실행으로 DB처리를 할수있어야함)
3.추후 잦은 기능 수정(Feature 추가)
4.다수의, 많은 용량의 데이터 파일(1테라)을 스크립트를 통해 정리해야함.
5.윈도우 UI를 가진 프로그램으로 드래그를 통해 데이터를 관리할 것
6.윈도우 UI는 3개의 운영체제에서 동작되어야 한다. (Linux, Window, Mac)
7.여러 프로젝트를 관리하는 프로그램으로, 프로젝트마다 필요한 정보(필드)와 시되는 양식과 코드체계가 다를 수 있다.
....자 상황적으로,
기존에 만들던 APP와는 약간 다른 종류의 괴롭힘들이 있는데요.
3번의 확장기능과 2번의 콘솔커맨드, 6번의 멀티플랫폼 문제덕에,
긴말 할것 없이 언어는 Python이 되었구요.
사유는 한번 DB Class를 만들어놓으면 쉽게 WEB이든 UI APP든, 콘솔이든 한번 만들어 둔것으로 재사용될수 있어야 했기 때문에, Python의 Module을 이용해야 했고, 확장기능은 기존의 코어소스를 전혀 건들이지 않고, 동적으로 새로 등록된 py파일을 읽어서 로딩하고 중간에 함수포인터로 실행되어야 했기 때문입니다.
멀티플랫폼 UI는, WxPython을 사용하고자 했으나, 같은 코드에서 특정 기능에서 조금씩 UI가 깨지거나 보이지 않게 되는 문제(동적으로 위젯을 추가하는 등의 컨트롤을 해야할 경우)가 있으므로, PyQT로 가고 있습니다.
전체적으로 외부에서 똑같은 수준의 배치 스크립팅이 되어야 했으므로;;
콘솔 커맨드 형태의 실행이 필요했던거구요..
자.. 다시 본론의 요플레로 돌아와서.
Web Framework에 대해서 고민을 하게 되었습니다.
요구조건은 아래와 같습니다.
1. ORM의 지원, Apache의 지원
2. Join과 서브쿼리, 그룹을 많이 사용할 것으로, 이것들을 디테일하게 컨트롤 할수있거나, 안되면 손수작성한 SQL코드가 직접적으로 수행되어야함.
3. 페이지 디자인은 웹디자이너가 작업
4. 서버 1대에서 실시간 동접 100 이상을 처리할 수 있는 퍼포먼스.
우선적으로 검토해본 후보는 아래와 같습니다.
Django, TurboGears, Pylons
1. Django
유명세덕에 가장 우선적으로 알아본 프레임 워크입니다.
1.1 ORM 당연 지원되고, 코딩도 쉽고 간결한 편입니다.
퍼포먼스도 좋은 것 같았고요.
하지만, 마음에 걸린 단점은, 문서가 적습니다. (그래도 이해할 수 있습니다!)
1.2 무엇보다도 Django를 포기할 수 없었던 이유라면 HTML Template의 제조공정이 매우 불편했다는거죠.
다 된 디자인위에 프로그래머가 {{}} 코드를 씌운다면 모를까..
변화무쌍한 작업에서 디자이너가 디자인을 변경하면 그 위치대로 {{}}를 다시 써주어야 한다는게 가슴아프더군요.
추세가 CSS로 간다지만, 기존 작업해둔 것들에서 테이블이 바껴버리면 괴롭더라구요.
어느정도 블로그도 만들고 테스트하다가, 다음 프레임워크로 갈아탔습니다.
2. TurboGears
디자인 탬플릿 때문에 Kid 녀석을 보고, 고른 두번째 프레임워크입니다.
모듈의 조합으로 만들어진 프레임워크라서 모듈 별로 문서도 어느정도 괜찮게 있습니다.
2.1 Kid - XML스타일의 HTML 코드를 지원합니다.
디자이너가 수정해도 프로그램이 들어간 태그는 보이지 않고, 수정해도 그 위치에서 사라지지 않습니다.
굳이 웹서버에서 돌려서 보지 않더라도, 소스를 익스플로러에서 열어서 바로 봐도 잘보입니다.
2.2 SQLObject - ORM지원하고 사용하기 쉽고, 전체적으로 괜찮습니다.
하지만 통계에서 필요한 등등의 복잡한 Join과 데이터구조를 표현하기에는 조금 역부족이였던것 같습니다.
2.3 Cherry - 궁극적으로 다음 프레임워크로 갈수밖에 없었던 아주 사소한 이유?를 제공해준 장본인입니다.
고친 코드의 수행을 위해서 가상 테스트 서버를 사용했는데, 제 리룩스 노트북에서 source changed Reloding되는데 25초 걸리더군요.(메롬 T5500 1.8ghz)
한번 고치고 대기 시간이 너무 오래 걸려서 난감하더군요. 제 놋북탓도 있겠지만..
2.4 Turbogears 2. 0 - 지금의 버전이 1.0.x 일텐데 다음버전을 보니 충격적이더군요.
아무래도 지속적으로 유지보수를 해야 했기 때문에, 다음 버전을 미리 봤는데 모듈이 상당부분이 바껴있더군요 ㅡ,.ㅡ;
SQLObject -> Sqlalchemy, Kid -> Genshi..
그래서 그냥 갈아탔습니다..
3. Pylons
Cherry + Genshi + Sqlalchemy로 걍 조합해서 쓸까하다가 우연히 찾은 프레임워크
3.1 Paster - 웹 컨트롤러로 만족스럽습니다. 다 필요없고 reloading 시간이 3초 였으니까요 -_-;
그리고 컨트롤러 코딩스타일도 다른 프레임워크와 비슷하고 괜찮더군요.
3.2 Sqlalchemy - 처음 딱 사용해보면 다른 ORM모듈에 비해서 무쟈게 불편합니다. 처음 구조 이해하기가 어렵습니다.
하지만, 정말 다양한 쿼리 조합을 지원합니다. 익숙해지면, 직접 SQL을 쓰는 것 보다 훨씬 파이쏘닉해져서 논리적이 됩니다.
예를 들면 Advanced Search 기능같은데서 where쿼리가 무쟈게 붙는데 논리적으로 & 연산으로 줄줄이 쿼리가 조합이 됩니다.
시행착오만 거치면 직접 SQL Query String을 조합해서 쓰는 것보다 훨씬 논리적임과 동시에 편리해집니다. 실행될때 결과 쿼리문도 확인해볼 수 있구요.
하지만 익숙해지기전까지는 기존의 룰과는 상당히 달라서 고통이라는 것.
대신 방대한량의 문서가 있습니다 -0-
3.3 Genshi - Kid와 비슷하지만 Kid보다는 속도가 상당히 빠릅니다. (2~3배)
그리고 일반 스트링에서도 파싱해서 탬플릿을 쓸수 있습니다. 이상하게 데코레이터써서 상황에따라 템플릿바꾸기 불편하게 하는것보다는 전 그냥 Genshi의 코딩스타일이 맘에 들더군요. 그리고 문서가 좀더 많아서 좋은것 같습니다.
= 결론 =
이렇게 해서 저는 Pylons에서 Sqlalchemy와 Genshi, Paster를 쓰고 있습니다.
나름 만족해서 쓰구있구요 ORM과 비ORM을 번갈아 쓸 수 있어서 큰 장점인것 같습니다. (때로는 ORM은 불필요한 쿼리실행이 많습니다.)
결론적으로 제가 Pylons을 쓰고 있기때문에 의견이 주관적으로 많이 기울었지만, 다른 프레임워크의 테스트를 통해서 여기가지 왔기때문에 시간소모가 많았고, 이런 시행착오가 있었다는 정도를 알려드리고 싶었습니다^^;
블로그나 일상적인 웹 작업에서는 Django나 Turbogears가 작업속도와 코딩의 간결성 면에서 유리할수 있겠지만, Join과 ManyToMany가 난무하는 다소 복잡한 구조의 DB작업에서는 Sqlalchemy의 손을 들어주고 싶습니다.
감사합니다! |
|
| 위로 |
|
 |
geneven

가입: 올린 글: 39
|
올려짐: 2007 10월 13 10:32 pm 주제: |
|
|
아직 대중화가 안된걸까요? 파이썬 웹프레임워크에 대한 이야기는 드문드문 올라오네요. 예전에 PHP로 웹페이지를 만들어본적이 있었습니다(실무에서). 여러사람의 작업코드를 보았는데, DB에 접근하는것이 제각각, HTML생성하는 부분도 제각각, 마치 매번 새로운 언어 하나를 배우는 듯한 짜증이 있었습니다. 그러다가 루비온레일즈랑 장고를 보고 "이거다"싶었는데, 때마침 일을 그만두고 복학을 하는 바람에 아직 해보지 못했네요.
PHP는 맨날 보안사고 터지고 여기저기서 욕을 얻어먹는데, 우리나라의 많은 웹프로그래머들도 장고같은 파이썬 웹프레임워크에 관심좀 가졌으면 좋겠습니다. 아마 한글로 된 장고책이 나온다고 들었는데 아직인가? |
|
| 위로 |
|
 |
falsetru

가입: 올린 글: 1419
|
올려짐: 2007 10월 13 10:57 pm 주제: |
|
|
| geneven 씀: | | 아마 한글로 된 장고책이 나온다고 들었는데 아직인가? |
f님에 의하면 안쓰신다고;;; =3=3 |
|
| 위로 |
|
 |
nakada

가입: 올린 글: 68
|
올려짐: 2007 10월 14 5:15 pm 주제: Django 배우는 중이라 |
|
|
다른 웹프레임웍은 써보지도 않았으니 머라 말할 처지는 못되구요 =_=
Django 도 지금까지로는 나름 좋은거 같아요
단지 문서가 좀...
설치하고 기본적인거 까지는 기본문서 보고 했는데
어플이랑 만들려고 하는데 =_= 에궁
참고할만한 소스가 좀 있었으면 금방 할거 같아요 ㅠ.ㅜ |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
|