Я создаю веб-приложение и задаю пару быстрых вопросов. Из того, что я узнал, не стоит беспокоиться о масштабируемости при первоначальном создании приложения и только начинать беспокоиться, когда увеличивается трафик. Тем не менее, это мое первое веб-приложение, я не совсем уверен, что я должен использовать подход, когда я разрабатываю вещи специальным образом, а затем "исправляю" их. Я читал рассказы о том, как люди начинают с приложения, которое получает миллионы пользователей через неделю или две. Не то, чтобы я столкнулся с такой же ситуацией, но я не могу не задаться вопросом, как это делают эти люди?
В настоящее время я купил общую учетную запись хостинга на Lunarpages, и это заставило меня начать создавать и тестировать приложение. Тем не менее, мне интересно узнать, как создавать одно и то же приложение масштабируемым образом с помощью облака, например Amazon EC2. По моему мнению, я вижу пару компонентов:
- Существует балансировщик нагрузки, который сначала получает запросы, а затем решает, куда направлять каждый запрос.
- Затем этот запрос обрабатывается репликой сервера, которая затем обрабатывает запрос и обновляет (при необходимости) базу данных и отправляет ответ клиенту
- Если приходит аналогичный запрос, тогда механизм кэширования, такой как memcached, пинает в изображение и возвращает объекты из кэша
- Черный ящик, который обрабатывает репликацию базы данных
В частности, я пытаюсь сделать следующее:
- Настройка балансировки нагрузки (моя домашняя работа показала, что HAProxy является одним из таких балансировщиков нагрузки)
- Настройка репликации для синхронизации баз данных
- Использование memcached
- Настройка Apache для работы с несколькими веб-серверами
- Разделение приложения на использование Amazon EC2 и Amazon S3 (мое приложение - это то, что потребует большого объема памяти).
- Наконец, как я могу избежать сжигания себя при использовании услуг Amazon? Поскольку это всего лишь фаза обучения, я, вероятно, могу сделать с 2-3 серверами с простым балансировщиком нагрузки и репликацией, но пока я не захочу, чтобы случайно не заплатить лишние деньги.
Я могу найти ресурсы по отдельным темам, но не могу найти что-то, что начинается с большой картины. Может кто-нибудь, пожалуйста, помогите мне начать?