Amazon AWS предлагает целую экосистему сервисов, которая должна охватывать все аспекты данной архитектуры, от хостинга до хранения данных, обмена сообщениями и т. Д. Вопрос о том, подходят ли они наилучшим образом для конкретной цели, должен решаться в каждом конкретном случае.основа дела.Поскольку ваш вопрос достаточно широк, я просто расскажу о некоторых основах, которые предлагает AWS, и о том, для чего предназначены разные типы услуг:
EC2 (Elastic Cloud Computing)
Облачное решение Amazon, которое в основном совпадает со старыми технологиями виртуальных машин, но «облако» предлагает дополнительные узлы и боты, такие как автоматическое выделение ресурсов, масштабирование, выставление счетов и т. Д.
- youплатить за то, что вы используете (по часам), за базовый (один ЦП, 1,7 ГБ ОЗУ), вероятно, будет стоить вам чуть менее 3 долларов в день, если вы будете запускать его 24/7 (на экземпляре Windows)
- есть несколько разных ОС на выбор, включая linux и windows, экземпляры linux дешевле запускать без стоимости лицензии, связанной с windows
- после того, как вы настроите сервер так, как вам нужно, включаяНа любом обновлении / исправлении сервера вы можете создать свой собственный AMI (образ машины Amazon), который затем можно использовать для вызова другого идентичного экземпляра
- howeveЕсли все ваши html запечены в образе, это усложнит обновления, поэтому нормальным подходом является включение службы (например, службы Windows), которая будет извлекать последний пакет развертывания из службы хранилища (см. далее S3) и обновлятьНа сайте при запуске и с интервалами
- есть Elastic Load Balancer (который имеет свою стоимость, но в большинстве случаев нужна только одна), которую вы можете поставить перед всеми вашими веб-серверами
- есть также служба Cloud Watch (опять же, за дополнительную плату), которую вы можете включить для каждого отдельного экземпляра, чтобы помочь вам отслеживать ЦП, вход / выход в сеть и т. д. вашего работающего экземпляра
- , который вы можете настроитьAutoScalers, которые могут автоматически вызывать или завершать экземпляры на основе некоторой метрики, например, завершать 1 экземпляр за раз, если среднее использование ЦП составляет менее 50% в течение 5 минут, вызывать 1 экземпляр за раз, если средний ЦП превышает 70% в течение 5 минутминут
- Вы можете использовать экземпляры в качестве веб-серверов, использовать их для запуска БД или Memcache cблеск и т. д. выбор за вами
- Как правило, я бы не рекомендовал, чтобы экземпляры Amazon общались с БД за пределами Amazon, поскольку обратная передача данных намного дольше, обычный подход заключается в использовании SimpleDB (см. ниже)в качестве базы данных
- AmazonSDK содержит достаточное количество классов, чтобы помочь вам написать какую-либо настраиваемую службу мониторинга / масштабирования, если вам когда-либо понадобится, но консоль AWS в любом случае позволяет вам выполнять большую часть конфигурации
SimpleDB
Нереляционное хранилище данных Amazon по ключам и значениям по сравнению с традиционной базой данных, за которую вы платите штраф за производительность запроса, но получаете высокую масштабируемость без необходимости делать какие-либодополнительная работа.
- вы платите за использование, т. е. сколько работы требуется для выполнения вашего запроса
- , чрезвычайно масштабируемый по умолчанию, Amazon масштабирует экземпляры SimpleDB на основе трафика без необходимостисделать что-нибудь, И любой контроль в этом отношении
- данные разделены на «домены» (эквивалент таблицыв обычной базе данных SQL)
- данные не являются реляционными, если вам нужна реляционная модель, то посмотрите Amazon RDB, у меня нет никакого опыта с этим, поэтому не лучший человек, чтобы комментировать это ..
- вы можете выполнить SQL-запрос к базе данных, обычно через какой-то плагин или инструмент, Amazon не предоставляет интерфейс для этого на данный момент
- осознавать «возможную согласованность»,данные дублируются в нескольких экземплярах после того, как Amazon увеличивает вашу базу данных, и синхронизация не гарантируется, когда вы делаете обновление, поэтому возможно (хотя и весьма маловероятно) обновить некоторые данные, а затем сразу же прочитать их и вернуть старые данные
- есть механизмы «Согласованное чтение» и «Условное обновление» для защиты от возможной проблемы согласованности. Если вы разрабатываете в .Net, я предлагаю использовать SimpleSavant клиент для общения с SimpleDB
S3 (Простая служба хранения)
Служба хранения Amazon, опять же, чрезвычайно масштабируемая и безопасная - когда вы сохраняете файл на S3, он реплицируется на несколько узлов, поэтому вы сразу получаете возможность DR.
- вы платите только за передачу данных
- файлы хранятся на ключе
- вы создаете «корзины» для хранения ваших файлов, и каждая корзина имеет уникальный URL-адрес (уникальный для всех аккаунтов Amazon и, следовательно, для учетных записей S3)
- CloudBerry S3 Explorer - лучший клиентский интерфейс, который я использовал в Windows
- Используя AmazonSDK, вы можете написать свой собственный слой репозитория, который использует S3
Извините, если это немного затянуто, но это 3 самых популярных веб-сервиса, которые предоставляет Amazon, и они должны отвечать всем требованиям, которые вы упомянули. Мы используем Amazon AWS в течение некоторого времени, и все еще есть некоторые изломы и ошибки, но в целом он движется вперед и довольно стабильно.
Одним из недостатков использования чего-то вроде aws является блокировка поставщика, в то время как вы можете запускать свои сервисы за пределами amazon и в своем собственном центре обработки данных или перемещать файлы из S3 (хотя и за определенную плату), выход из SimpleDB, скорее всего, будет представлять большую часть работы во время миграции.