Статьи
January 21

Анализ Spaced-based архитектуры

Архитектурный паттерн на основе пространства (Spaced-based) - сложный и дорогой в реализации паттерн. Это хороший выбор архитектуры для небольших веб-приложений с переменной нагрузкой (например, сайты социальных сетей, сайты торгов и аукционов). Однако он не очень хорошо подходит для традиционных крупномасштабных приложений с реляционными базами данных и большими объемами оперативных данных.

Хотя архитектура на основе пространства не требует централизованного хранилища данных, оно обычно используется для первоначальной загрузки сетки данных в память и асинхронного сохранения обновлений данных, производимых блоками обработки. Также принято создавать отдельные разделы, изолирующие изменчивые и широко используемые транзакционные данные от неактивных данных, чтобы уменьшить объем памяти, занимаемый сеткой данных in-memory в каждом блоке обработки.

Важно отметить, что, хотя альтернативное название этого паттерна - облачная архитектура, вычислительные блоки (а также виртуализированное промежуточное ПО) не обязательно должны располагаться на облачных хостингах или PaaS (платформа как услуга). Они могут с тем же успехом размещаться на локальных серверах, и это одна из причин, по которой я предпочитаю название "архитектура на основе пространства".

С точки зрения реализации продукта, многие компоненты архитектуры этого паттерна можно реализовать с помощью продуктов сторонних производителей, таких как GemFire, JavaSpaces, GigaSpaces, IBM Object Grid, nCache и Oracle Coherence. Поскольку реализация этого паттерна сильно различается по стоимости и возможностям (в частности, по времени репликации данных), вам, как архитектору, следует сначала определить свои конкретные цели и потребности, прежде чем делать выбор продукта.

Анализ паттерна

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

Общая ловкость

Рейтинг: Высокий

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

Простота развертывания

Рейтинг: Высокая

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

Тестируемость

Рейтинг: Низкий

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

Производительность

Рейтинг: Высокая

Анализ: Высокая производительность достигается благодаря механизмам доступа к данным в памяти и кэширования, встроенным в этот паттерн.

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

Рейтинг: Высокая

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

Простота разработки

Рейтинг: Низкая

Анализ: Сложные продукты для кэширования и сетки данных в памяти делают этот паттерн относительно сложным для разработки, в основном из-за недостаточного знакомства с инструментами и продуктами, используемыми для создания архитектуры такого типа. Кроме того, при разработке таких архитектур необходимо уделять особое внимание тому, чтобы ничто в исходном коде не влияло на производительность и масштабируемость.