Основной выбор:
- Масштабирование по вертикали с использованием более крупного компьютера. Тем не менее, вы в конечном итоге достигнете предела, и у вас будет одна точка отказа (один сервер!), или
- Горизонтальное масштабирование путем добавления дополнительных серверов и распределения трафика между серверами. Это дает дополнительное преимущество обработки сбоев, поскольку в случае сбоя одного сервера другие могут продолжать обслуживать трафик.
Преимуществом горизонтального масштабирования в облаке является возможность добавлять / удалять серверы в зависимости от рабочей нагрузки . Когда все занято, добавьте больше серверов. Когда все тихо, удалите серверы. Это также позволяет снизить затраты, когда все тихо (что невозможно на месте, если вы владеете собственным оборудованием).
Архитектура предполагает размещение нескольких серверов за балансировщиком нагрузки:
- Трафик поступает в Балансировщик нагрузки
- Балансировщик нагрузки отправляет запрос на сервер (часто исходя из некоторой степени загруженности каждого сервера)
- Сервер обрабатывает запрос и отправляет ответ обратно в балансировщик нагрузки
- Балансировщик нагрузки отправляет ответ исходному запрашивающему
В AWS доступно несколько балансировщиков нагрузки, которые различаются по необходимости. Если вы просто отправляете трафик одному приложению, установленному на всех серверах, Network Load Balancer должно быть достаточно. В ситуациях, когда разные части приложения находятся на разных серверах (например, мобильный интерфейс или веб-интерфейс), вы можете использовать Application Load Balancer .
AWS также помогает с горизонтальным масштабированием, предоставляя сервис Amazon EC2 Auto Scaling . Это позволяет вам указать подробную информацию о серверах для запуска (образ диска, тип экземпляра, сетевые настройки), а затем автоматическое масштабирование может автоматически запускать новые серверы, когда это необходимо, и завершать те, которые не ' т требуется. (Обратите внимание, что они запускаются и заканчиваются, а не запускаются и останавливаются.)
Вы можете дополнительно определить политики масштабирования , которые сообщают автоматическому масштабированию , когда запускать / завершать экземпляры, измеряя такие показатели, как загрузка ЦП. Таким образом, количество серверов может приблизительно соответствовать объему трафика.
Следует отметить, что если у вас есть база данных , она должна храниться отдельно на серверах приложений, чтобы она не терялась. Вы можете использовать Amazon Relational Database Service (RDS) для запуска базы данных для вас, или вы можете запустить ее на отдельном экземпляре Amazon EC2.
Если вы хотите узнать больше о любой из вышеперечисленных технологий, на YouTube или в блоге можно найти множество выступлений, которые могут объяснить и продемонстрировать их использование.