Saat meneliti Google App Engine (GAE), jelas bahwa menggunakan Django sangat populer untuk pengembangan Python di GAE. Saya telah menjelajahi web untuk mencari informasi tentang biaya dan keuntungan menggunakan Django, untuk mencari tahu mengapa itu begitu populer. Meskipun saya dapat menemukan berbagai macam sumber tentang bagaimana menjalankan Django pada GAE dan berbagai metode melakukannya, saya belum menemukan analisis komparatif tentang mengapa Django lebih disukai menggunakan kerangka webapp yang disediakan oleh Google.
Agar jelas, itu segera terlihat mengapa menggunakan Django pada GAE berguna untuk pengembang dengan keahlian yang ada di Django (mayoritas pengembang web Python, tidak diragukan lagi) atau kode yang ada di Django (di mana menggunakan GAE lebih merupakan latihan porting). Namun, tim saya sedang mengevaluasi GAE untuk digunakan pada proyek yang semuanya baru dan pengalaman kami yang ada adalah dengan TurboGears, bukan Django.
Sudah cukup sulit untuk menentukan mengapa Django bermanfaat bagi tim pengembangan ketika pustaka BigTable telah menggantikan ORM Django, sesi dan otentikasi perlu diubah, dan templat Django (jika diinginkan) tersedia tanpa menggunakan seluruh susunan Django.
Terakhir, jelas bahwa menggunakan Django memang memiliki keuntungan dalam menyediakan "strategi keluar" jika nanti kita ingin menjauh dari GAE dan membutuhkan platform untuk menargetkan eksodus.
Saya akan sangat menghargai bantuan dalam menunjukkan mengapa menggunakan Django lebih baik daripada menggunakan aplikasi web di GAE. Saya juga sama sekali tidak berpengalaman dengan Django, jadi elaborasi pada fitur dan / atau kemudahan yang lebih kecil yang bekerja pada GAE juga berharga bagi saya.
sumber
Jawaban:
Kami menggunakan django pada instance appengine kami sebagian besar ketika kami harus menyajikan situs web yang sebenarnya kepada pengguna. Ia memiliki mesin template yang bagus, perutean url dan semua permintaan / respon / penanganan kesalahan yang ada di dalamnya. Jadi meskipun kita tidak dapat menggunakan hal-hal orm / admin ajaib itu memiliki banyak hal yang terjadi.
Untuk layanan api, kami membuat sesuatu yang sangat sederhana di atasnya
webob
. Ini jauh lebih ringan karena tidak membutuhkan semua yang ditawarkan django, dan oleh karena itu sedikit lebih cepat dalam beberapa situasi.sumber
Django mungkin bukan pilihan yang tepat untuk Anda, jika Anda yakin bahwa GAE tepat untuk Anda. Kekuatan dari dua teknologi tidak selaras dengan baik - Anda benar-benar kehilangan banyak orm indah Django di GAE, dan jika Anda menggunakannya, Anda menulis kode yang tidak benar-benar cocok secara langsung ke bigtable dan cara kerja GAE.
Hal tentang GAE adalah ia mendapatkan skalabilitas yang hebat dengan memaksa Anda untuk menulis kode yang diskalakan dengan mudah dari bawah ke atas. Anda hanya tidak dapat melakukan beberapa hal dengan skala yang buruk (tentu saja, Anda masih dapat menulis kode penskalaan yang buruk, tetapi Anda menghindari beberapa jebakan). Imbalannya adalah Anda benar-benar akhirnya membuat kode di sekitar kerangka kerja, jika Anda menggunakan sesuatu seperti Django yang dirancang untuk lingkungan yang berbeda.
Jika Anda melihat diri Anda keluar dari GAE karena alasan apa pun, berinvestasi di infrastruktur ada masalah bagi Anda. Pengkodean untuk bigtable berarti akan lebih sulit untuk pindah ke arsitektur yang berbeda (meskipun proyek apache bekerja untuk menyelesaikannya untuk Anda dengan komponen HBase dari proyek Hadoop). Masih banyak pekerjaan untuk beralih dari GAE.
Apa motivasi pendorong di balik penggunaan GAE, selain menjadi produk Google, dan kata kunci yang keren? Apakah ada alasan bahwa penskalaan menggunakan sesuatu seperti penawaran mediatemple tidak mungkin bekerja dengan baik untuk Anda? Apakah Anda yakin bahwa skala GAE tepat untuk aplikasi Anda? Bagaimana biayanya dibandingkan dengan server khusus, jika Anda mengharapkan untuk mencapai bidang kinerja itu? Dapatkah Anda menyelesaikan masalah Anda dengan baik menggunakan alat yang disediakan GAE, dibandingkan dengan penyiapan server dengan beban seimbang yang lebih tradisional?
Semua ini mengatakan, kecuali jika Anda benar-benar benar-benar membutuhkan penskalaan batas-konyol yang ditawarkan GAE, saya pribadi menyarankan untuk tidak membiarkan layanan tertentu itu menyusun kerangka pilihan Anda. Saya suka Django, jadi menurut saya Anda harus menggunakannya, tetapi tidak pada GAE.
Sunting (Juni 2010): Sebagai pembaruan untuk komentar ini beberapa waktu kemudian: Google telah mengumumkan kemampuan sql-like untuk GAE yang tidak gratis, tetapi akan membiarkan Anda dengan mudah melakukan hal-hal seperti menjalankan perintah gaya SQL untuk menghasilkan laporan pada data Anda.
Selain itu, ada perubahan yang akan datang pada bahasa kueri GAE yang akan memungkinkan kueri kompleks dengan cara yang jauh lebih mudah. Lihat video dari Google I / O 2010.
Lebih lanjut, ada pekerjaan yang sedang dilakukan selama proyek Summer of Code 2010 yang seharusnya membawa dukungan no-sql ke django core, dan dengan ekstensi, membuat bekerja dengan GAE jauh lebih mudah.
GAE menjadi lebih menarik sebagai platform hosting.
Edit (Agustus 2011):
Dan Google baru saja menaikkan biaya untuk sebagian besar pengguna platform secara signifikan dengan mengubah struktur harga. Masalah lockin menjadi lebih baik (jika aplikasi Anda cukup besar, Anda dapat menerapkan alternatif apache), tetapi untuk sebagian besar aplikasi, menjalankan server atau penerapan VPS lebih murah.
Sangat sedikit orang yang benar-benar memiliki masalah data besar. "Oh, startup saya mungkin berkembang suatu hari nanti" bukanlah masalah data besar. Buat barang sekarang dan keluarkan menggunakan alat standar.
sumber
Saya telah melakukan banyak proyek di GAE. Beberapa di django, beberapa dalam kerangka normalnya.
Untuk hal-hal kecil, saya biasanya menggunakan kerangka normalnya untuk kesederhanaan dan kecepatan. Seperti http://stdicon.com , http://yaml-online-parser.appspot.com/ , atau http://text-twist.appspot.com/ .
Untuk hal-hal besar, saya menggunakan django untuk memanfaatkan semua middleware dan plugin yang bagus. Seperti http://metaward.com .
Pada dasarnya tes lakmus saya adalah Apakah ini membutuhkan waktu lebih dari 2 minggu untuk menulis dan menjadi proyek perangkat lunak NYATA ? Jika demikian, gunakan django untuk addons.
Ini memiliki manfaat tambahan, jika proyek Anda tidak cocok untuk BigTable maka Anda dengan cepat melakukan port off (seperti yang saya lakukan Apakah BigTable lambat atau apakah saya bodoh? )
sumber
Saya pikir semua jawaban ini agak usang.
Sekarang Anda bisa menggunakan
Google Cloud SQL
https://cloud.google.com/python/django/appengine
satu lagi berita baru adalah, bahwa ada dukungan BETA untuk PostgreSQL
sumber
Saya memiliki pengalaman menggunakan Django dan bukan GAE. Dari pengalaman saya dengan Django itu adalah pengaturan yang sangat sederhana dan proses penyebaran sangat mudah dalam hal proyek web. Memang saya harus belajar Python untuk benar-benar menguasai banyak hal, tetapi pada akhirnya saya akan menggunakannya lagi dalam sebuah proyek. Ini hampir 2 tahun yang lalu sebelum mencapai 1.0 jadi saya pengetahuan saya agak ketinggalan jaman.
Jika Anda khawatir tentang mengubah platform, maka ini akan menjadi pilihan yang lebih baik.
sumber
Saya tidak bisa menjawab pertanyaan itu tetapi Anda mungkin ingin melihat web2py. Ini mirip dengan Django dalam banyak hal tetapi lapisan abstraksi basis datanya bekerja pada GAE dan mendukung sebagian besar fungsionalitas GAE (tidak semua tetapi kami mencoba mengejar ketinggalan). Dengan cara ini jika GAE bekerja untuk Anda dengan baik, jika tidak, Anda dapat memindahkan kode Anda ke db yang berbeda (SQLite, MySQL, PostgreSQL, Oracle, MSSQL, FireBird, DB2, Informix, Ingres, dan - soon - Sybase dan MongoDB ).
sumber
Jika Anda memutuskan untuk menjalankan aplikasi Anda di luar GAE, Anda masih dapat menggunakan Django. Anda tidak akan terlalu beruntung dengan aplikasi web GAE
sumber
Saya masih sangat baru dalam pengembangan mesin Google App, tetapi antarmuka yang disediakan Django memang tampak jauh lebih bagus daripada default. Manfaat akan bergantung pada apa yang Anda gunakan untuk menjalankan Django pada mesin aplikasi. Pembantu Mesin Aplikasi Google untuk Django memungkinkan Anda menggunakan kekuatan penuh Mesin Aplikasi Google dengan beberapa fungsi Django di sampingnya.
Django non-rel mencoba menyediakan kekuatan Django sebanyak mungkin, tetapi berjalan pada mesin-aplikasi untuk kemungkinan skalabilitas ekstra. Khususnya, ini menyertakan model Django (salah satu fitur inti Django), tetapi ini adalah abstraksi yang bocor karena perbedaan antara basis data relasional dan tabel besar. Kemungkinan besar akan ada pengorbanan dalam fungsionalitas dan efisiensi, serta peningkatan jumlah bug dan kebiasaan. Tentu saja, ini mungkin sepadan dalam keadaan seperti yang dijelaskan dalam pertanyaan, tetapi sebaliknya akan sangat merekomendasikan menggunakan helper di awal karena kemudian Anda memiliki opsi untuk berpindah ke mesin aplikasi murni atau Django non-rel nanti. Juga, jika anda beralih ke Django non-rel,
sumber