Google App Engine에서 Django를 사용하는 이유는 무엇입니까?


88

Google App Engine (GAE)을 조사 할 때 Django를 사용하는 것이 GAE에서 Python으로 개발하는 데 매우 인기가 있음이 분명합니다. 나는 Django를 사용하는 비용과 이점에 대한 정보를 찾기 위해 웹을 샅샅이 뒤져 그것이 그렇게 인기가 있는지 알아 보았습니다 . GAE에서 Django를 실행 하는 방법과이를 수행하는 다양한 방법에 대한 다양한 소스를 찾을 수 있었지만 Google에서 제공하는 웹앱 프레임 워크를 사용하는 것보다 Django가 더 바람직한 이유 에 대한 비교 분석을 찾지 못했습니다 .

명확하게 말하면, GAE에서 Django를 사용하는 것이 Django의 기존 기술 (대부분의 Python 웹 개발자, 의심 할 여지 없음) 또는 Django의 기존 코드 (GAE 사용이 포팅 연습에 더 가깝 음)를 가진 개발자에게 유용한 이유가 바로 분명합니다. 그러나 우리 팀은 완전히 새로운 프로젝트에 사용하기 위해 GAE를 평가하고 있으며 기존 경험은 Django가 아닌 TurboGears에 있습니다.

BigTable 라이브러리가 Django의 ORM을 대체하고 세션 및 인증이 반드시 변경되고 Django의 템플릿 (원하는 경우)이 전체 Django 스택을 사용하지 않고도 사용할 수있는 경우 Django가 개발 팀에 왜 유익한 지 결정하는 것은 매우 어려웠습니다.

마지막으로 Django를 사용하면 나중에 GAE에서 벗어나 탈출을 목표로하는 플랫폼이 필요한 경우 "종료 전략"을 제공 할 수 있다는 이점이 있습니다.

Django를 사용하는 것이 GAE에서 webapp을 사용하는 것보다 더 나은 이유 를 지적하는 데 도움을 주신 데 대해 매우 감사하겠습니다 . 나는 또한 Django에 대한 경험이 전혀 없기 때문에 GAE에서 작동하는 작은 기능 및 / 또는 편의성에 대한 정교함도 나에게 가치가 있습니다.


이런 쓰레기 테리 브래드쇼가 코드를 씁니까?
Woot4Moo 2009

4
Django는 굉장하기 때문에 유익합니다. 그게 다야. :)
jathanism 2009

저는 Google 앱 엔진도 처음 사용하며 2018 년에도 매우 잘 구성된 질문입니다 (Django ORM은 GAE에서 훨씬 더 잘 지원되는 것 같습니다). :)
Divij Sehgal

답변:


19

우리는 대부분 사용자에게 실제 웹 사이트를 제공해야 할 때 appengine 인스턴스에서 django를 사용합니다. 훌륭한 템플릿 엔진, URL 라우팅 및 모든 요청 / 응답 / 오류 처리 기능이 내장되어 있습니다. 따라서 매직 orm / admin 항목을 사용할 수없는 경우에도 많은 작업이 수행됩니다.

API 서비스를 위해 우리는 webob. django가 제공하는 모든 것을 필요로하지 않기 때문에 훨씬 더 가볍기 때문에 어떤 상황에서는 조금 더 빠릅니다.


1
Koen에게 감사합니다. Django의 매력에 대한 내 혼란의 일부는 URL 라우팅과 요청 / 응답 / 오류 처리도 제공된 웹앱의 기능이고 템플릿 엔진은 Django없이 웹앱과 함께 사용할 수 있다는 생각에서 비롯되었습니다. 내가 잘못 했나? Django는 웹앱 프레임 워크보다 이러한 서비스를 더 잘 제공합니까?
Travis Bradshaw

그들은 장고에서 더 광범위하고 유연합니다. 따라서 실제로 필요한 경우 더 좋습니다. :-)
Koen Bok

2
이것이 제가 찾고있는 답이라고 생각합니다! Django는 웹앱과 대체로 중복되지만 Django가 공유하는 기능은 더 유연하고 강력한 방식으로 수행됩니다. 확실히 "마진에"결정된 것처럼 보이지만 다른 모든 제안과 귀하의 제안이 설득력있는 답변을 제공한다고 생각합니다. 감사.
Travis Bradshaw

1
C로 작성된 Python 모듈도 지원되지 않습니다.
Ryu_hayabusa

51

