Google App Engine'de neden Django kullanmalı?


88

Google App Engine'i (GAE) araştırırken, Django kullanmanın GAE'de Python'da geliştirme için çılgınca popüler olduğu açıktır. Django'nun neden bu kadar popüler olduğunu öğrenmek için, Django kullanmanın maliyetleri ve faydaları hakkında bilgi bulmak için internette geziniyordum . GAE'de Django'yu nasıl çalıştıracağıma ve bunu yapmanın çeşitli yöntemlerine dair çok çeşitli kaynaklar bulabilmiş olsam da, Django'nun neden Google tarafından sağlanan webapp çerçevesini kullanmak yerine neden tercih edildiğine dair karşılaştırmalı bir analiz bulamadım .

Açık olmak gerekirse, GAE'de Django kullanmanın Django'da (şüphesiz Python web geliştiricilerinin çoğunluğu) mevcut bir beceri setine veya Django'da (GAE'yi kullanmanın bir taşıma egzersizi olduğu yerlerde) mevcut bir koda sahip geliştiriciler için yararlı olduğu hemen anlaşılıyor. Ancak ekibim, GAE'yi tamamen yeni bir projede kullanım için değerlendiriyor ve mevcut deneyimimiz Django değil TurboGears ile.

BigTable kitaplıkları Django'nun ORM'sinin yerini aldığında, oturumlar ve kimlik doğrulaması zorunlu olarak değiştirildiğinde ve Django'nun şablon oluşturma (istenirse) tüm Django yığınını kullanmadan kullanılabilir olduğunda Django'nun bir geliştirme ekibi için neden faydalı olduğunu belirlemek oldukça zordu.

Son olarak, eğer daha sonra GAE'den uzaklaşmak istersek ve çıkış için bir platforma ihtiyaç duyarsak, Django kullanmanın bir "çıkış stratejisi" sağlama avantajına sahip olduğu açıktır.

GAE'de neden Django kullanmanın web uygulamasını kullanmaktan daha iyi olduğunu gösterme konusunda yardım için son derece minnettar olurum . Ayrıca Django konusunda tamamen deneyimsizim, bu nedenle GAE üzerinde çalışan daha küçük özellikler ve / veya kolaylıklar üzerinde yapılan ayrıntılar da benim için değerli.


kutsal boktan havlu bradshaw kod yazıyor mu?
Woot4Moo

4
Django faydalıdır çünkü harika. Gerçekten bu. :)
jathanism

