нужно некоторое руководство по использованию Amazon AWS - PullRequest
6 голосов
/ 23 августа 2010

время от времени я читаю / слышу о AWS, и теперь я пытался читать документы.Но такие документы, похоже, написаны для людей, которые уже знают, какой AWS им нужно пользоваться, и ищут только то, как его можно использовать.

Итак, для себя, чтобы лучше понять AWS, я пытаюсь набросать гипотетическое веб-приложение.с несколькими вопросами.

Цель приложения - изменить контент, например, видео или изображения.Таким образом, у пользователя есть некоторый веб-интерфейс, где он может загружать свои файлы, выполнять некоторые настройки, а сервер захватывает файл и модифицирует его (например, перекодирует).Служба также извлекает звуковую дорожку из видео и пытается проиндексировать произнесенные слова, чтобы клиент мог искать в своих видео.(ну, это просто гипотетически)

Итак, мои вопросы:

  • , учитывая мой собственный домен oneofmydomains.com, возможно ли разместить полный веб-интерфейс на AWS?я думал об использовании GWT для создания интерфейса и просто доставки JS / изображений через AWS, но какое простое хранилище?Как насчет index.html, есть ли экземпляр EC2, необходимый для размещения веб-сервера, который должен работать круглосуточно, что приводит к затратам?
  • теперь у пользователя есть интерфейс с формой входа в систему, можно лиуправлять входами в AWS?здесь я также думаю об экземпляре EC2, на котором размещена база данных, но это также приведет к затратам, и я не уверен, что есть лучший способ?
  • пользователь вошел в систему и загрузил файл.какое решение для хранения можно было бы использовать для сохранения оригинального и измененного контента клиентов?
  • теперь пользователь хочет просмотреть статус своих загрузок, это означает, что мне нужен какой-то ACL, чтобы клиент мог видеть только свой собственныйфайлы.Нужно ли мне использовать для этого базу данных (например, EC2) или Amazon предоставляет какой-то ACL, поэтому веб-интерфейс GWT будет защищен без EC2?
  • файлы клиентов перекодируются, а звуковая дорожкаиндексируются.поэтому он хочет искать видео.Какой сервис можно использовать для создания и ведения индекса для каждого клиента?

надеюсь, что кто-то может дать несколько ответов, поэтому я лучше понимаю AWS, как его использовать

thx!

1 Ответ

11 голосов
/ 24 августа 2010

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, скорее всего, будет представлять большую часть работы во время миграции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...