З точки зору розробника, яку платформу ви б розглядали для великого соціального веб-додатка? Якщо ви могли б надати деякі деталі щодо того, що ви вважаєте сильними сторонами альтернативи, було б чудово.
З точки зору розробника, яку платформу ви б розглядали для великого соціального веб-додатка? Якщо ви могли б надати деякі деталі щодо того, що ви вважаєте сильними сторонами альтернативи, було б чудово.
Відповіді:
Я написав ту саму програму для GAE (Python та тепер Java) та Azure. Я, мабуть, продовжую використовувати обидва, для різних речей. Ось кілька думок, які я буду постійно оновлювати:
Причини використання GAE:
Причини використання Azure:
Я чітко упереджений - працюю над командою App Engine, яка займається відносинами з розробниками - але це моє враження:
Вони безпосередньо не порівнянні. Існує набір додатків, які ви можете написати для будь-якого з них, але ви пишете іншу річ у кожному випадку. App Engine забезпечує обмежене середовище виконання - без запису у файли, без сокетів тощо - і нереляційних СУБД. Але взамін ви отримуєте середовище виконання, яке масштабується на невизначений термін, і розумну ступінь впевненості, що ваш додаток буде масштабуватись настільки великими, наскільки ви хочете.
Azure, з іншого боку, забезпечує дещо менш обмежене середовище, що дозволяє писати ширший набір програм, але вимагає, щоб ви писали більше - оскільки ви реалізуєте більше стеку самостійно - і забезпечує набагато більшу впевненість у масштабованості .
Нарешті, AWS надає остаточне рішення самостійно. Вони надають і апаратне забезпечення, і сховище, і не багато іншого. Ви будуєте свій стек з нуля, підтримуєте його, оновлюєте його тощо. Ваш додаток масштабує тоді і лише тоді, коли ви записуєте його до масштабу, що не є невеликим завданням. Але ви отримуєте повний контроль над своїм обладнанням.
Моя порада буде: Якщо ваш додаток відповідає моделі App Engine - і додаток у соціальній мережі, ймовірно, буде досить хорошим прикладом тих, що це роблять - напишіть свою програму в App Engine (Java або Python, ваш вибір). Це дешевше, і набагато простіше написати додаток, який масштабує масштаби.
Якщо ваш додаток не відповідає моделі GAE, виберіть Azure або AWS, залежно від того, чи пишете ви для стека MS та від того, наскільки ви хочете контролювати середовище виконання. Якщо більша частина вашого додатка підходить для GAE, але невеликі деталі цього не роблять, ви можете розглянути гібрид - наприклад, живу службу на GAE, але зберігання на S3 або групову обробку на EC2.
Для мене вирішальним фактором є блокування.
Якщо ви вибрали для Google, ваша програма працюватиме лише в Google. Якщо через деякий час ви виявите себе менш задоволеними, ви застрягли.
Якщо ви обираєте для MS, ваша програма працюватиме лише на Azure. Однакові речі.
В Amazon ви отримуєте (а) віртуальний сервер (и), які працюють точно так само, як машини, якими ви звикли. Не задоволений? Підберіть свою програму, встановіть реальне обладнання, готово.
Моїм особистим вибором зараз був би Google з Java (навіть якщо я .NET більшість часу). Подумайте про витрати - їх схему важко порівняти.
Перегляньте цю статтю - http://www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure
Як і Арахнід, я можу бути упередженим, будучи гуглером. Однак я також акціонер Амазонки, так що упередженість може частково компенсувати перший ;-). Немає досвіду Azure (хоча я також маю акції MSFT, тож сподіваюся, що вони теж добре - ще одна упередженість ;-)
Моє дуже просте враження полягає в тому, що App Engine легко пропонує вам можливість працювати (в межах своїх обмежень), просто кодуючи - ніяких завдань системного адміністрування не потрібно. AWS набагато гнучкіший, але для того , щоб скористатися цією гнучкістю , вам знадобиться велика робота з адміністрування системи (і зовсім не тривіальна). Отож, врешті-решт, я би запропонував пропозицію Арахніда: якщо App Engine може задовольнити ваші потреби, абсолютно почніть на це; якщо вам потрібна більша гнучкість, AWS здається шляхом (якщо тільки невідомі мені можливості Azure не повинні відповідати кращому - але я думаю, AWS буде більш гнучким незалежно від того, що Azure може робити, наприклад, з AWS ви можна навіть вибрати, яку ОС використовувати, якщо вам це потрібно).
Я щойно почав працювати з Azure, і я вже вражений, що ви можете це зробити в F #: http://code.msdn.microsoft.com/fsharpazure! Поки що це єдина хмарна платформа, яка дозволяє керувати функціональним програмуванням керовано (звичайно, ви можете зробити Haskell в EC2 ... або Algol 68 для цього). Я дуже вражений якістю інтеграції Visual Studio - ви отримуєте локальну "хмару" для тестування, DevFabric, зі сховищем, яке є справжнім SQL сервером, тому ви можете грати перед завантаженням. Чи може GAE це зробити? Дивлячись на Azure, вивчаючи VS за допомогою F # (приходить з Linux та OCaml), я б хотів, щоб я давно перейшов до MS стека. Створити сховище SQL і перевірити його в VS дуже просто - це дуже зручно. Open Source не має відповідних наборів інструментів, і час, коли люди привертають увагу MS - вони тут зробили приголомшливу роботу. Я, безумовно, дотримуюся своєї бази Mac OSX (подвійне завантаження у Vista), і я знаю, З можливістю Azure розвиватися локально, я отримаю окрему вікні для розробки Azure. .NET справді надзвичайний, коли ви приїжджаєте з світу труб Unix - PowerShell, SQL і LINQ, C # і F # (що є моєю ключовою причиною) - але, виявляється, все це додає і варто вивчити додатково, а не замість цього Linux, Linux; і у всіх випадках Azure розширить ваш кругозір.
Наскільки я люблю GAE, одна з головних причин, чому я збираюсь з EC2 над GAE для мого поточного проекту, полягає в тому, що мені потрібно мати можливість переднього кінця моєї програми обслуговуватися з центрів обробки даних, розташованих в різних куточках світу. GAE працює в одному центрі обробки даних одночасно. Наприклад, мені потрібні користувачі в Азії для удару серверів в Азії для найшвидшого часу відгуку для мого застосування. Додайте можливість керувати dns, завантажувати балансири, базу даних за вибором, натискання флумача в S3 для hadoop обробки даних тощо ... і EC2 стає справді переконливим рішенням.
Деякі речі, які слід врахувати:
Швидкість: як швидко ви можете бути продуктивними з обраним середовищем, які документи існують і чи вони чіткі та добре підтримувані зразки очевидні та корисні
Вартість: вартість є фактором, але якщо ви робите комерційну програму, яка насправді має клієнтів, це все можливі варіанти. Якщо ви припускаєте, що Azure з однією програмою на "маленькому" екземплярі працює близько 90 доларів на місяць за використання 24x7 ... скільки користувачів ви можете обслуговувати за цей час? Додайте другий екземпляр для надмірності ... все ще не так дорого, якщо ваш трафік цього вимагає. Якщо це не так, чому ви знаходитесь у хмарі замість дешевого розміщеного постачальника послуг? Більші фактори вартості приходять у ваш час, щоб реалізувати це. AWS - це власне рішення. Це дуже багато для вирішення, щоб отримати рішення, яке буде стабільним та добре керованим. У Azure та GAE це немає у вікні. На мій погляд, AWS є найдорожчим завдяки роботі, яку вам належить вкласти. Вам справді потрібен контроль над нею при такому тонкому рівні деталізації? Якщо так,
Здатність робити те, що ви хочете: AWS весь шлях. Azure - друге, GAE - третє. Немає великого, якщо ви хочете, це Java та Python. Біггі, якщо ви хочете зробити реляційну БД або обширну багатопотокову обробку даних в C ++ (не впевнений, чи це зараз робить це?).
Що з портативністю? Чи можете ви пізніше повернути його на власне ферму чи перенести його на іншу хмарну ферму? Всі вони певною мірою є портативними.
Думаю багато про що подумати ... все ще про це дізнаюся сам.
Якщо вам потрібно запустити екземпляри вручну, щоб задовольнити попит, то це не хмара.
Azure та EC2 - лише віртуальні сервери з деякими службами на боці.
Оновлення:
EC2 та Azure дають вам можливість керувати запуском нових екземплярів автоматично під навантаженням, але вам все одно доведеться керувати цим. І ви платите за випадки, які не працюють і простоюють.
GAE обробляє це автоматично нестандартно, і він стягує плату лише за час, коли ваш код працює під час запитів.
Ось деякі інші міркування.
GAE - сидить вище на платформі як стек сервісних послуг, а потім AWS та Azure, весь трафік проходить через їх DNS ghs.google.com, динамічно завантажуючи сервіс вашої сторінки через одну зі своїх машин, що дозволяє їм утримувати низькі ціни. При такому підході масштабування є дрібнозернистим, Мінуси не є статичним ip, схильним до фільтрування або блокування. Зважаючи на відсутність статичного обмеження ip, ви не зможете налаштувати жоден сайт, визначений https cert.
AWS і Azure надають вам майже статичну IP-адресу та спеціальний VM, що забезпечує такі основні вимоги, як сертифікат https. Ви також отримаєте підтримку реляційного зберігання. Вартість також вища, щоб відобразити цей виділений VM факт, і ви будете масштабувати за ВМ так в 40 доларів / місяць шматки. Перевага полягає в тому, що оскільки ви отримуєте VM для себе, ви не обмежуєтесь обмеженням обробки процесора на 30 секунд на GAE і можете виконувати більші завдання.
Тож якщо ви розглядаєте клієнтські бази у відфільтрованих країнах, або хочете, щоб статичний IP-код здійснив власну настройку DNS, або є вимоги, що потребують реляційних db або більше 30 секундних завдань. AWS, Azure було б набагато привітніше працювати.
Подивіться на рішення, які пропонує кожна хмара, і перейдіть на гібридну модель. Для деяких проблем потрібен молоток, а інші - викрутка. Ознайомтеся зі своїми інструментами та застосуйте їх до правильної проблеми.
У мене недостатньо репутації, щоб залишити коментар до однієї з відповідей вище. Придатність будь-якого із цих хмарних рішень залежить від багатьох факторів, включаючи ваші потреби та набір навичок.
У мене є проект соціальних мереж, для якого потрібна база даних nosql. AppEngine було б хорошим рішенням, якби мати кращу підтримку різних фреймворків. Django з адаптером nonrel працює на Python GAE, але я віддаю перевагу Rails з багатьох причин. Rails3 не працює вже кілька місяців, і ніхто в громаді чи в команді GAE ще не написав рецепт, щоб його підтримати. Якщо у вас є набір навичок - знаючи рубіни та рейкові внутрішні, джербі та внутрішні органи GAE - писати власний рецепт, ви не в силах інших людей просто потрапити на платформу.
AWS - це набагато більше роботи, але принаймні ви можете потрапити на платформу будь-якими інструментами та вирішити багато питань адміністративно, а не як розробник внутрішніх справ або прихильник вищих повноважень.
Моя скарга на Heroku та EngineYard, для розробників Ruby, - це таємниця щодо масштабування баз даних. Як вони масштабують?
У моєму випадку я вибираю рішення NoSQL, і Монго, здається, є хорошим вибором. MongoMachine, здається, є рекомендованим рішенням для подібних Heroku або EY, але це божевільно дорого. $ 2,50 / ГБ пам’яті? Зберігання становить лише 0,10 ГБ / місяць на GAE або EBS.
Я почав експериментувати з Google App Engine порівняно недавно, і для веб-соціальної мережі я вважаю, що він буде задовольняти всі ваші потреби. Зробити вивішування його легко, і його можна використовувати або з Python, або з Java. Це правда, що він не дає вам доступу до файлів, але для вашого додатка, GQL (подібний SQL інтерфейс до бази даних, яку вони надають), ймовірно, буде більш ніж достатньо (і це досить надійно).
Одне, що ви можете розглянути, - це те, що програма на GAE може використовувати інтерфейс, який дозволяє користувачам мати облікові записи Google або облікові записи в домені за допомогою входу в Google Apps (ярлик). Ви обираєте будь-яке з них. Тож якщо ви вже використовуєте веб-сайт Google Apps, Google App Engine стане чудовим вибором для вас, оскільки ваші користувачі не повинні реєструвати нові облікові записи.
EDIT: Як зазначав Арахнід, ви не можете кодувати власну систему входу. Вибачте, якщо я вас турбував.
Щодо інших двох альтернатив, я про них лише читав і не перевіряв їх. Але я вважаю, що GAE забезпечує простіші рамки, з моїх досліджень, і, як ви згадали, великі ціни.
У будь-якому випадку ви можете спробувати GAE, використовуючи безкоштовну квоту на простір та пропускну здатність, і побачити, чи відповідає вашим потребам.
Удачі.
Azure має Windows / SQL як сервер "Платформа як послуга", і ви, безумовно, НЕ застрягли, просто поверніться до Windows / SQL у власному центрі обробки даних (Ні Linux, але так, вони підтримують Java, Python, PHP, Ruby, Tomcat , Apache та ін.). Як і Amazon, вони також забезпечуватимуть повністю доступний варіант віртуальної машини, тому ви можете встановити / запустити все, що завгодно.
Amazon має лише Віртуальну машину, тож вам все одно доведеться вбудовувати, виправляти, ліцензувати, захищати і т. Д. ... Види ураження переваг переходу до хмари, на мою думку. Ви щойно перенесли щось із центру обробки даних в інший.
У Google немає реляційної бази даних, і ви будете STUCK. Вони дійсно задовольняють лише розробників Python та деяку обмежену підтримку Java. Вони, на мою думку, насправді не є гравцем у хмарному просторі.
Одне, що не згадується тут, - це те, що хтось вважає про "Шифрувальну службу Windows ACure AppFabric Bus & ACS", окрім жахливого імені ...?
Це, мабуть, є дійсно потужним набором функцій інтеграції, що зробить Azure привабливою з точки зору будь-якого бізнесу, який інвестує в інфраструктуру приміщень.
Деякий час експериментуючи з Amazon EC2 і стикаючись з деякими затримками, я почав досліджувати Google Apps, експериментуючи через вартість. Я вважаю за краще Ерланг як мову розвитку, але я можу мати справу з Python, так що це не було вирішальним фактором. Коли я не бачив статичного IP-адреси, це було. Крім того, вся частина про те, що він вище на стеку, змушує мене трохи нервувати щодо продуктивності.
Я хотів би, щоб AWS був дешевшим, але поки Google не надає статичні IP-адреси та бажано додаткові мови, такі як Scala, JRuby та Erlang, вибір для мене зрозумілий: AWS . Перші дві мови теж повинні бути простими, обидві вони базуються на JVM. Можливо, це вже було зроблено вже через обстановку, оскільки, здається, я пам’ятаю, що читав щось про це.
Хлопці, я думаю, окрім того, що просто думати про те, яку платформу він підтримує, порівняння має бути на масштабованості, простоті доступу, універсальності (з точки зору впровадження), може вміщувати різні хостингові платформи, однаково економічно вигідні для ділового випадку, має багато рішень для підприємства програми (а саме: зберігання, доставка, пропускна здатність, політика ліцензування тощо), репутація надійності якості обслуговування, аудит безпеки, прозорість виставлення рахунків, а також витрати тощо. Якщо ви подивитесь на всі вищевикладені показники, я вважаю, що показник AWS набагато вище . Я керую 10 виробничими рахунками на AWS з 2-х років і в той же час компанія / підрозділ змогли задовольнити величезні вимоги до масштабованості клієнтів .... Без сумніву, AWS потрібно підтримувати інфраструктуру, оновлення (якщо такі є / якщо потрібно), охорона тощо. Але у вас є всі інструменти, доступні на ринку / мережі, вільно. Існуючі ресурси ІТ також можуть підтримувати всю інфраструктуру на AWS.
Azure sure має інтегрований IDE з VS 2010, але фактична вартість будь-якої хмари розпочнеться після успішного розгортання програми (платформи для розгортання). Ще довгий шлях до визрівання для вирішення сценаріїв розгортання в реальному часі / масштабування виробництва ....... Оскільки всі знають, що MS грає багато прихованих програм щодо витрат .. дуже складно розібратися в понесених витратах або збираються понести (при надсиланні кошторис).
GAE дуже специфічний для додатків Python / Java. Величезні зусилля (як з точки зору ресурсу + вартості) для перезапису програми (існуючої), тестування, розгортання тощо.