В нашем с вами технологическом мире всё перевёрнуто с ног на голову. Несмотря на то что Солнце встаёт на Востоке, технологические инновации в последнее время приходят в основном с Запада. А Восток, будучи «делом тонким», выступает как огромный завод, фабрика по воплощению западной технологической мысли. Данная модель весьма условна, поскольку в Азии всё-таки есть технологически продвинутые государства, но тем не менее «Айфоны» все ещё придумывают в Штатах.
Это я к тому, что и для облачной индустрии «Айфоны» куют в Америках. В том смысле, что идеологические и технологические новшества облачных вычислений создаются, как правило, где-то на Западе. И сегодня мы поговорим об очередном довольно запутанном, но оттого не менее интересном новшестве под названием In-Memory Data Grid, или просто IMDG. Об этом концепте пока ещё мало слышно в русскоязычном пространстве Сети, но IMDG уже вовсю обсуждается англофонами как будущее облачных технологий.
В последнее время — поскольку раньше In-Memory Data Grid была слишком дорогим удовольствием. Однако сейчас многие компании меняют архитектуру своих информационных систем для того, чтобы им тоже стала доступна быстрая транзакционная обработка данных. IMDG стала доступнее благодаря тому, что упали цены на RAM и потому объём данных, которые теперь можно хранить в оперативной памяти, значительно возрос. Вместе с тем увеличилась и скорость обработки данных. IMDG — это инструмент построения решений, предназначенных для сверхбыстрой и масштабируемой обработки данных за счёт возможностей RAM и тесной интеграции с остальными вычислительными ресурсами.
По сути, In-Memory Data Grid — это распределённое хранилище объектов. Оно обеспечивает быструю обработку информации и сверхвысокую доступность посредством распределённого хранения данных в оперативной памяти.
Это хранилище похоже по интерфейсу на обычную многопоточную хеш-таблицу. Объекты хранятся по ключам. Однако в традиционных системах ключи и значения ограничены типами «массив байт» и «строка», а в IMDG можно использовать любой объект бизнес-модели в качестве ключа или значения. Это значительно повышает гибкость решения, открывая возможность хранить в Data Grid абсолютно тот же объект, с которым работает бизнес-логика, без сериализации и десериализации, необходимых в случае с альтернативными технологиями. Возможность работать непосредственно с объектами бизнес-модели — одно из ключевых отличий IMDG от баз данных In-Memory (IMDB). В случае с IMDB пользователям необходимо осуществлять объектно-реляционное отображение (Object-To-Relational Mapping), которое сильно снижает производительность.
Ключевое отличие IMDG от той же NoSQL — целостность данных. NoSQL обычно спроектированы по принципу «целостности в конечном итоге» — Eventual Consistency. Операции записи в таких системах происходят довольно быстро, но скорость операций чтения оставляет желать лучшего, а если точнее, то скорость чтения не превосходит скорости записи. В IMDG системах, предусматривающих двухфазовую фиксацию (two-phase-commit), скорость записи и чтения значительно выше, чем в условно-традиционных БД, построенных по принципу конечной целостности данных.
Но для построения In-Memory архитектуры недостаточно лишь системы хранения данных. Информация в IMDG должна обрабатываться параллельно и с высокой скоростью. Архитектура секционирует её в кластере и отправляет исполняемый код на те серверы, где находятся необходимые ему данные. Вычислительный код в данном случае является частью вычислительных кластеров (Compute Grids), поэтому интеграция между Compute Grid и In-Memory Data Grid очень и очень важна. Синергетический эффект возможен лишь в том случае, если IMDG и Compute Grid являются частью одной и той же системы. Таким образом можно достигнуть максимальной производительности и надёжности архитектуры In-Memory.
Вернёмся, однако, с бренной земли в облака, ведь сугубо технический частокол предыдущих абзацев наверняка утомил достопочтенную публику, несмотря на то что он был абсолютно необходим для формирования правильного понимания технологии. Так вот, наиболее логичное применение связка IMDG + Compute GRID находит в анализе рисков, торговых системах, биометрике, электронной коммерции, онлайн-играх, видеохостингах и многом другом. Что общего у этих областей? Правильно, им необходимы масштабируемость и производительность. Именно те параметры, которым соответствуют решения на базе облачных вычислений. Поэтому нет ничего удивительного в том, что технология In-Memory Data Grid так необходима облакам.
Одно из базовых преимуществ облачных решений перед традиционными ИТ-системами — снижение стоимости владения. Отчасти оно возможно благодаря способности облачных систем поставлять вычислительную мощность без необходимости подключения дополнительного «железа». Отсюда и синергия, возникающая на месте слияния IMDG и облаков, а имя ей — эластичность. Посредством IMDG можно легко масштабировать память и хранилища так, чтобы производительность возрастала в прямой зависимости от количества серверов. А гибкое изменения количества серверов (иначе говоря, вычислительной мощности) возможно благодаря облачным системам.
На практике это обычно выглядит следующим образом. Предположим, что маркетинговый отдел интернет-магазина решил запустить акцию с большой скидкой на товары и привлечением дополнительного трафика. Предполагается, что в течение нескольких дней на магазин будет большая нагрузка, а затем трафик вернётся к нормальной отметке. Эта ситуация идеальна для применения архитектуры, которую ваш покорный слуга довольно подробно описал выше. Вы размещаете CMS на облачном кластере, интегрированном с In-Memory Data Grid, и система подключает и отключает серверы в точном соответствии с нагрузкой.
Многие эксперты прочат In-Memory Data Grid славу «будущего облачных технологий». Раньше облака и IMDG не работали в связке, поскольку применялись в разных областях информационных технологий. А теперь, когда появилась светлая мысль совместить их в единой архитектуре, они стали друг друга отлично дополнять.
Полагаю, что у наиболее продвинутой части аудитории остался ещё один вопрос — как реализовать концепцию IMDG в собственном решении, если есть необходимость построить подобную архитектуру у себя на предприятии. Хорошая новость заключается в том, что физического доступа к компьютерам вам не потребуется, достаточно облачных серверов. Уже сейчас можно реализовывать на практике IMDG-решения в облаке. Для этого необходим один из фреймворков, коих довольно много — GridGrain, Oracle Coherence, GemFire, JBoss. Некоторые из них (например, GridGrain) легко запускаются на Amazon EC2. Другие при этом являются ещё и решениями Open Source (например JBoss). Следовательно, настало время переходить от слов к делу, тем более что IMDG практически не развита в наших широтах.