Масштабировать мое приложение в облаке, как я могу это сделать?
У меня средний SaaS-проект, и мне нужно расширить его, где я могу найти материалы для начала моего облачного проекта?
PS: я не хочу работать с PaaS, например, с App Engine или Azure... Я буду использовать IaaS, как ec2 или rackspace.
3 ответа
Я не знаю по своему опыту, но наверняка у поставщика услуг, с которым вы работаете, есть какой-нибудь достойный материал, чтобы помочь вам? Кроме того, я полагаю, что у предложения Amazon (и подобных ему) будут хорошие активные сообщества пользователей.
Если вы предпочитаете работать с Iaas, Amazon EC2 предлагает базовую функцию автоматического масштабирования, которая позволяет масштабировать емкость вашего сервера в соответствии с заданными вами условиями. Другие решения для управления облаком, такие как Scalr или RightScale, предоставляют более продвинутые функции. Это не Paas, а скорее сервисы, которые помогают вам управлять инфраструктурой в Amazon, Rackspace и других провайдерах. В зависимости от того, что вы ищете, автоматическое масштабирование EC2 может соответствовать или не соответствовать вашим требованиям.
Вот пример, чтобы понять, как все по-разному работает в EC2 и Scalr с автоматическим масштабированием (я работаю в Scalr):
Допустим, у вас есть три веб-сервера, и каждый из них должен обрабатывать как минимум 1000 одновременно работающих пользователей, в противном случае они должны быть отключены. В 4 часа утра ваш трафик замедляется, и у вас есть только 2100 одновременных пользователей, то есть 700 на сервер. Это ниже вашего порога, поэтому запускается событие уменьшения масштаба.
При автоматическом масштабировании EC2 один из трех серверов будет остановлен. Это означает, что 500 пользователей, которые находились на сервере, будут закрывать свои соединения и выходить из системы (если вы используете файловые сеансы, очень часто встречающиеся в PHP и других языках).
Scalr по-разному справляется с уменьшением масштаба. Перед завершением работы сервера вызывается событие OnBeforeHostTerminate: оно позволяет выполнить действия по обслуживанию, чтобы подготовить сервер к завершению. Кроме того, Scalr использует метод безопасного отключения веб-сервера, поэтому новые подключения не выполняются. Он ожидает, пока все соединения не будут закрыты, чтобы завершить работу сервера. Еще одно отличие, в отличие от автоматического масштабирования EC2, Scalr позволяет масштабировать в зависимости от процессора, оперативной памяти, диска, сети, пользователей...
Что касается Rackspace, я не думаю, что они имеют функцию автоматического масштабирования. Однако, если вы хотите построить свою инфраструктуру в Rackspace, а не в Amazon, вы все равно можете использовать Scalr для управления серверами и автоматического масштабирования своей емкости.
Как я уже говорил ранее, это зависит от ваших требований.
Не уверен, что вы подразумеваете под "масштабированием", но, может быть, вы имеете в виду автоматическое масштабирование, балансировку нагрузки или что-то в этом роде?
У Amazon есть службы, которые вы можете добавить для этого в свою учетную запись EC2 (автоматическое масштабирование, Amazon CloudWatch и Elastic Load Balancing), или вы можете использовать сторонние инструменты, такие как Scalr, чтобы управлять всем этим для вас. Мы оцениваем Scalr для наших потребностей на моей повседневной работе, но у меня пока нет опыта этого.