Назад | Перейти на главную страницу

Должно ли ваше веб-приложение в облако или несколько VPS?

Допустим, у нас есть веб-приложение и есть автоматизированный процесс обновления БД. На данный момент все они работают на одном сервере.

Мы хотели бы отделить пакетный процесс от активности apache и БД:

Одним из решений может быть установка 3 VPS (например, в Slicehost / Rackspace).

Или мы должны пойти в облако? Скажем, Amazon EC2: установка трех инстансов EC2 - это действительно излишне, не так ли? И если я перенесу все 3 «сервера» в 1 инстанс EC2, получим ли мы такую ​​же надежность, как решение с 3 VPS? (рассмотрим 1 EC2 = 1 VPS 1,6 ГБ 1 / 1,2 ГГц Opteron / Xeon)

В чем разница / преимущества каждого решения (1EC2 или 3VPS)?

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

«Облако» - это просто ребрендинг VPS. Любой инстанс EC2 на Amazon будет таким же стабильным и обеспечит такую ​​же вычислительную мощность, как и VPS (в зависимости от характеристик). Преимущество платформы Amazon заключается в том, что их инстансы EC2 легко создавать, копировать и запускать. Если ваши системы предназначены для использования этих функций, Amazon будет хорошим вариантом. Если вы планируете загружать все задачи в одну систему, вы не увидите никакой выгоды в переходе на «облако Amazon».

Кроме того, я бы сказал, что оба решения предлагают одинаковую надежность. Если любой из этих серверов выйдет из строя, то выйдет из строя вся система. Однако разделение на отдельные серверы даст вам преимущество в производительности, но не даст дополнительной надежности - наоборот; это добавляет в систему точки отказа.

Если ваша цель - надежность, я бы рассмотрел возможность настройки нескольких веб-серверов и / или серверов баз данных с аварийным переключением. Если ваша цель - скорость, я бы разделил их на 3 VPS (или выделенных сервера). Если у вас есть время или цели для масштабируемости и надежности, то при разработке системы для развертывания с Amazon EC2 (с Eбалансировка нагрузки lastic) тоже подойдет.

На самом деле вы не используете концепцию «облака» (динамически масштабируемую) в предлагаемой архитектуре - вы просто используете несколько VPS.

Итак, мой ответ будет таким: Если вы пойдете по этому пути, я не думаю, что у вас есть какие-либо преимущества от использования Amazon EC2 перед VPS / выделенным сервером. На самом деле недостатков, вероятно, больше (например, постоянное хранилище сложнее сделать, и да, я вас знаю должен план на случай отказа диска / сервера в стандартном VPS)

Расширяя ответ - вы, вероятно, закончите тем, что один из этих трех серверов будет работать на полную мощность и станет узким местом, в то время как другой почти ничего не сделает.

Архитектура, более похожая на облако, должна была бы иметь

Экземпляр веб-сервера, использующий Эластичная балансировка нагрузки.

Когда он становится занят (некоторые показатели, такие как загрузка процессора / очередь / время загрузки страницы и т. Д.), У вас есть процесс мониторинга который запускает другой экземпляр веб-сервера и добавляет его в ферму. При необходимости повторите. Когда все становится тише, экземпляры веб-серверов могут быть удалены из фермы.

Сервер базы данных

Если вы можете использовать Амазонки SimpleDB сервис, тогда все о вас позаботятся. Если вам нужна более традиционная база данных, то это, вероятно, самая сложная часть системы для архитектуры, которая легко масштабируется. Я собираюсь здесь легко пропустить это!

Экземпляр "обработка задания"

Скажем, ваши пакетные задания хранятся в какой-то очереди (например, скажем ... Простая служба очереди - SQS). Сервер пакетной обработки выбирает задания из этой очереди и обрабатывает их. Если очередь превышает определенный размер, вы запускаете еще несколько экземпляров «пакетной обработки».

Вы можете очень сильно поработать с этим, и некоторые из ваших заданий будут выполняться на экземпляре веб-сервера, когда нагрузка небольшая, и перейти к выделенным экземплярам, ​​когда они тяжелые - или любой другой смеси, которую вы можете себе представить. Но чтобы действительно использовать концепцию «облака», у вас должна быть архитектура, поддерживающая динамическое добавление X серверов в ваш пул.

Образцом этого подхода, вероятно, является Анимото это сервис, который делает ваши фотографии, смешивает их с музыкой и выводит видео. Работа с интенсивным использованием ЦП, идеально подходящая для пула инстансов EC2. Посмотрите на график: от 50 до 3500 серверов за несколько дней - в этом сила «облачных» вычислений.