Готовый перевод The Reactive Manifesto / Реактивный Манифест: Scalable

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «идёт перевод»

Масштабируемость

Почему это важно

Слово масштабируемый как оно определено Мериэм-Вебстер означает "что-то способное быть легко расширеным или улучшеным по запросу". Масштабируемое приложение способно быть расширено в зависимости от его использования. Это может быть достигнуто добавлением гибкости в приложение, по выбору оно может быть увеличено или уменьшено (установка на узел с большим или меньшим количеством процессоров) без изменения дизайна или переписывания приложения. Гибкость делает возможным уменьшение стоимости управления приложением в облачном окружении, позволяя Вам получать выгоду из его виртуальной модели плати-за-то-ты-используешь.

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

Ключевые блоки

Событийно-ориентированные системы основанные на асинхронной передаче сообщений создает основу для масштабируемости. Этот подход делает возможным использование слабых связей между компонентами и подсистемами и поэтому делает возможным масштабирование системы на множество узлов придерживаясь той же программной модели с той же семантикой. Добавление большего количества сущностей одного компонента увеличивает пропускную способность системы для обработки событий. В терминах реализации нет никакой разницы между масштабированием при помощи использования большего количества ядер или большего числа узлов в дата-центре или кластере. Топология приложения становится решением каким способом производить установку, которая выражается в конфигурации и/или применяющимися алгоритмам в зависимости от того как используется приложение. Это то что мы называем _прозрачным местоположением_.

Важно понимать что целью является не попытка использовать прозрачные распределенные вычисления, распределенные объекты или RPC-стиль коммуникации - это было испробовано ранее и оказалось неудачным. Вместо этого нам надо объять сеть включая этот подход прямо в программную модель через асинхронную передачу сообщений. Настоящая масштабируемось гармонично внедряется в распределенное вычисление и с этим внутриузловой коммуникацией, которая означает _traversing the network_, что как мы знает довольно ненадежно. Тем не менее важно создать ограничения, отказы обслуживания и сценарии обработки ошибок сетевого программирования явно в программной модели, вместо того чтобы прятать их в утекающие абстракции которые пытаются все "упростить". Как решение, одинаково важно создавать программные утилиты которые скрывают основные кирпичики для решения типичных задач возникающие в распределенном окружении, как механизмы для достижения результата или абстракции обмена сообщений которые предлагают более высокую степень надежности.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод

Переведено на Нотабеноиде
http://notabenoid.org/book/42381/163325

Переводчики: 2heoh

Настройки

Готово:

100.00% КП = 1.0