Rails AWS Architecture - переход с одной машины Linode на AWS

У нашего стартапа есть приложение, которое работает уже почти год Rails/MySQL+MongoDB/Unicorn/Nginx успешно на одной коробке Linode.

Недавно мы решили перейти на AWS по нескольким причинам:

  1. Стоимость - мы получили кредит AWS на несколько тысяч долларов (через программу ускорения, в которой мы находимся), и было бы стыдно не использовать его.
  2. Масштабируемость - в последнее время мы начинаем получать довольно много прессы, и число наших пользователей растет. Что касается стоимости коробки Linode и того, что мы получаем взамен, она не будет хорошо масштабироваться в ближайшем будущем.
  3. Возможности - стек AWS кажется впечатляющим в имеющихся возможностях и инструментах, и я слышал и читал много хорошей (и немного плохой) прессы о том, как это может быть хорошим местом для начала роста.

В целом, проблемы стоимости и масштабируемости для нас выигрывают, так как бесплатный надежный хостинг трудно превзойти (ну, пока мы не исчерпаем кредит AWS). Мы еще не получили средства, поэтому все расходы на ИТ выходят из моего собственного кармана (несколько сотен долларов в месяц).

В общем, я хочу перенести наше приложение на AWS, и я думаю о следующем стеке:

     Elastic-Load-Balancer
              |
              |
[1+ Rails App over Unicorn/Nginx]
              |
              |
[1+ DB Server (MySQL + MongoDB)]

Где серверы приложений или БД могут расти горизонтально по мере необходимости. Поскольку мы еще не выдвигаем точку останова, я подумал о том, чтобы начать с 1 сервера приложений, 1 дБ сервера (пока не RDS) и ELB + Route53 для управления DNS и балансировки нагрузки.

Я никогда не использовал AWS и не являюсь экспертом DevOps, поэтому я хотел получить отзывы о нескольких вещах:

  1. Как мне управлять частью стека веб-сервера в отношении настройки unicorn+nginx? До сих пор все было на одной машине и поэтому не представляло большой проблемы. Должен ли я сохранить настройки nginx.conf и просто прослушивать nginx на портах 80/443 в каждом экземпляре приложения?
  2. Я хотел бы иметь возможность увеличивать уровень приложения, просто добавляя больше экземпляров (AMI) по мере необходимости. Будет ли это возможно в краткосрочной перспективе? Например, пока у нас нет денег, чтобы нанять парня-девопа или закрыть магазин из-за бедности:)
  3. Будем весьма благодарны за любые другие извлеченные уроки или вещи, которые следует иметь в виду.

Обратите внимание - по разным причинам я пока не хочу использовать OpsWork s: наш сервер приложений очень настроен, никакой поддержки Mercurial, не очень зрелый и т. Д.

Благодарю.

1 ответ

Aws может обеспечить масштабируемость в случае необходимости. Предложения по архитектуре

  • использовать эльб для первого уровня
  • использовать два или более серверов приложений (по причинам избыточности)
  • используйте RDS, если можете

Теперь... Если RDS не вариант, вы в конечном итоге с ведущим БД и раба. Для БД я рекомендую чередующиеся тома ebs.

Управление конфигурацией может быть чем угодно, если вам это удобно. Конечно, есть шеф-повар, марионетка и тому подобное.

Другие вопросы по тегам