2015-03-22 2 views
0

Я разработал веб-приложение в php, которое можно было бы использовать для автоматизации ручных процессов в клинике. Приложение работает хорошо, и 3 одновременных пользователя могут использовать приложение без каких-либо проблем с производительностью.Масштабируемость приложения - дизайн

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

Если это приложение должно использоваться 20 одновременными пользователями, я уверен, что производительность будет убогой.

В сценарии, если клиника решает реализовать свой собственный веб-сервер и разместить это приложение,
1), что занимает в терминах «системы» архитектура/дизайн в целом масштабировать мое приложение для нескольких (20-30) одновременных пользователей?
2) Нужно ли мне изменить свой код, чтобы увеличить масштаб?
3) Как я могу определить емкость ресурса моего веб-сервера с точки зрения обработки и памяти?

ответ

0

Я уверен, что производительность была бы несчастна

Как вы знаете это? Вы протестировали? Никогда pre-optimize. Запустите тест, посмотрите, что падает. Вы можете быть удивлены.

После того как вы построите свой тестовый комплект (lots of open source tools available), взгляните на то, что сломалось. Ошибка базы данных? Вы на самом деле стали CPU? У вас закончилась память? Посмотрите на получение более мощной машины. Или разместить его в облаке, где вы можете масштабировать до более мощных серверов при необходимости.

20-30 одновременных пользователей не так много нагрузки. Помните, что пользователи в основном бездействуют. Если запрос на ваш сайт занимает 1 секунду, и пользователь тратит 10 секунд (это очень быстро), глядя на ответ. Тогда ваш сервер действительно обрабатывает только 2-3 одновременных запроса . Учитывая, что большинство современных процессоров имеют 4 ядра, вы, вероятно, даже не насыщаете один процессор.

Кроме того, возьмите свою почасовую ставку, умножьте ее на количество часов, затрачиваемое на создание новой системы. Теперь сравните это с вашими расходами на хостинг. Очень вероятно, что вы не должны тратить на это какое-то время. Найдите лучший план хостинга с выделенными серверами перед восстановлением.

Теперь, когда мы рассмотрели это, если вы действительно хотите научиться разрабатывать систему, которая будет масштабироваться, узнайте об основных архитектурных шаблонах, таких как MVC или Service Oriented Architecture (SOA) и т. Д. Большинство из них будут иметь тенденцию чтобы помочь вам в создании систем, которые не позволят вам попасть в слишком много проблем.

Учитывая, что это похоже на приложение, ориентированное на базу данных, вы, скорее всего, насыщаете свой диск IO своей базы данных (это своего рода аккуратный трюк с 2-3 параллельными запросами). Если у вас слишком много дисков, вы можете посмотреть на решения для кеширования. Они обычно являются первым местом решения, когда вы оптимизируете производительность, особенно производительность базы данных. Посмотрите, какие данные могут быть кэшированы, более статическая информация, такая как адреса компаний и их имена. Если вы можете кэшировать это в клиенте, тем лучше.

So ... tldr; Вы, вероятно, будете в порядке, если нет, выясните, почему вы не в порядке, прежде чем строить новую систему. И даже если вы не в порядке. Посмотрите, не можете ли вы купить свой путь в порядке.

+0

Спасибо, Роб! Это был очень подробный ответ и дал мне четкую идею. –

Смежные вопросы