Opinia na temat korzystania z Google App Engine? [Zamknięte]

125

Chce zrobić bardzo mały, szybki i brudny projekt poboczny. Podoba mi się fakt, że Google App Engine działa na Pythonie z wbudowanym Django - daje mi pretekst do wypróbowania tej platformy ... ale moje pytanie brzmi:

Czy ktoś wykorzystał silnik aplikacji do czegoś innego niż problem z zabawkami? Widzę kilka dobrych przykładowych aplikacji, więc zakładam, że jest to wystarczająco dobre dla prawdziwej transakcji, ale chciałem uzyskać informacje zwrotne.

Jakiekolwiek inne notatki o sukcesach / porażkach byłyby świetne.

agartzke
źródło
8
powinno być wiki społeczności
SilentGhost

Odpowiedzi:

63

Wypróbowałem silnik aplikacji dla mojej małej aplikacji zegarka quake http://quakewatch.appspot.com/

Moim celem było poznanie możliwości silnika aplikacji, więc oto główne punkty:

  1. nie jest dostarczany domyślnie z Django, ma własny framework sieciowy, który jest pythonic, ma dyspozytor adresów URL, taki jak Django i używa szablonów Django. Więc jeśli masz Django exp. okaże się, że jest łatwy w użyciu
  2. Nie możesz wykonać żadnego długotrwałego procesu na serwerze, to co robisz to odpowiadanie na żądanie, co powinno być szybkie w przeciwnym razie appengine go zabije Więc jeśli twoja aplikacja potrzebuje dużo przetwarzania backendu, appengine nie jest najlepszym sposobem w przeciwnym razie będziesz musiał wykonać przetwarzanie na własnym serwerze
  3. Moja aplikacja quakewatch ma funkcję subskrypcji, co oznacza, że ​​musiałem wysyłać e-maile z najnowszymi trzęsieniami, ale nie mogę uruchomić procesu w tle w silniku aplikacji, aby monitorować nowe rozwiązanie quakes tutaj, aby skorzystać z usługi trzeciej części, takiej jak pingablity.com, która może połączyć się z jedną ze swoich stron i która uruchamia emailer subskrypcji, ale tutaj również będziesz musiał uważać, aby nie spędzać tu dużo czasu lub rozbijać zadanie na kilka części
  4. Zapewnia Django możliwości modelowania, ale backend jest zupełnie inny, ale dla nowego projektu nie powinno to mieć znaczenia.

Ale ogólnie uważam, że jest doskonały do ​​tworzenia aplikacji, które nie wymagają dużo przetwarzania w tle.

Edycja: teraz kolejki zadań mogą być używane do uruchamiania przetwarzania wsadowego lub zaplanowanych zadań

Edycja: po roku pracy / tworzenia prawdziwej aplikacji na GAE, teraz mam taką możliwość, że jeśli nie tworzysz aplikacji, która wymaga skalowania do milionów i milionów użytkowników, nie używaj GAE. Utrzymywanie i wykonywanie trywialnych zadań w GAE to ból głowy ze względu na rozproszony charakter, unikanie przekroczonych terminów błędów, liczenie jednostek lub wykonywanie złożonych zapytań wymaga złożonego kodu, dlatego mała złożona aplikacja powinna trzymać się LAMP.

Edycja: Modele powinny być specjalnie zaprojektowane z uwzględnieniem wszystkich transakcji, które chcesz mieć w przyszłości, ponieważ podmioty tylko z tej samej grupy podmiotów mogą być używane w transakcji i sprawia, że ​​proces aktualizacji dwóch różnych grup jest koszmarem, np. Przelewanie pieniędzy od użytkownika 1 do użytkownika 2 w transakcji jest niemożliwe, chyba że są w tej samej grupie podmiotów, ale uczynienie ich tą samą grupą podmiotów może nie być najlepsze do częstych aktualizacji ... przeczytaj ten http://blog.notdot.net/2009/9/Distributed-Transactions- on-App-Engine

Anurag Uniyal
źródło
6
Teraz proces wsadowy można uruchomić na GAE
Anurag Uniyal
2
Sprawdź również nowy interfejs API Pythona kolejki zadań w dokumentacji App-Engine.
Jason Rikard
11
Wiele z tych informacji jest nieaktualnych - Django 0.96 jest teraz wbudowane w GAE od 17 lipca 2009.
ine
3
Djanjo 1.0.x jest teraz również zawarte w GAE. Możesz wybrać, którą wersję Django chcesz.
Laurent
5
Kolejna aktualizacja, Django 1.1 jest teraz dostępne z GAE, a także z wcześniejszymi wersjami.
SingleNegationElimination
36

