Я чувствую, что наступает момент матрицы ... "Что такое облако? Облако вокруг нас, тюрьма для вашей программы ..." (что? Ответы на часто задаваемые вопросы приносят вам чувство юмора ...)
Хорошо, так серьезно, что такое облако? Это зависит от реализации, но обычные функции включают в себя масштабируемый вычислительный ресурс и плату за процессорное время, область хранения и т. Д. Так что да, это немного похоже на разработку на вашем VPS / обычном сервере.
Насколько я понимаю, Google App Engine позволяет вам потреблять столько, сколько вы хотите. Управление внутренними ресурсами осуществляется Google и выставляется вам счет, и вы платите за то, что вы используете. Я считаю, что есть даже свободный порог.
Amazon EC2 предоставляет API, который фактически позволяет вам добавлять экземпляры виртуальных машин (кто-то исправит меня, если я ошибаюсь), предварительно настроив их, развернуть другой экземпляр вашего веб-приложения, поговорить между частными диапазонами IP, если хотите ( slicehost определенно разрешает это). Таким образом, EC2 может позволить вам действовать как гигантский балансировщик нагрузки на внешнем интерфейсе, передавая работу целому числу виртуальных машин на заднем конце, или показывать все это публично, на ваш выбор. Я не уверен в точных деталях, потому что я не создавал систему, но я так понимаю.
У меня есть чувство (но я меньше всего знаю о Azure), что в Azure управление ресурсами для вас автоматически выполняется корпорацией Майкрософт в зависимости от того, что использует ваше приложение.
Итак, в общем, облако - это разные вещи в зависимости от того, какое именно облако вы выберете. EC2, похоже, предоставляет API для управления ресурсами, GAE и Azure - это среды, которые растут и сужаются в фоновом режиме в зависимости от вашего использования.
Примечание. Мне известно, что в GAE существуют определенные ограничения, особенно в Java. Через минуту я отредактирую в другой ветке, где кто-то сделал отличный комментарий к одному из моих сообщений на этот счет.
Редактировать как и обещали, см. Эту ветку: Архитектура облачной агностики?
Что касается выбора фреймворка, это действительно не имеет значения, насколько я понимаю. Если вы планируете развертывание на одной из этих платформ, вы можете проверить наличие фреймворка / языка. Лично я только начал Django и люблю его, изучив python некоторое время назад, поэтому, по моему совершенно непредвзятому мнению, использую Django. Другие разработчики, вероятно, будут рекомендовать другие вещи, исходя из своих предпочтений. Что ты знаешь? Что тебе больше всего нравится? Что тебе нравится больше всего? Я бы пошел с этим. Я выбрал Django просто потому, что я не такой большой поклонник PHP, мне нравится Python, и я был доволен фреймворком, когда впервые поиграл с ним.
Редактировать : Итак, как вы пишете облачный код? Вы разрабатываете свое программное обеспечение таким образом, чтобы оно соответствовало одной из этих архитектур. Опять же, посмотрите ветвь, не зависящую от облаков, для действительно хорошего обсуждения способов сделать это. Например, вы можете поговорить с некоторыми службами GAE, которые масштабируются. То, что они на GAE (пример), на самом деле не имеет значения, вы используете идеи слабой связи. По сути, это всего лишь шаг от идеи веб-сервиса.
Кроме того, еще одна особенность облака, о котором я забыл упомянуть, - это идея предоставления CDN для вас - некоторые облачные реализации могут перемещать ваши данные по всему земному шару, чтобы сделать его более эффективным для обслуживания, или просто потому, что именно там они и работают. получил место. Если это проблема, не используйте облако.