Google uygulama motorunda da yeniyim ve bu 2018 için bile çok iyi biçimlendirilmiş bir soru (Django ORM şu anda GAE'de çok daha iyi destekleniyor gibi görünüyor). :)
Divij Sehgal

Yanıtlar:


19

Django'yu appengine örneklerimizde çoğunlukla kullanıcıya gerçek web siteleri sunmamız gerektiğinde kullanıyoruz. Harika bir şablon motoru, url yönlendirmesi ve yerleşik tüm istek / yanıt / hata işleme özelliklerine sahiptir. Bu nedenle, sihirli orm / admin öğelerini kullanamasak bile, bunun için çok şey var.

API hizmetleri için üstüne çok basit bir şey inşa ettik webob. Çok daha hafiftir çünkü django'nun sunduğu her şeye ihtiyaç duymaz ve bu nedenle bazı durumlarda biraz daha hızlıdır.


1
Teşekkürler Koen. Django'nun çekiciliğiyle ilgili kafa karışıklığımın bir kısmı, url yönlendirme ve istek / yanıt / hata işlemenin sağlanan web uygulamasının özellikleri olduğu ve şablon motorunun Django olmadan web uygulamasıyla da kullanılabileceği fikrinden kaynaklanıyordu. Yanılıyor muyum? Django, bu hizmetleri webapp çerçevesinden daha iyi sağlıyor mu?
Travis Bradshaw

Django'da daha kapsamlı ve esnek olduklarını söyleyebilirim. Yani buna gerçekten ihtiyacınız varsa daha iyi :-)
Koen Bok

2
Sanırım aradığım cevap bu! Django, web uygulamasında büyük ölçüde gereksizdir, ancak Django'nun paylaştıkları işlevsellik daha esnek ve sağlam bir şekilde yapar. Kesinlikle "marjda" bir karar gibi görünüyor, ancak bence diğer tüm öneriler, artı sizin önerileriniz, ikna edici bir yanıt veriyor. Teşekkürler.
Travis Bradshaw

1
C ile yazılmış Python modülleri de desteklenmemektedir.
Ryu_hayabusa

51

GAE'nin sizin için doğru olduğundan eminseniz, Django muhtemelen sizin için doğru seçim değildir. İki teknolojinin güçlü yönleri çok iyi uyuşmuyor - GAE'de Django'nun harika ormunun çoğunu tamamen kaybedersiniz ve bunu kullanırsanız, bigtable'a ve GAE'nin çalışma şekline gerçekten doğrudan uygun olmayan bir kod yazarsınız.

GAE ile ilgili olan şey, sizi sıfırdan kolayca ölçeklenebilen bir kod yazmaya zorlayarak mükemmel ölçeklenebilirliğe sahip olmasıdır. Kötü ölçeklenen pek çok şeyi yapamazsınız (tabii ki yine de kötü ölçeklenen kod yazabilirsiniz, ancak bazı tuzaklardan kaçınırsınız). Değiş tokuş, farklı bir ortam için tasarlanmış Django gibi bir şey kullanırsanız, gerçekten çerçeve etrafında kodlama yapmanızdır.

Herhangi bir nedenle GAE'den ayrıldığınızı görürseniz, altyapıya yatırım yaptığınızda sizin için bir sorun var. Bigtable için kodlama, farklı bir mimariye geçmenin daha zor olacağı anlamına gelir (apache projesi bunu sizin için Hadoop projesinin HBase bileşeniyle çözmek için çalışıyor olsa da). GAE'den geçiş yapmak hala çok iş olacaktır.

Bir Google ürünü ve havalı bir moda kelime olmasının yanı sıra GAE'yi kullanmanın arkasındaki itici motivasyon nedir? Mediatemple'ın teklifi gibi bir şeyi kullanarak ölçeklendirmenin sizin için iyi sonuç vermemesinin bir nedeni var mı? GAE'nin ölçeklerinin uygulamanız için doğru olduğundan emin misiniz? Bu performans alanına ulaşmayı bekliyorsanız, maliyet, özel sunucularla karşılaştırıldığında nasıldır? Daha geleneksel bir yük dengeli sunucu kurulumuna kıyasla GAE'nin sağladığı araçları kullanarak sorununuzu iyi çözebilir misiniz?

Tüm bunlar, GAE'nin sunduğu sınırda gülünç ölçeklendirmeye kesinlikle olumlu bir şekilde ihtiyaç duymadığınız sürece, kişisel olarak bu belirli hizmetin çerçeve seçiminizi yapılandırmasına izin vermemenizi öneririm. Django'yu seviyorum, bu yüzden onu kullanman gerektiğini söyleyebilirim ama GAE'de değil.

Düzenleme (Haziran 2010): Bir süre sonra bu yorumun bir güncellemesi olarak: Google, GAE için ücretsiz olmayan, ancak verilerinizle ilgili raporlar oluşturmak için SQL tarzı komutları çalıştırmak gibi şeyleri kolayca yapmanıza izin verecek sql benzeri özellikleri duyurdu.

Ek olarak, GAE sorgu dilinde, karmaşık sorgulara çok daha kolay bir şekilde izin verecek değişiklikler yapılacak. Google I / O 2010'daki videolara bakın.

Ayrıca, Summer of Code 2010 projesi sırasında django çekirdeğine hiçbir sql desteği getirmeyen ve buna bağlı olarak GAE ile çalışmayı önemli ölçüde kolaylaştıracak çalışmalar yapılmaktadır.

GAE, bir barındırma platformu olarak daha çekici hale geliyor.

Düzenleme (Ağustos 2011):

Ve Google, fiyatlandırma yapısını değiştirerek platformun çoğu kullanıcısı için maliyeti önemli ölçüde artırdı. Kilitlenme sorunu daha iyi hale geldi (uygulamanız yeterince büyükse, apache alternatiflerini dağıtabilirsiniz), ancak çoğu uygulama için sunucuları veya VPS dağıtımlarını çalıştırmak daha ucuzdur.

Çok az insanın gerçekten büyük veri sorunları var. "Oh, benim girişimim bir gün ölçeklenebilir" önemli bir veri sorunu değildir. Şimdi bir şeyler inşa edin ve standart araçları kullanarak kapıdan çıkarın.


Düşünceli yanıt için teşekkürler Paul. GAE'yi büyük ölçüde, maliyet modeli önerdiğimiz iş planımızla uyumlu olduğu için değerlendiriyoruz. Ücretsiz başlama ve ardından çok ayrıntılı bir maliyet modeliyle aşamalı olarak ölçeklendirme yeteneği çok çekici. Ayrıca, gelecekte GAE'den başka bir yere taşınmak veya başka bir yere taşınmak gibi bir beklentimiz yok ve bu proje için platform kilitlenmesi kabul edilebilir. Öncelikle, bu soruyu göndermeden önce okuyup araştırarak öğrendiklerimi oldukça kapsamlı hale getirmek amacıyla soruma "çıkış stratejisi" yorumunu ekledim. Tekrar teşekkürler!
Travis Bradshaw

Geliştirme süresinin maliyetini nasıl değerlendiriyorsunuz? Django ile ilgili güzel şeylerden biri, veri modellerinizi tanımlama konusunda Bigtable ile olduğundan daha az endişelenmenizdir. Bigtable, kullanmadan önce sizi kullanımlarınız hakkında daha net olmaya zorlar. Bazı sorgular "normal" sql ile önemli ölçüde daha kolaydır.
Paul McMillan

3
Kuruşları çok fazla sıkıştırmamaya dikkat edin. Ücretsiz güzeldir, ancak hizmet hızla gerçek paraya mal olur. "Ücretsiz" hizmet düzeyindeyseniz, bunu zaten ödediğiniz başka bir sunucuda / barındırmada barındırın. Ücretsiz olmayan hizmet düzeyine giriyorsanız, daha sonra kolayca ölçeklendirebileceğiniz bir VPS için aylık 20 ABD doları, maliyete kadar gürültülüdür.
Paul McMillan

11
tbradshaw, yok sen Anlık raporlar veri kümesi üzerinden yayınlanmak gerekecektir ne sıklıkta dikkate unutmayın. Büyüyen bir sosyal uygulamaya dahil oluyorum ve GAE haline geliyor ... Bir kabus demeyeceğim, ancak verilerimizden bilgi elde etmek son derece yoğun kaynak gerektiriyor. Google'ın eski günlükleri temizlemesi ve tüm verileri taramak için gereken aşırı uzunluklar arasında, raporlama yöntemini bir SQL veritabanından çok daha pahalı hale getirir. Bu, başlarken dikkate almadığım bir maliyet. İkinci olarak, gerçekten büyürseniz ve para kazanmaya başlarsanız, yedeklemelerle ilgili kaybettiğiniz kontrol, bir faktördür.
JasonSmith

2
Kilitlenme endişeleri için bir Google App Engine klonu olan AppScale'e bakın. GAE ilk çıktığından beri platform üzerinde çalışıyoruz ve python ve java uygulamaları için birçok kullanıcımız var. Üzerinde çalıştığı makinelere doğrudan erişime sahip olursunuz, böylece altyapı üzerinde daha fazla kontrole sahip olursunuz. github.com/AppScale/appscale.git
Navraj Chohan

16

GAE'de birçok proje yaptım. Bazıları django'da, bazıları normal çerçevelerinde.

Küçük şeyler için, basitlik ve çabukluk için genellikle normal çerçevelerini kullanırım. Gibi http://stdicon.com , http://yaml-online-parser.appspot.com/ veya http://text-twist.appspot.com/ .

Büyük şeyler için, tüm güzel ara yazılımlardan ve eklentilerden yararlanmak için django ile gidiyorum. Gibi http://metaward.com .

Temel olarak turnusol testim şu: Bu benim yazmam ve GERÇEK bir yazılım projesi olmam 2 haftadan fazla sürecek mi? Eğer öyleyse, eklentiler için django ile gidin.

Projeniz BigTable için kötü bir şekilde uygunsa, o zaman hızlı bir şekilde aktarırsınız (benim yaptığım gibi BigTable yavaş mı yoksa aptal mıyım? )


+1, bigtable bazı türdeki projeler ve sorgular için kötüdür. Google'ın yaptıkları için harika ve yapmak istedikleriniz için korkunç olabilir.
Paul McMillan

Teşekkürler Paul! Beni, GAE üzerinde çalışan Django ara yazılımını ve eklentilerini tanımlayan herhangi bir kaynağa bağlayabilir misiniz? Projemiz için yararlı eklentiler varsa, bu kesinlikle web uygulaması yerine Django ile gitmek için bir neden olacaktır. Daha açık bir şekilde yararlı olanlar (oturum ve kimlik doğrulama gibi) açık Django ORM bağımlılıklarına sahip görünüyor.
Travis Bradshaw

2
Temelde models.py olmayan herhangi bir eklenti mükemmel çalışacaktır. Ve bir models.py'ye sahiplerse, büyük olasılıkla 1'e 1 dönüşümü bigtable'a yapabilir ve yine de isterseniz kullanabilirsiniz. Kullandığım bazıları django_annoying, django_debug_toolbar ve katkı bölümünden csrf, humanize ve tabii ki admin.
Paul Tarjan

11

Bence tüm bu cevaplar biraz eskimiş.

Şimdi kullanabilirsin Google Cloud SQL

Django, popüler bir üçüncü taraf Python web çerçevesidir. Google Cloud SQL ile birleştirildiğinde, tüm işlevleri App Engine üzerinde çalışan uygulamalar tarafından tam olarak desteklenebilir . Google Cloud SQL'i Django ile kullanma desteği, Django'nun MySQL arka ucunu saran özel bir Django veritabanı arka ucu tarafından sağlanır.

https://cloud.google.com/python/django/appengine

bir yeni haber daha, PostgreSQL için BETA desteği var.


3

GAE'yi değil Django'yu kullanma deneyimim var. Django ile olan deneyimlerime göre çok basit bir kurulumdu ve dağıtım süreci web projeleri açısından inanılmaz derecede kolaydı. İşlere gerçekten hakim olmak için Python öğrenmem gerektiğini kabul ettim, ancak günün sonunda onu bir projede tekrar kullanacaktım. Bu, 1.0'a ulaşmadan neredeyse 2 yıl önceydi, bu yüzden bilgim biraz modası geçmiş.

Platformları değiştirmekten endişeleniyorsanız, bu sanırım daha iyi bir seçim olacaktır.


1
Hızlı cevabın için teşekkürler! Django'nun başlamak için hızlı bir çerçeve olduğu konusunda hemfikir olsam da, bu bizim için gerçekten bir endişe kaynağı değil. Web geliştirme geçmişine sahip oldukça deneyimli dört Python geliştiricimiz var, bu nedenle herhangi bir çerçeveye başlamak hızlı ve zahmetsiz olacak. Ancak GAE'de Django ve webapp arasında seçim yaparken soru hala geçerli, hangisi daha iyi bir seçim ve neden ?
Travis Bradshaw

@ Woot4Moo GAE ile herhangi bir deneyiminiz olmasaydı, onu konuşlandırdınız mı, GAE'de yeniyim ama fiyat beni oldukça karıştırıyor, rastgele hughe ücretleri, her yerde düşünüyorum, bana bazı öneriler iletebilir misiniz?
Manza

0

Soruyu cevaplayamıyorum ama web2py'ye bakmak isteyebilirsiniz. Pek çok açıdan Django'ya benzer, ancak veritabanı soyutlama katmanı GAE üzerinde çalışır ve GAE işlevlerinin çoğunu destekler (hepsini değil ama biz yetişmeye çalışıyoruz). Bu şekilde, GAE sizin için harika çalışıyorsa, çalışmıyorsa, kodunuzu farklı bir veritabanına (SQLite, MySQL, PostgreSQL, Oracle, MSSQL, FireBird, DB2, Informix, Ingres ve - yakında - Sybase ve MongoDB'ye taşıyabilirsiniz. ).


0

Uygulamanızı GAE dışında çalıştırmaya karar verirseniz, yine de Django'yu kullanabilirsiniz. GAE web uygulamasıyla gerçekten bu kadar şansınız olmayacak


Teşekkürler, ancak orijinal soruda tam olarak bundan bahsetmeme rağmen: "Son olarak, eğer daha sonra GAE'den uzaklaşmak ve çıkış için hedeflemek için bir platforma ihtiyaç duyarsak, Django kullanmanın bir" çıkış stratejisi "sağlama avantajına sahip olduğu açıktır. "
Travis Bradshaw

0

Google App motor geliştirme konusunda hâlâ çok yeniyim, ancak Django'nun sağladığı arayüzler varsayılandan çok daha güzel görünüyor. Faydalar, Django'yu uygulama motorunda çalıştırmak için ne kullandığınıza bağlı olacaktır. Django için Google App Engine Helper, yan taraftaki bazı Django işlevleriyle Google App Engine'in tüm gücünü kullanmanıza olanak tanır.

Django non-rel, Django'nun gücünü olabildiğince sağlamaya çalışır, ancak olası ekstra ölçeklenebilirlik için uygulama motorunda çalışır. Özellikle, Django modellerini (Django'nun temel özelliklerinden biri) içerir, ancak bu, ilişkisel veritabanları ile büyük tablo arasındaki farklardan dolayı sızdıran bir soyutlamadır. Büyük olasılıkla işlevsellik ve verimlilikte değiş tokuşların yanı sıra artan sayıda hata ve tuhaflık olacaktır. Elbette, soruda anlatılanlar gibi durumlarda buna değebilir, ancak aksi takdirde yardımcıyı başlangıçta kullanmanızı şiddetle tavsiye eder, çünkü daha sonra ya saf uygulama motoru ya da Django non-rel'e geçme seçeneğiniz vardır. Ayrıca, Django non-rel'e geçerseniz,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.