Kiedy należy użyć: Amazon EC2, Google App Engine, Microsoft Azure i Salesforce.com?

88

Pytam o to w bardzo ogólnym sensie. Zarówno z punktu widzenia dostawcy, jak i konsumenta. Nie chodzi również o żadną konkretną aplikację (w rzeczywistości chodzi o to, aby wiedzieć, jaki typ aplikacji / domen może pasować do której z płyt w chmurze - SaaS PaaS IaaS).

Jak dotąd rozumiem:

IaaS: Surowy sprzęt (procesory, sieci, pamięć masowa).

PaaS: system operacyjny, oprogramowanie systemowe, struktura programistyczna, maszyny wirtualne.

SaaS: aplikacje.

Byłoby wspaniale, gdyby Stackoverflower mogli podzielić się swoją wiedzą i doświadczeniami na temat koncepcji chmury obliczeniowej.

EDYCJA: Ok, uściślę to bardziej szczegółowo -

Amazon EC2: Nie masz kontroli nad warstwą sprzętową. Ale możesz wybrać obraz systemu operacyjnego, środowisko programistyczne (.NET, J2EE, LAMP) i aplikację i umieścić je na sprzęcie EC2. Czy możesz wdrożyć aplikacje utworzone za pomocą Google App Engine lub Azure na platformie EC2?

Google App Engine: nie masz kontroli nad sprzętem i systemem operacyjnym i otrzymujesz konkretną platformę deweloperską do tworzenia aplikacji. Czy możesz pobrać istniejącą aplikację Java lub Python i przenieść ją do GAE? I odwrotnie, czy aplikacje zbudowane na GAE mogą zostać usunięte z GAE i przeniesione na dowolny serwer aplikacji, taki jak Websphere lub Weblogic?

Azure: nie masz kontroli nad sprzętem i systemem operacyjnym i otrzymujesz określoną strukturę deweloperską do tworzenia aplikacji. Czy można przenieść dowolną istniejącą aplikację .NET na platformę Azure? I na odwrót, czy aplikacje utworzone na platformie Azure mogą zostać usunięte z platformy Azure i przeniesione na dowolny serwer aplikacji, taki jak Biztalk?

user32262
źródło
2
Zapomniałeś Rackspace Cloud / Rackspace Cloud Servers
phoebus
2
To interesujące pytanie, ale może bardziej odpowiednie dla ServerFault, ponieważ bardziej dotyczy to, jak dystrybuować aplikacje serwerowe, niż tylko je pisać. Może powinieneś opublikować drugi post na SF, który odnosi się do tego i dodać link do Q w SF. W ten sposób uzyskasz lepszy widok zarówno od programistów, jak i administratorów systemu!
Wim ten Brink
@phoebus również CloudSigma, który jest mniej znany, ale jest bardzo skalowalny.
AwesomeUser

Odpowiedzi:

58

Dobre pytanie! Jak zauważyłeś, różne oferty pasują do różnych kategorii:

EC2 to infrastruktura jako usługa; otrzymujesz instancje maszyn wirtualnych i robisz z nimi, jak chcesz. Serwery Rackspace Cloud są mniej więcej takie same.

Azure, App Engine i Salesforce to platforma jako usługa; oferują jednak różne poziomy integracji: platforma Azure prawie umożliwia uruchamianie dowolnych usług w tle, podczas gdy App Engine jest zorientowany na krótkotrwałe zadania obsługi żądań (chociaż obsługuje również kolejkę zadań i zaplanowane zadania). Nie jestem zbyt zaznajomiony z ofertą Salesforce, ale rozumiem, że pod pewnymi względami jest podobna do App Engine, chociaż jest bardziej wyspecjalizowana w swojej konkretnej niszy.

Usługi w chmurze objęte zakresem oprogramowania jako usługi obejmują wszystko, od elementów infrastruktury, takich jak Amazon's Simple Storage Service i SimpleDB, po kompletne aplikacje, takie jak FogBugz hostowany przez Fog Creek i oczywiście StackExchange.

Dobra ogólna zasada jest taka, że ​​im wyższy poziom oferty, tym mniej pracy będziesz musiał wykonać, ale jest ona bardziej szczegółowa. Jeśli potrzebujesz narzędzia do śledzenia błędów, użycie FogBugz będzie oczywiście najmniej skuteczne; zbudowanie jednego na szczycie App Engine lub Azure to więcej pracy, ale zapewnia większą wszechstronność, podczas gdy budowanie go na surowych maszynach wirtualnych, takich jak EC2, to jeszcze więcej pracy (w rzeczywistości o wiele więcej), ale zapewnia jeszcze większą wszechstronność. Moja ogólna rada jest taka, aby wybrać platformę najwyższego poziomu, która nadal spełnia Twoje wymagania, i budować na jej podstawie.

Nick Johnson
źródło
cześć, obecnie używamy GoDaddy i arvixe, ale planujemy przenieść się na Amazon AWS lub Azure, czytam stąd, że w przypadku AWS wymagana jest duża zmiana w kodzie, ale jako sklep internetowy nie chcemy żadnych zmian w kod, ponieważ zajmuje to dużo czasu, więc w takiej sytuacji jaki hosting najlepiej wybrać?
shaijut
13

To doskonałe pytanie. Pełne ujawnienie, ponieważ mam słabość do platformy Azure, ale mam doświadczenie z innymi.

