Что означает эта фраза "Попытайтесь сделать вашу архитектуру более горизонтальной, а не вертикальной"?

Я только что слушал http://www.zend.com/webinar/PHP/70170000000bAuS-webinar-php-performance-principles-and-tools-20100218.flv (вебинар Zend о производительности PHP).

Я не могу понять, что означает эта фраза: "Попробуйте сделать вашу архитектуру более горизонтальной, а не вертикальной" (см. снимок экрана)

alt text http://img2.pict.com/4e/4d/18/3358007/0/screenshot2b153.png

Спасибо.

Ответ 1

Простой пример горизонтального масштабирования VS. вертикальное масштабирование только с помощью

Учитывая пример приложения, например: Приложение имеет много клиентов, каждый клиент имеет несколько пользователей.

обновление: Ни один клиент не должен знать о другом клиенте, каждый пользователь принадлежит исключительно одному клиенту.

Вертикальное масштабирование:

Данные клиента хранятся в нормализованной базе данных на базе SQL. учетные данные пользователя для всех пользователей хранятся в таблице client_users.

Преимущества

  • Самый короткий путь сопротивления для развития
  • относительно легко поддерживать целостность с помощью
  • Простота резервного копирования

Проблема:

Поскольку все учетные данные клиента хранятся в этой таблице вместе со связанными данными, для поддержания или увеличения производительности потребуется увеличить уровень вашей базы данных с большим количеством ресурсов или инвестировать в большее количество подчиненных устройств этому одному хозяину.

Горизонтальное масштабирование:

Каждый клиент существует в схеме с префиксом таблицы. client_users становится client01_users

Преимущества

Кто-то, обладающий навыками промежуточного уровня в администрировании БД, мог написать простой script для копирования клиентских # _ * таблиц на новый сервер БД примерно через 5 минут (затем еще один час для проверки работоспособности/проверки/проверки). Таким образом, вы можете перенаправлять своих клиентов с низким трафиком на сервер с резервированием и получать выгоду от экономии инфраструктуры при зарядке ваших более высоких клиентов трафика, требующих специального оборудования.

Проблемы

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

Резюме

Если в начале я вижу возможность совместного использования, я буду бороться с зубами и гвоздями, чтобы добиться этого. Для нового клиента с проблемами масштабирования после заключения контракта мое первоначальное предложение будет включать рефакторинг, чтобы включить очертание или не поделиться принципами. На мой взгляд, дополнительную сложность можно контролировать, если подходить/обрабатываться правильно.

Ответ 2

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

Вертикальная масштабируемость представляет собой добавление большего количества ресурсов на один сервер (как в случае большего количества CPU, RAM...).