Używam GAE do obsługi kilku aplikacji o dużym natężeniu ruchu. Podobnie jak w przypadku rzędu 50-100 żądań / sek. Jest świetny, nie mogę go wystarczająco polecić.

Moje poprzednie doświadczenie z tworzeniem stron internetowych dotyczyło Rubiego (Rails / Merb). Nauka Pythona była łatwa. Nie zadzierałem z Django, Pylonami ani żadnym innym frameworkiem, po prostu zacząłem od przykładów GAE i zbudowałem to, czego potrzebowałem, z podstawowych bibliotek aplikacji internetowych, które są dostępne.

Jeśli jesteś przyzwyczajony do elastyczności SQL, przyzwyczajenie się do magazynu danych może zająć trochę czasu. Nic zbyt traumatycznego! Największą zmianą jest odejście od JOIN. Musisz odrzucić pogląd, że normalizacja jest kluczowa.

Ben

mainospołeczny
źródło
23

Jednym z najważniejszych powodów, dla których znalazłem zastosowanie Google App Engine, jest jego integracja z Google Apps w Twojej domenie. Zasadniczo umożliwia tworzenie niestandardowych, zarządzanych aplikacji internetowych, które są ograniczone do (kontrolowanych) loginów do domeny.

Większość mojego doświadczenia z tym kodem polegała na tworzeniu prostej aplikacji do śledzenia czasu / zadań. Silnik szablonów był prosty, a mimo to wielostronicowa aplikacja była bardzo przystępna. Interfejs API logowania / świadomości użytkownika jest podobnie przydatny. Udało mi się stworzyć paradygmat strony publicznej / prywatnej bez większego problemu. (użytkownik logowałby się, aby zobaczyć strony prywatne. Anonimowy użytkownik był pokazywany tylko na stronie publicznej).

Właśnie wchodziłem do części projektu związanej z magazynem danych, kiedy zostałem wciągnięty do „prawdziwej pracy”.

Udało mi się wiele osiągnąć (nadal nie jest to zrobione) w bardzo krótkim czasie. Ponieważ nigdy wcześniej nie korzystałem z Pythona, było to szczególnie przyjemne (zarówno dlatego, że był to dla mnie nowy język, jak i dlatego, że rozwój był nadal szybki, pomimo nowego języka). Napotkałem bardzo niewiele, co doprowadziło mnie do przekonania, że ​​nie będę w stanie wykonać swojego zadania. Zamiast tego mam dość pozytywne wrażenie na temat funkcjonalności i możliwości.

To jest moje doświadczenie z tym. Być może nie jest to coś więcej niż niedokończony projekt zabawki, ale reprezentuje świadomy test platformy i mam nadzieję, że to pomoże.

el2iot2
źródło
Prawie identyczne z moją sytuacją - poza „prawdziwą pracą”, ale wciąż coś, co muszę zrobić i na końcu mieć funkcjonalne.
agartzke,
To samo tutaj. Ponadto dużym plusem jest to, że instalacja środowiska programistycznego jest bardzo prosta (programujesz w ciągu minuty). To samo dotyczy wdrożeń.
Jilles
12

Idea „App Engine z Django” jest nieco myląca. App Engine zastępuje całą warstwę modelu Django, więc przygotuj się na aklimatyzację z magazynem danych App Engine, który wymaga innego sposobu modelowania i myślenia o danych.

sutee
źródło
Słuszna uwaga - wygląda na to, że domyślnie przejmuje on szablony Django, ale niekoniecznie całą resztę.
agartzke,
7

Użyłem GAE do zbudowania http://www.muspy.com

To trochę więcej niż projekt zabawki, ale też niezbyt skomplikowany. Nadal polegam na kilku kwestiach, które Google musi rozwiązać, ale ogólnie tworzenie strony było przyjemnym doświadczeniem.

Jeśli nie chcesz zajmować się problemami z hostingiem, administracją serwerami itp., Zdecydowanie mogę to polecić. Zwłaszcza jeśli znasz już Pythona i Django.

Alexander Kojevnikov
źródło
7