GAE가 당신에게 옳다고 확신한다면 Django는 아마도 당신에게 올바른 선택이 아닐 것입니다. 두 기술의 강점은 잘 맞지 않습니다. GAE에서 Django의 멋진 orm을 완전히 잃게되며,이를 사용하면 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를 평가하고 있습니다. 무료로 시작한 다음 매우 세분화 된 비용 모델로 점진적으로 확장하는 기능은 매우 매력적입니다. 또한 향후 GAE에서 이전하거나 마이그레이션 할 필요가 없으며이 프로젝트에 대한 플랫폼 종속이 허용됩니다. 이 질문을 게시하기 전에 읽고 조사를 통해 배운 내용을 상당히 포괄적으로 이해하기 위해 주로 질문에 "종료 전략"주석을 포함했습니다. 다시 한 번 감사드립니다!
Travis Bradshaw

개발 시간 비용을 어떻게 평가하십니까? Django의 좋은 점 중 하나는 Bigtable에서보다 데이터 모델 정의에 대해 걱정하는 시간이 적다는 것입니다. Bigtable은 사용하기 전에 사용에 대해 훨씬 더 명확하게해야합니다. 특정 쿼리는 "일반"SQL을 사용하면 훨씬 더 쉽습니다.
Paul McMillan

3
동전을 너무 과도하게 집어 넣지 않도록주의하십시오. 무료는 좋지만 서비스는 빠르게 실제 비용이 듭니다. "무료"수준의 서비스를 사용하는 경우 이미 비용을 지불하고있는 다른 서버 / 호스팅에서 호스팅하십시오. 비 무료 수준의 서비스에 들어가는 경우 나중에 쉽게 확장 할 수있는 VPS의 월 $ 20는 비용면에서 소음에 있습니다.
Paul McMillan

11
tbradshaw, 데이터 세트에 대해 임시 보고서를 실행해야하는 빈도를 고려하는 것을 잊지 마십시오 . 저는 성장하는 소셜 애플리케이션에 참여하고 있으며 GAE는 점점 더 발전하고 있습니다. 악몽이라고 말하지는 않겠지 만 데이터에서 지식을 추출하는 것은 매우 리소스 집약적입니다. Google이 오래된 로그를 제거하고 모든 데이터를 스윕하는 데 필요한 극도의 길이 사이에서보고 방식이 SQL db보다 훨씬 비쌉니다. 그것은 시작할 때 고려하지 않은 비용입니다. 둘째, 실제로 성장하고 돈을 벌기 시작하면 백업과 관련하여 잃어버린 통제가 요인입니다.
JasonSmith 2009

2
잠금 문제에 대해서는 Google App Engine 클론 인 AppScale을 확인하세요. 우리는 GAE가 처음 출시 된 이후로 플랫폼에서 작업 해 왔으며 프로덕션 Python 및 Java 애플리케이션을 위해 많은 사용자가 있습니다. 실행중인 머신에 직접 액세스 할 수 있으므로 인프라를 더 많이 제어 할 수 있습니다. github.com/AppScale/appscale.git
Navraj Chohan 2014-02-17

16

저는 GAE에서 많은 프로젝트를 수행했습니다. 일부는 장고에 있고 일부는 일반 프레임 워크에 있습니다.

작은 일의 경우 일반적으로 단순성과 신속성을 위해 일반적인 프레임 워크를 사용합니다. 마찬가지로 http://stdicon.com , http://yaml-online-parser.appspot.com/ , 또는 http://text-twist.appspot.com/ .

큰 일에 대해서는 django와 함께 멋진 미들웨어와 플러그인을 모두 활용합니다. http://metaward.com 처럼 .

기본적으로 내 리트머스 테스트는 REAL 소프트웨어 프로젝트 를 작성하고 작성하는 데 2 ​​주 이상 걸리 나요? 그렇다면 애드온을 위해 django로 이동하십시오.

프로젝트가 BigTable에 적합하지 않은 경우 신속하게 이식 할 수 있다는 추가 이점이 있습니다 (예 : BigTable이 느리거나 바보입니까? ).


+1, bigtable은 일부 프로젝트 및 쿼리에 적합하지 않습니다. Google이하는 일에 적합하며하고 싶은 일에는 끔찍할 수 있습니다.
Paul McMillan

감사합니다 폴! Django 미들웨어와 GAE에서 작동하는 플러그인을 설명하는 리소스에 저를 연결해 주시겠습니까? 우리 프로젝트에 유용한 애드온이 있다면 웹앱보다는 장고를 사용해야 할 이유가 될 것입니다. (세션 및 인증과 같은) 더 분명하게 유용한 것들은 명백한 Django ORM 의존성을 가지고있는 것처럼 보입니다.
Travis Bradshaw

