Слова «in-memory computing» звучат заманчиво и футуристично. Кому бы не хотелось устранить «бутылочное горлышко» скорости жёсткого диска, храня и обрабатывая данные в памяти? Но на практике возникают нюансы: например, из-за энергозависимости оперативной памяти данные всё равно надо дублировать в постоянной, и выигрыш получается при чтении, но не при записи. Каково реально работать с этим?
Большим соответствующим опытом обладают «Сбербанк-Технологии», где сейчас активно работают с Apache Ignite и даже инвестировали в создавшую его компанию GridGain. Поэтому мы решили задать несколько вопросов об этом опыте: разумеется, его нельзя слепо переносить на любую другую компанию, но он всё равно ценен. На них ответил Андрей Богословских, директор Центра Компетенции платформы поддержки развития бизнеса.
— В прошлом году на нашей конференции JPoint вы говорили, что сотрудничество с GridGain находится в начале большого пути — а как обстоят дела сейчас?
— Ещё год назад по направлению распределенной обработки данных в Сбербанк-Технологиях работало порядка 200 человек, а сейчас уже более 1000. Причём это не только специалисты, которые совместно с сотрудниками компании GridGain разрабатывают новую технологическую платформу Сбербанка, но и прикладные команды, которые переписывают существующее прикладное ПО Сбербанка на новую ИТ-платформу. Ядро платформы должно быть готово к концу 2017 года, в 2018 году начнутся активные внедрения и тираж. Также предстоит много работы по мониторингу новой ИТ-системы, повышению ее надёжности и управляемости.
— Из-за чего вам изначально понадобился Apache Ignite? Можете ли поделиться конкретными числами, показывающими, как его использование сказывается на ваших задачах?
— В связи с упрощением доступа к счетам (мобильный банк, интернет-банк) уменьшается средняя сумма транзакции, но резко растёт их количество. Ещё 10 лет назад сотовую связь в основном оплачивали в офисах оператора связи на 1-2 месяца вперед. Сейчас клиенты платят за связь через мобильный банк несколько раз в месяц, но меньшими суммами. Это только один пример постоянно растущего количества транзакций.
Поэтому для нас чрезвычайно важна высокая производительность систем, в чём может помочь Apache Ignite. Тестирования показывают, что при текущей системе один из ежедневных пакетных процессов Сбербанка занимает порядка трёх часов, а на Apache Ignite 15 минут. Также от новой системы ожидается производительность более 10000 клиентских операций по банковским картам в секунду против нынешних 3000 операций в секунду в пике (а обычно — около 500).
— По-вашему, Apache Ignite подходит для тех, кому приходится работать с подобными гигантскими масштабами, или маленьким компаниям он может быть не менее полезен?
— Продукт крайне интересный. Apache Ignite применим не только в крупном бизнесе, но уже готов к использованию «прямо из коробки» в средних и маленьких компаниях — безусловно, это его большое преимущество. А мы своим участием в нём как open source-проекте стараемся сделать доступнее для всех уровень зрелости, надёжности и эффективности ИТ-решений Сбербанка.
— То есть СберТех коммитит в Apache Ignite, хотя вы плотно сотрудничаете со стоящей за ним компании GridGain, так что они наверняка и сами учитывают при разработке ваши потребности?
— В конце прошлого года руководство компании решило создать отдельное направление по развитию open source-проектов, которые являются ключевыми в ИТ-ландшафте компании.
Выгода компании при развитии open source заключается в повышении доступности продуктов для широкого круга. У СберТеха есть большой и действительно уникальный опыт разработки проектов, которые соответствуют очень жёстким требованиям по надёжности, доступности, производительности, масштабируемости. Такой опыт сложно получить где-либо ещё (задачи подобного уровня ставят перед собой компании масштабов Amazon, Google и т.д.). Мало кто в сообществе разработчиков сталкивался с нашими use-case’ами.
Мы решили развивать ключевые стримы в open source: надёжность, производительность, устранение технологического долга, расширение экосистемы и возможностей по интеграции проектов.
Apache Ignite стал первым таким open source-проектом, и мы плотно взаимодействуем с GridGain. К реализации проектов предъявляется много требований, поэтому в СберТехе есть отдельные команды на этом направлении.
— А какой характер коммитов СберТеха в Apache Ignite — что-то, связанное с банковской спецификой?
— У нас нет задачи развивать open source проекты под бизнес-специфику Сбербанка. В них только вносится функционал, который будет полезен для всех пользователей проекта, в том числе для потенциальных клиентов. Если говорить о текущем участии, то команда поработала над релизами Apache Ignite 1.9 и 2.0. Коммиты можно разделить на две категории — баг-фиксы и новый функционал, разделение примерно равное. В отношении нового функционала особое внимание уделяется сложным сценариям транзакционности, повышению надёжности и управляемости кластера.
— Что вы на основе своего опыта работы с Apache Ignite можете порекомендовать другим людям, еще не использующим проект, но заинтересовавшимся им? В каких случаях он хорошо подходит, а в каких могут возникнуть проблемы?
— Я советую не бояться изменений, но начинать с малого. Apache Ignite обладает широким функционалом, обеспечивающим снижение латентности, повышение производительности ваших приложений. Для крупных компаний ключевым может оказаться возможность обеспечения роста бизнеса, объёмов вычислений и обрабатываемых данных при снижении TCO. Применять продукт можно и в простых задачах (например, ускорение отклика сервисов и снижение времени доступа к данным), и на более сложных задачах (распределённые вычисления в памяти, распределённая SQL БД). Поддержка DML уже в достаточной степени реализована, полная поддержка DDL по планам сообщества должна появиться в ближайшее время. Если говорить о совсем новых возможностях, то это поддержка ML. Бета-версия движка машинного обучения, включающая поддержку распределённой математики, входит в выпускаемый релиз Ignite 2.0. До конца 2017 года запланированы развитие движка, включая реализацию отдельных алгоритмов из коробки, Python, R и др. Теперь Apache Ignite можно использовать и как распределённую платформу машинного обучения на больших данных со всеми преимуществами хранения и вычисления в памяти.
Что касается проблем, то по моему опыту, они могут возникать от нехватки компетенции, так как проект всё-таки довольно непростой. Поэтому могу посоветовать подключаться к нашему сообществу разработки.
— Работая с Apache Ignite уже не первый год, вы видите ситуацию с in-memory computing в динамике — как всё развивается?
— По моим ощущениям, in-memory computing из области экзотики переходит в область стандартных инструментов для разработки. Например, НСПК создал единую платёжную систему для карты МИР на основе grid-технологий. Большинство основных разработчиков платёжных систем рассматривали возможность использования grid-технологий в очередных версиях своих систем.
— С точки зрения производительности in-memory computing может заметно выигрывать, но при этом большие объёмы оперативной памяти ассоциируются с дороговизной. Можете ли вы привести какие-либо числа, дающие представление, как на практике это сказывается у вас на «железных» расходах по сравнению с традиционными подходами?
— Стоимость кластера, который объемом RAM эквивалентен размеру дисков текущих систем core-banking, составляет 1/5 от цены Hi-End решений. При этом кластер на архитектуре x86 обладает существенно большей процессорной мощностью, лучше приспособлен к массово-параллельным операциям, масштабируется горизонтально.
Кластер ожидаемо потребляет больше энергии, от 30 до 200% в зависимости от природы нагрузки. Также он занимает примерно в 5 раз больше места в дата-центре по сравнению с RISC-решениями.
— А если посмотреть, как со временем менялась стоимость таких решений, и попытаться заглянуть в будущее — похоже ли, что in-memory computing ожидает рост благодаря снижению стоимости?
— Не готов давать финансовые прогнозы, но ежегодно оперативная память дешевеет, а потребление энергии памятью падает. Кто ранее мог подумать, что SSD-диски вытеснят HDD из TOP-сегмента? Думаю, что что-то похожее будет и с оперативной памятью, и с NvRAM решениями, что придаст новый импульс развитию in-memory computing.