Как запустить сайт с высоким потенциалом роста в будущем.
Я надеюсь, что у меня есть простой вопрос. Поскольку я уверен, что шаги по настройке этого сложны, я хотел бы знать несколько вещей. У нас есть команда, которая работает над великолепной платформой, которая почти готова к завершению. Мы разрабатывали на стандартной установке лампы ничего особенного. Проблема, с которой мы столкнулись в схеме, заключается в том, как спланировать рост для конфигурации лампы. Легко просто купить сервер и загрузить приложение на них, но как мы планируем, когда нам нужно 3, 4, 5 серверов и продолжать добавлять к этой схеме, не ломая сайт или не отключая его каждый раз? По существу, следует избегать простоев. Мы предпочитаем приобретать наши собственные серверы и обслуживать их самостоятельно в одном месте.
По сути, как нам настроить сайт так, чтобы с самого начала он был сделан для параллелизма (я полагаю, что это слово?).
1 ответ
Я надеюсь, что у меня есть простой вопрос.
Извините, но это почти полная противоположность. Масштабируемость - это большой набор вариантов дизайна, которые в значительной степени необходимо внедрить с самого начала, если вы хотите, чтобы это было очень просто. Как правило, это большая дополнительная работа, и если вы никогда раньше не создавали такую систему, ее, как правило, легче освоить с помощью "боли роста".
Наш общий баночный ответ на эти вопросы: разберитесь с масштабируемостью позже. Создайте свой сайт / приложение / что угодно и добавьте на него более мощный сервер так долго, как сможете. Как только эта опция закончится, начните беспокоиться о том, как вы будете разделять логические слои (что обычно является самым простым), например интерфейсный веб-сервер с сервера базы данных. Затем выясните, как запустить два веб-сервера одновременно и так далее.
Основная часть проблемы заключается в том, что, хотя я могу отказаться от своей руки и сказать "сегментирование базы данных" или "активно-активные кластеры", их фактическая реализация будет во многом зависеть от того, как ваше приложение работает внутри. LAMP даже не очень "стандартный" - я предполагаю, что вы имеете в виду PHP или Perl, ни один из которых не очень хорошо работает с параллелизмом из коробки (и, вероятно, будет одним из первых узких мест, с которыми вы столкнетесь; по крайней мере, это распространенные проблемы). проблем и есть много статей о том, как с этим бороться).
Обновление: у меня возникли проблемы с поиском краткого описания тем для масштабирования. Я столкнулся с этим:
- Заявка без сохранения состояния
- Слабая связь
- асинхронность
- Ленивая загрузка
- Кэширование
- параллелизм
- Разметка
- маршрутизация
Аналогичная схема из другого источника:
- Разделение проблем (представление, логика / приложение, данные, транзит / маршрутизация, управление)
- Минимизировать распределение государства (то есть государство не пересекает вышеупомянутое разделение)
- избыточность
- Отдельные среды (Dev, QA, Stage, Prod)
- строить
- Автоматизация (создание сценариев, сборка, управление и т. Д.)
- Управление конфигурацией
- Центральное управление идентификацией
- Управление развертыванием
- Бежать
- монитор
- Переоценка мощностей, план
- Логи, Логи, Логи
- Цикл непрерывного улучшения (Agile Dev на пределе)
Я мог бы написать книгу, разбивающую каждый из предметов в первом списке на отдельные технологии. У каждого из них может быть написана книга о реализации на различных платформах, разных моделях и т. Д. (У многих уже есть книги о них).
Если кто-то хочет добавить больше к этому или добавить детали, не стесняйтесь.