2
기본적으로 models.py가없는 애드온은 완벽하게 작동합니다. 만약 그들이 models.py를 가지고 있다면 아마도 bigtable로 일대일 변환을 할 수 있고 원한다면 여전히 사용할 수 있습니다. 내가 사용하는 일부는 django_annoying, django_debug_toolbar 및 contrib 섹션 csrf, humanize 및 물론 admin입니다.
Paul Tarjan

11

이 모든 답변은 조금 구식이라고 생각합니다.

이제 사용할 수 있습니다 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에 대한 베타 지원이 있다는 것입니다.


3

나는 GAE가 아닌 Django를 사용한 경험이 있습니다. Django에 대한 내 경험으로 볼 때 매우 간단한 설정이었고 배포 프로세스는 웹 프로젝트 측면에서 매우 쉬웠습니다. 사실 저는 파이썬을 배워야 정말 잘 잡을 수 있었지만 결국에는 프로젝트에서 다시 사용할 것입니다. 이것은 거의 2 년 전에 1.0에 도달하기 전에 제 지식이 조금 구식입니다.

플랫폼 변경이 걱정된다면 이것이 더 나은 선택이 될 것입니다.


1
빠른 응답에 감사드립니다! Django가 시작하기에 빠른 프레임 워크라는 데 동의하지만, 우리에게는 그다지 걱정거리가 아닙니다. 웹 개발 배경이있는 경험이 풍부한 4 명의 Python 개발자가 있으므로 모든 프레임 워크를 시작하는 것이 빠르고 수월 할 것입니다. 그러나 GAE에서 Django와 webapp 중에서 선택할 때 어떤 것이 더 나은 선택이고 그 이유는 무엇입니까?
Travis Bradshaw

@ Woot4Moo GAE에 대한 경험이 없다면 GAE를 처음 접했지만 가격이 상당히 혼란스럽고 임의의 휴지 요금이 나에게 pythonanywhere 생각하고 있습니다. 권장 사항을 전달할 수 있습니까?
Manza

0

질문에 답할 수 없지만 web2py를 살펴보고 싶을 수 있습니다. 여러면에서 Django와 유사하지만 데이터베이스 추상화 계층은 GAE에서 작동하며 대부분의 GAE 기능을 지원합니다 (모두는 아니지만 우리가 따라 잡으려고합니다). 이런 식으로 GAE가 훌륭하게 작동하고 그렇지 않으면 코드를 다른 DB (SQLite, MySQL, PostgreSQL, Oracle, MSSQL, FireBird, DB2, Informix, Ingres 및 곧-Sybase 및 MongoDB)로 이동할 수 있습니다. ).


0

GAE 외부에서 앱을 실행하기로 결정한 경우에도 Django를 사용할 수 있습니다. GAE 웹앱을 사용하면 그다지 운이 좋지 않습니다.


감사합니다. 원래 질문에서 정확히 언급했지만 "마지막으로 Django를 사용하면 나중에 GAE에서 벗어나 탈출을 목표로하는 플랫폼이 필요한 경우"종료 전략 "을 제공하는 이점이 있다는 것이 분명합니다. "
Travis Bradshaw

0

나는 여전히 Google App Engine 개발에 익숙하지 않지만 Django가 제공하는 인터페이스는 기본값보다 훨씬 멋지게 보입니다. 이점은 앱 엔진에서 Django를 실행하는 데 사용하는 항목에 따라 다릅니다. Django 용 Google App Engine 도우미를 사용하면 일부 Django 기능과 함께 Google App Engine의 모든 기능을 사용할 수 있습니다.

Django non-rel은 가능한 한 Django의 성능을 최대한 제공하려고 시도하지만 가능한 추가 확장 성을 위해 앱 엔진에서 실행됩니다. 특히 Django 모델 (Django의 핵심 기능 중 하나)이 포함되어 있지만 관계형 데이터베이스와 bigtable의 차이로 인해 유출 된 추상화입니다. 기능과 효율성에있어 장단점이있을뿐만 아니라 버그와 단점이 증가 할 가능성이 높습니다. 물론 이것은 질문에 설명 된 것과 같은 상황에서 가치가있을 수 있지만, 그렇지 않으면 나중에 순수 앱 엔진 또는 Django non-rel로 이동할 수있는 옵션이 있으므로 처음에는 도우미를 사용하는 것이 좋습니다. 또한 Django non-rel로 전환하면

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.