Что делает веб-фреймворк масштабируемым?


Заранее большое вам спасибо.

Прежде всего, я понимаю масштабируемость как способность проектировать систему, которая не меняется, когда спрос на ее услуги, каковы бы они ни были, значительно возрастает. Может ли вам понадобиться больше оборудования (вертикально или горизонтально)? Прекрасно, добавьте его на досуге, потому что система подготовлена и была разработана, чтобы справиться с этим.

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

Этот вопрос не имеет отношения ни к технологии, ни к конкретной структуре вообще, это скорее теоретический вопрос.

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

  • обеспечьте memcache?
  • возможность работать на нескольких машинах (на уровне веб-сервера) и использовать множество реплицированных баз данных? Но что в программном обеспечении делает это возможным?
  • и т. д...

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

Еще раз спасибо,

D.

2 3

2 ответа:

Я думаю, что масштабируемость больше всего зависит от варианта использования: ожидаете ли вы больших объемов данных, тогда вам следует сосредоточиться на базе данных, если речь идет о трафике, сосредоточиться на сервере, добавить новые функции, сосредоточиться на вашей модели данных и фреймворке, который вы используете...

Сравнивая микропосты-сервис, такой как Twitter, с университетским сайтом или веб-сервисом, таким как GoogleDocs, вы обнаружите совершенно разные требования.

Во-первых, общим понятием масштабируемости является способность программного обеспечения повысить пропускную способность или емкость при добавлении большего количества аппаратных ресурсов (процессоры, память, пропускная способность и т. д.).
Программное обеспечение, которое не улучшается при увеличении ресурсов, не масштабируется.
Выходя из определений, я думаю, что ваш вопрос связан с оценкой фреймворков, которые вы планируете ввести в свою реализацию, что может повлиять на способность вашего программного обеспечения масштабироваться.
ИМХО самое главное фактор, который необходимо оценить при внедрении фреймворка, заключается в том, чтобы увидеть, есть ли в нем скрытая сериализация (эта сериализация в эффектах переносится в/влияет на ваше программное обеспечение)
Поэтому, если вы введете фреймворк, который вводит сериализацию в ваше приложение, это может повлиять на вашу способность масштабироваться.
Как это оценить?

  1. тщательная проверка исходного кода (если исходный код открыт)
  2. существуют ли какие-либо гарантии производительности, предлагаемые теми, кто строит рамки?
  3. делайте измерения сами увидите, как внедряется этот фреймворк влияет на вашу производительность и заменить, если не удовлетворены