Myślę, że platforma Azure wyróżnia się na tle innych, to szybkie przejście z wersji lokalnej do chmury. Na przykład -

  • SQL Azure - zmień parametry połączenia, prześlij bazę danych, gotowe!
  • Kolejki działają podobnie jak MSMQ.
  • Plamy są w zasadzie kroplami w każdy sposób, w jaki nimi potrząsasz, ale skalują się jak szalone.
  • Składnik tabeli jest dobry, ponieważ zapewnia niesamowitą skalowalność par nazwa / wartość - ale wymaga trochę przyzwyczajenia.
  • Usługa Service Bus jest moją ulubioną usługą, ponieważ pozwala na różnorodne paradygmaty komunikacyjne. Dwa punkty końcowe SB najpierw próbują połączyć się ze sobą, jeśli nie mogą, a następnie przechodzą przez chmurę - zapewnia bardzo bezpieczne i skalowalne przetwarzanie, gdy zapory ogniowe zwykle przeszkadzają.
  • Lista kontroli dostępu - zazwyczaj sparowana z magistralą usług, aby mieć pewność, że właściwe osoby mają dostęp do właściwych rzeczy - pomyśl o SAML w chmurze.

Mam nadzieję że to pomogło!

Derek
źródło
8

Moje doświadczenie w chmurze jest obecnie ograniczone do Salesforce.com

W przypadku standardowych operacji biznesowych i automatyzacji zapewnia znaczną liczbę funkcji, które pozwalają nam bardzo szybko uruchamiać i uruchamiać aplikacje. Szczególnie zyskujemy na:

  • Bezpieczeństwo (administratorzy mogą kontrolować dostęp do obiektów i pól)
  • Przepływ pracy i zatwierdzenia
  • Automatyczne generowanie interfejsu użytkownika
  • Wbudowane raporty i dashboardy
  • Cały system (łącznie z naszymi niestandardowymi zmianami) jest dostępny za pośrednictwem usług internetowych
  • Możliwość udostępniania danych w systemie za pośrednictwem serwisów publicznych (np. ECommerce)
  • Duża biblioteka aplikacji innych firm do rozwiązywania standardowych problemów

Platforma NIE rozwiązuje każdego problemu.

Nie użyłbym platformy do modelowania elektrowni jądrowej ani do budowy następnego twittera.

Craig Harris
źródło
6

Głównymi aspektami przetwarzania w chmurze jest oszczędność kosztów poprzez płacenie za użytkowanie i umożliwienie natychmiastowego rozmieszczenia zasobów obliczeniowych.

Koszty nie są wyłącznie x kwotą centów za wystąpienie za godzinę. Koszty obejmują utrzymanie, rozwój, administrację itp. Ogromną zaletą chmury, moim zdaniem, jest uwolnienie klientów od konieczności zarządzania wszystkim, co nie mieści się w zakresie ich podstawowych kompetencji biznesowych . Jeśli prowadzę działalność ubezpieczeniową, chcę, aby moi programiści skoncentrowali się na moich problemach ubezpieczeniowych, które pomagają w rozwiązywaniu potrzeb moich roszczeń, stawek itp. Wolałbym raczej unikać problemów z serwerami pocztowymi, serwerami plików, repozytoriami dokumentów i administrowaniem poprawkami systemu operacyjnego , dodatki Service Pack itp.

Dlatego moim zdaniem największe korzyści płyną z oferty chmurowej SaaS i PaaS. Do IaaS należy się udać tylko wtedy, gdy PaaS lub SaaS mają poważne ograniczenia co do konkretnych potrzeb (np. Muszę zainstalować zestaw zastrzeżonych komponentów COM, a Azure ich nie obsługuje).

SaaS jest dobre dla aplikacji typu towarowego, które nie są podstawową działalnością klienta, ale są bardziej użytecznymi. Są to typowe systemy przesyłania wiadomości, portale, repozytoria dokumentów, systemy poczty elektronicznej, CRM, ERP, księgowość itp. Itd. Po co odkrywać koło na nowo, pisząc własne, skoro można dostosować dobrze obsługiwany produkt innej firmy.

PaaS doskonale nadaje się do podstawowego oprogramowania biznesowego, które obsługuje główną ofertę biznesową firm. Uwalnia klientów od konieczności zajmowania się zarządzaniem systemem operacyjnym i pozwala im skoncentrować się na rozwoju systemu biznesowego - czymś, czego nikt inny nie może zrobić dla klienta.

Igorek
źródło
3

Można również skorzystać z zalet PaaS (powiedzmy, Google App Engine) i rozszerzyć go, czasami i jeśli to konieczne, wyciągając niektóre maszyny wirtualne od dostawców IaaS (np. Amazon), aby wykonać pewne operacje na numerach, a następnie po prostu odesłać dane wyjściowe do Google App Engine.

W ten sposób uzyskujesz to, co najlepsze z obu światów - możesz szybko tworzyć skalowalne aplikacje w GAE, a następnie zawsze możesz je rozszerzyć, uruchamiając dowolny program z maszyn wirtualnych Amazon.

joemar.ct
źródło
Brzmi interesująco @ joemar.ct! Jakie to byłyby zadania? Gdzie mogę znaleźć samouczki, jak to zrobić?
Andru
2

To ciągle się zmienia, teraz Windows Azure obsługuje również maszyny wirtualne, więc jest teraz również dostawcą IaaS.

Albert Cheng
źródło