Google App Engine에서 Django를 사용하는 이유는 무엇입니까?
Google App Engine (GAE)을 조사 할 때 Django를 사용하는 것이 GAE에서 Python으로 개발하는 데 매우 인기가 있음이 분명합니다. 나는 Django가 왜 그렇게 인기가 있는지 알아보기 위해 웹을 샅샅이 뒤져 Django 사용의 비용과 이점에 대한 정보를 찾았습니다 . GAE에서 Django를 실행 하는 방법과이를 수행하는 다양한 방법에 대한 다양한 소스를 찾을 수 있었지만 Django가 Google에서 제공하는 웹앱 프레임 워크를 사용하는 것보다 왜 더 나은지 에 대한 비교 분석을 찾지 못했습니다 .
명확하게 말하면, GAE에서 Django를 사용하는 것이 Django의 기존 기술 (대부분의 Python 웹 개발자, 의심 할 여지 없음) 또는 Django의 기존 코드 (GAE를 사용하는 것이 포팅 연습에 더 가깝 음)를 가진 개발자에게 유용한 이유가 바로 분명합니다. 그러나 우리 팀은 완전히 새로운 프로젝트에서 사용하기 위해 GAE를 평가하고 있으며 기존 경험은 Django가 아닌 TurboGears에 있습니다.
BigTable 라이브러리가 Django의 ORM을 대체하고 세션 및 인증이 반드시 변경되고 Django의 템플릿 (원하는 경우)이 전체 Django 스택을 사용하지 않고도 사용할 수있는 경우 Django가 개발 팀에 왜 유익한 지 결정하는 것은 매우 어려웠습니다.
마지막으로 Django를 사용하면 나중에 GAE에서 벗어나 탈출을 목표로하는 플랫폼이 필요한 경우 "종료 전략"을 제공 할 수 있다는 장점이 있습니다.
GAE에서 웹 앱을 사용하는 것보다 Django를 사용하는 것이 더 나은 이유 를 지적하는 데 도움을 주신 데 대해 매우 감사하겠습니다 . 나는 또한 Django에 대한 경험이 전혀 없기 때문에 GAE에서 작동하는 작은 기능 및 / 또는 편의성에 대한 정교함도 나에게 중요합니다.
우리는 대부분 사용자에게 실제 웹 사이트를 제공해야 할 때 appengine 인스턴스에서 django를 사용합니다. 훌륭한 템플릿 엔진, URL 라우팅 및 모든 요청 / 응답 / 오류 처리 기능이 내장되어 있습니다. 따라서 매직 orm / admin 항목을 사용할 수없는 경우에도 많은 작업이 수행됩니다.
API 서비스를 위해 우리는 webob
. django가 제공하는 모든 것을 필요로하지 않기 때문에 훨씬 더 가볍기 때문에 어떤 상황에서는 조금 더 빠릅니다.
GAE가 당신에게 옳다고 확신한다면 Django는 아마도 당신에게 올바른 선택이 아닐 것입니다. 두 기술의 강점은 잘 맞지 않습니다. GAE에서 Django의 멋진 조직을 완전히 잃게되며이를 사용하면 bigtable 및 GAE 작동 방식에 실제로 적합하지 않은 코드를 작성하게됩니다.
GAE의 장점은 처음부터 쉽게 확장 할 수있는 코드를 작성하도록하여 뛰어난 확장 성을 확보한다는 것입니다. 제대로 확장되지 않는 많은 작업을 수행 할 수는 없습니다 (물론 확장 성이 떨어지는 코드를 작성할 수는 있지만 함정을 피할 수 있습니다). 단점은 다른 환경을 위해 설계된 Django와 같은 것을 사용하는 경우 프레임 워크 주변에서 코딩을 끝내는 것입니다.
어떤 이유로 든 GAE를 떠나는 자신을 본다면 인프라에 투자하는 것이 문제입니다. bigtable에 대한 코딩은 다른 아키텍처로 이동하기가 더 어렵다는 것을 의미합니다 (아파치 프로젝트가 Hadoop 프로젝트의 HBase 구성 요소를 사용하여이 문제를 해결하기 위해 노력하고 있지만). GAE에서 전환하려면 여전히 많은 작업이 필요합니다.
GAE를 사용하는 동기는 무엇이며 Google 제품이면서 멋진 유행어가 될 수 있습니까? mediatemple의 제안과 같은 것을 사용하여 확장하는 것이 당신에게 잘 작동하지 않을 이유가 있습니까? GAE 확장 방식이 귀하의 애플리케이션에 적합하다고 확신하십니까? 해당 성능 영역에 도달하려면 전용 서버와 비교하여 비용이 어떻습니까? 기존의 부하 분산 된 서버 설정과 비교하여 GAE에서 제공하는 도구를 사용하여 문제를 잘 해결할 수 있습니까?
이 모든 것은 GAE가 제공하는 경계선 어리석은 확장이 절대적으로 필요하지 않는 한 개인적으로 특정 서비스 구조가 프레임 워크를 선택하도록 허용하지 않는 것이 좋습니다. 나는 Django를 좋아하기 때문에 그것을 사용해야한다고 말하고 싶지만 GAE에서는 사용하지 마십시오.
편집 (2010 년 6 월) : 나중에이 주석에 대한 업데이트로 Google은 무료는 아니지만 SQL 스타일 명령을 실행하여 데이터에 대한 보고서를 생성하는 등의 작업을 쉽게 수행 할 수있는 GAE 용 SQL과 유사한 기능을 발표했습니다.
또한 GAE 쿼리 언어가 곧 변경되어 복잡한 쿼리를 훨씬 쉽게 수행 할 수 있습니다. Google I / O 2010의 비디오를보십시오.
또한 Summer of Code 2010 프로젝트 중에 django 코어에 no-sql 지원을 가져 와서 GAE 작업을 훨씬 더 쉽게 할 수있는 작업이 진행 중입니다.
GAE는 호스팅 플랫폼으로 더욱 매력적입니다.
편집 (2011 년 8 월) :
그리고 Google은 가격 구조를 변경하여 대부분의 플랫폼 사용자에게 비용을 대폭 인상했습니다. 잠금 문제는 더 나아졌지 만 (애플리케이션이 충분히 크면 아파치 대안을 배포 할 수 있음) 대부분의 애플리케이션에서 실행중인 서버 또는 VPS 배포가 더 저렴합니다.
빅 데이터 문제가있는 사람은 거의 없습니다. "오, 내 스타트 업이 언젠가는 확장 될지도 몰라"는 빅 데이터 문제가 아닙니다. 지금 물건을 만들고 표준 도구를 사용하여 꺼내십시오.
저는 GAE에서 많은 프로젝트를 수행했습니다. 일부는 장고에 있고 일부는 일반 프레임 워크에 있습니다.
작은 일의 경우 일반적으로 단순성과 신속성을 위해 일반적인 프레임 워크를 사용합니다. 마찬가지로 http://stdicon.com , http://yaml-online-parser.appspot.com/ , 또는 http://text-twist.appspot.com/ .
큰 경우에는 django를 사용하여 멋진 미들웨어와 플러그인을 모두 활용합니다. http://metaward.com 처럼 .
기본적으로 내 리트머스 테스트는 REAL 소프트웨어 프로젝트 를 작성하고 작성하는 데 2 주 이상 걸리 나요? 그렇다면 애드온을 위해 django로 이동하십시오.
프로젝트가 BigTable에 적합하지 않은 경우 신속하게 이식 할 수 있다는 추가 이점이 있습니다 (예 : BigTable이 느리거나 바보입니까? ).
이 모든 답변은 조금 구식이라고 생각합니다.
이제 사용할 수 있습니다 Google Cloud SQL
Django는 널리 사용되는 타사 Python 웹 프레임 워크입니다. Google Cloud SQL과 결합하면 모든 기능이 App Engine에서 실행되는 애플리케이션에서 완전히 지원 될 수 있습니다 . Django와 함께 Google Cloud SQL을 사용하기위한 지원은 Django의 MySQL 백엔드를 래핑하는 커스텀 Django 데이터베이스 백엔드에서 제공됩니다.
https://cloud.google.com/python/django/appengine
한 가지 더 새로운 소식은 PostgreSQL에 대한 베타 지원이 있다는 것입니다.
나는 GAE가 아닌 Django를 사용한 경험이 있습니다. Django에 대한 내 경험으로 볼 때 매우 간단한 설정이었고 배포 프로세스는 웹 프로젝트 측면에서 매우 쉬웠습니다. 사실 저는 파이썬을 배워야 정말 잘 잡을 수 있었지만 결국에는 프로젝트에서 다시 사용할 것입니다. 이것은 거의 2 년 전에 1.0에 도달하기 전에 제 지식이 약간 구식입니다.
플랫폼 변경이 걱정된다면 이것이 더 나은 선택이 될 것입니다.
질문에 답할 수 없지만 web2py를 살펴보고 싶을 수 있습니다. 여러면에서 Django와 유사하지만 데이터베이스 추상화 계층은 GAE에서 작동하며 대부분의 GAE 기능을 지원합니다 (모두는 아니지만 우리가 따라 잡으려고합니다). 이런 식으로 GAE가 훌륭하게 작동하고 그렇지 않으면 코드를 다른 DB (SQLite, MySQL, PostgreSQL, Oracle, MSSQL, FireBird, DB2, Informix, Ingres 및 곧-Sybase 및 MongoDB)로 이동할 수 있습니다. ).
GAE 외부에서 앱을 실행하기로 결정한 경우에도 Django를 사용할 수 있습니다. GAE 웹앱을 사용하면 그다지 운이 좋지 않습니다.
I am still very new to Google App engine development, but the interfaces Django provides do appear much nicer than the default. The benefits will depend on what you are using to run Django on the app engine. The Google App Engine Helper for Django allows you to use the full power of the Google App Engine with some Django functionality on the side.
Django non-rel attempts to provide as much of Django's power as possible, but running on the app-engine for possible extra scalability. In particular, it includes Django models (one of Django's core features), but this is a leaky abstraction due to the differences between relational databases and bigtable. There will most likely be tradeoffs in functionality and efficiency, as well as an increased number of bugs and quirks. Of course, this might be worth it in circumstances like those described in the question, but otherwise would strongly recommend using the helper at the start as then you have the option of moving towards either pure app-engine or Django non-rel later. Also, if you do switch to Django non-rel, your increased knowledge of how app engine works will be useful if the Django abstraction ever breaks - certainly much more useful than knowledge of the quirks/workarounds for Django non-rel if you swap the other way.
참고URL : https://stackoverflow.com/questions/1934914/why-use-django-on-google-app-engine
'code' 카테고리의 다른 글
Chrome 스크립트 디버거에 jquery.js를 무시하도록 지시 할 수 있습니까? (0) | 2020.09.10 |
---|---|
C # /. NET에서 매개 변수를 nullable이 아닌 것으로 표시 하시겠습니까? (0) | 2020.09.10 |
hg outgoing (hg out) 또는 hg incoming (hg in)에 해당하는 git은 무엇입니까? (0) | 2020.09.10 |
정렬 순서가 지정되지 않은 경우 MongoDB는 레코드를 어떻게 정렬합니까? (0) | 2020.09.10 |
Docker 용 기본 이미지를 어떻게 만들 수 있습니까? (0) | 2020.09.10 |