2010-02-07 15 views
12

Mam aplikację działającą na AppEngine, który zużywa około 50 godzin procesora dziennie. Większość z nich spędza się czekając na datastore.Migracja przy AppEngine

Rozważam przeniesienie go z AppEngine do serwerów typu Rackspace Cloud, ponieważ myślę, że moja aplikacja może być bardziej wydajna, jeśli mogę odładować część pracy do bazy danych (plus mogę dodać więcej funkcji, które będą trudne do wdrożenia w AppEngine).

A więc, w jaki sposób mogę przenieść aplikację AppEngine? Jest on opracowywany w środowisku webapp i nie korzysta z wielu interfejsów API Google innych niż magazyn danych. Idealnie byłoby móc zachować kod webapp i zamienić klasy db na coś, co mogłoby porozmawiać z inną bazą danych (MySQL lub PostgreSQL jest prawdopodobnie lepszy niż coś takiego jak CouchDB lub MongoDB, ale te mogą również działać).

AKTUALIZACJA: W odpowiedzi na komentarze poniżej ... Mam już wiele aplikacji internetowych. Nie uruchamiałem jeszcze aplikacji Python do produkcji. Zakładam, że konfigurowanie aspektu python/webserver jest dość proste. Mam nadzieję, że dzięki serwerom typu Rackspace Cloud będzie to 1 serwer, dzięki któremu będę mógł dodawać zasoby również wtedy, gdy się rozwijamy. Obecnie wykonujemy około 200 000 kliknięć dziennie.

Jeśli chodzi o optymalizacje AppEngine, używamy memcache, gdzie możemy (nie wiele miejsc). Używamy także zadań, a ponieważ pomaga to w obejściu limitu czasu żądania, dodaje on używane zasoby.

Moje główne pytanie to dobra alternatywa dla Pythona dla warstwy danych, która może wymagać najmniejszej zmiany kodu. Chociaż wiem również, że prawdopodobnie istnieją pewne istotne pytania, o które nie myślę zadać.

+0

Po prostu z ciekawości, czy czekasz na zapis datastore lub czyta? czy używasz memcache i kolejki zadań? –

+0

Ponadto, nie jest jasne, jakiego rodzaju odpowiedzi szukasz. Czy korzystałeś już z aplikacji internetowej pełnoekranowej? ile trafień dziennie masz? będziesz potrzebować wielu serwerów internetowych? Szukasz rekomendacji ramowych lub krok po kroku, jak ogólnie obsługiwać aplikację internetową? –

Odpowiedz

9

Jeśli możesz przestawić na numer appscale, nie musisz przepisywać żadnego kodu App Engine.

+0

Myślę, że to jest droga. Miałem wrażenie, że framework webapp istniał poza AppEngine, ale wygląda na to, że był luźno oparty na web.py. Podczas gdy appscale wydaje się trochę jak hack do mnie, zapewnia ścieżkę migracji, która pozwala przepisywanie powoli lub w razie potrzeby. Dzięki. –

+0

@Jackson, możesz ponownie użyć kodu w SDK, aby rozpocząć (to jest to, co zrobili producenci aplikacji, jak sądzę), biorąc pod uwagę, że kod jest licencją open source i elastyczną architekturą "stubs and hooks" - ale dlaczego nie skorzystać z tego pracę, którą już wykonali? Zwłaszcza w warstwie danych, gdzie mają kilka adapterów dla różnych systemów pamięci masowej. Nie jestem pewien, co to jest, że uważasz się za ohydnego (chociaż uważam, że komentarze nie są najlepszym forum do dyskusji ;-). ((Zastrzeżenie: nie mam nic wspólnego z appscale, ale pracuję w Google i mam wielu przyjaciół w zespole appengine ;-)). –

1

Możesz użyć TyphoonAE, która jest oparta na SDK i zaprojektowana dla małych i średnich wdrożeń - np. Pojedynczych serwerów do małych klastrów - i powinna być dość łatwa do skonfigurowania.

Przepraszam, do zobaczenia.

+0

Cóż, teraz muszę przynajmniej zobaczyć, jak nowe wydanie 1.3.1 zmienia rzeczy :) –