Myślę, że w tej chwili App Engine jest całkiem fajny dla małych projektów. Wiele można powiedzieć o tym, że nigdy nie musisz się martwić o hosting. Interfejs API popycha Cię również w kierunku tworzenia skalowalnych aplikacji, co jest dobrą praktyką.

  • app-engine-patch to dobra warstwa między Django i App Engine, umożliwiająca korzystanie z aplikacji auth i nie tylko.
  • Google obiecał SLA i model cenowy do końca 2008 roku.
  • Żądania muszą zostać zakończone w ciągu 10 sekund, żądania podrzędne do usług internetowych muszą zostać zakończone w ciągu 5 sekund. Zmusza to do zaprojektowania szybkiej, lekkiej aplikacji, przenoszącej poważne przetwarzanie na inne platformy (np. Usługę hostowaną lub instancję EC2).
  • Wkrótce udostępnimy więcej języków! Google jednak nie powie które :-). Teraz moje pieniądze są na Javie.
popołudnie
źródło
od lutego 2009 roku wiele z powyższych ograniczeń zostało złagodzonych.
husayt
3
Jeśli ktoś może edytować tę odpowiedź, miło byłoby zastanowić się, że Java jest rzeczywiście następnym dostępnym językiem.
JasonSmith
1
@jhs Twój komentarz ładnie to robi!
po południu
Język Go jest teraz obsługiwany!
davewasthere
6

Na to pytanie udzielono pełnej odpowiedzi. Który jest dobry. Ale być może warto wspomnieć o jednej rzeczy. Silnik aplikacji Google ma wtyczkę do zaćmienia ide, z którym praca jest przyjemnością.

Jeśli już rozwijasz swój rozwój z eclipse, będziesz z tego powodu bardzo szczęśliwy.

Aby wdrożyć go na stronie internetowej silnika aplikacji Google, wystarczy kliknąć jeden mały przycisk - z logo samolotu - super.

awanturniczy
źródło
4

Spójrz na grę sql , jest bardzo stabilna i faktycznie przesunęła ograniczenia ruchu w pewnym momencie, tak że została dławiona przez Google. Widziałem tylko dobre wieści o App Engine, poza hostowaniem aplikacji na serwerach, które ktoś inny kontroluje.

Joe Skora
źródło
sql game została przeniesiona z Google App Engine na prywatny serwer.
systempuntoout
4

Użyłem GAE do zbudowania prostej aplikacji, która akceptuje parametry, formaty i wysyła e-mail. To było niezwykle proste i szybkie. Przeprowadziłem również testy wydajności dla usług magazynu danych GAE i pamięci podręcznej ( http://dbaspects.blogspot.com/2010/01/memcache-vs-datastore-on-google-app.html ). Nie jest tak szybko. Moim zdaniem GAE to poważna platforma, która wymusza określoną metodologię. Myślę, że rozwinie się do prawdziwie skalowalnej platformy, gdzie złe praktyki są po prostu niedozwolone.

David Gruzman
źródło
4

Użyłem GAE na mojej stronie z grami flash, Bearded Games . GAE to świetna platforma. Użyłem szablonów Django, które są o wiele łatwiejsze niż za dawnych czasów PHP. Posiada świetny panel administracyjny i daje naprawdę dobre dzienniki. Magazyn danych różni się od bazy danych, takiej jak MySQL, ale jest o wiele łatwiejszy w obsłudze. Zbudowanie witryny było łatwe i proste, a firma ma wiele pomocnych porad.

Josh Patton
źródło
3

Użyłem GAE i Django do zbudowania aplikacji na Facebooku. Jako punkt wyjścia użyłem http://code.google.com/p/app-engine-patch, ponieważ obsługuje on Django 1.1. Nie próbowałem używać żadnego z poleceń manage.py, ponieważ zakładałem, że nie będą działać, ale nawet się do tego nie zaglądałem. Aplikacja miała trzy modele i również korzystała z pyfacebook, ale na tym polegała złożoność. Jestem w trakcie tworzenia znacznie bardziej skomplikowanej aplikacji, o której zaczynam pisać na http://brianyamabe.com .

byamabe
źródło
Zacząłem używać manage.py do uruchamiania serwera, a także do uruchamiania niektórych testów jednostkowych. Uruchamianie serwera działa dobrze, ale ponieważ moja aplikacja działa jako aplikacja na Facebooku, nie jest to aż tak przydatne (potrzebuję hostowanego serwera, do którego odwołuje się Facebook). Testy jednostkowe również działały, a nawet działały z urządzeniami. Jednak nie byłem w stanie zmusić urządzeń, które odwoływały się do innych modeli, aby działały. Nadal nie wiem, czy jest to problem z moim urządzeniem, czy też z poprawką do silnika aplikacji.
byamabe