Как обработать 1 млн операций за одну секунду: история софта Tarantool

Российскому ПО для обработки данных исполняется 15 лет — за это время оно вышло на мировой уровень.

Как обработать 1 млн операций за одну секунду: история софта Tarantool

Мы часто слышим истории о том, как создатели популярных технологий хотели избавить мир от глобального неудобства и создали ОС UNIX или, скажем, поисковик Google. Реже компании признаются, что планировали изобрести другое: вместо видеосервиса знакомств получился YouTube, вместо проката лимузинов — Uber.

Разработчики Tarantool вообще не думали о мировом рынке и хотели решить внутренние проблемы компании. Но за 15 лет вырастили софт, у которого десятки миллионов пользователей и открытый исходный код, доступный во всем мире. Рассказываем, как так получилось.

2008—2010 годы. Софт вместо железа

2008 год. Мир пытается понять, зачем нужен iPhone 3G, на орбите строится Международная космическая станция, а в России пользователи массово осваивают недавно появившиеся соцсети. Они уже насчитывали миллионную аудиторию, данные которой занимали терабайты памяти. Это сейчас такой объем можно уместить на одном накопителе, а тогда требовались серверы и лицензионный софт (система управления базами данных), которые позволяли находить и выдавать пользователю нужную информацию.

Данные хранились в MySQL (витиеватая судьба этой СУБД заслуживает отдельного рассказа), которая была рассчитана на типичные запросы офисных сотрудников. Обычно их относительно немного, но могут быть запрошены весьма увесистые данные. Однако ни одна IT-компания мира не имеет в штате миллиона специалистов, которые совершают тысячи запросов в секунду. Чтобы справиться с такой нагрузкой соцсети, приходилось распараллеливать процесс — запускать много копий баз данных, а значит, требовалось больше и больше серверов для их работы.

И вот российские разработчики в соцсети Мой Мир применили интересный ход. Они скопировали в оперативную память серверов самую часто используемую информацию. Не ту, что по умолчанию кешировала база данных, а априори регулярно задействованную соцсетью, например профили пользователей. На начальном этапе созданный софт не сильно отличался от подобных, например от Memcached. Его модифицировали, развивали — и так родилась технология Tarantool. Если встретите олда, то он еще может по привычке называть ее SilverBox — так именовались ранние версии.

С одной стороны, даже самый минимум информации для страничек в соцсетях требовал значительного увеличения объема оперативной памяти, которая гораздо дороже дисковой. С другой — кеш с нужной информацией в оперативной памяти позволял делать гораздо меньше копий базы данных, а значит, снижались расходы на закупку серверов. Тут удалось достичь положительного баланса. Например, при внедрении Tarantool в Почту Mail.ru компания сэкономила миллион долларов только на хранении профилей аккаунтов.

Так бы технология и осталась одной из многих внутренних разработок IТ-компании, которые по всему миру делают малые и большие коллективы разработчиков. Но VK (тогда еще Mail.ru Group) выложила ее в открытый доступ. Так что создавать продукты на базе Tarantool теперь мог любой разработчик в мире. Он добавлял в общий код свои наработки — все вместе развивали технологию.

2010—2015 годы. Всем, даром и пусть никто не уйдет обиженным

В 2010 году были открыты исходные коды Tarantool и решение переведено в open source. К этому моменту оно уже использовалось во многих проектах компании, где требовалось одновременно поддерживать большое количество сессий. Например, Почта Mail.ru использует его до сих пор. Применение в приложениях с многомиллионной аудиторией привлекло к технологии внимание сторонних разработчиков.

Хотя открытый код можно скомпилировать и сделать копию продукта, это не разрушает бизнес разработчика. Например, в исходных кодах доступен Telegram. И чем вам поможет мессенджер, который будет только у вас? А самый известный пример — это операционная система Android. Некоторые конкуренты Google уже убедились: просто операционки недостаточно — для нее нужны приложения, а они требуют дополнительных модулей от разработчика.

Зато открытый исходный код начинают развивать сторонние разработчики — и делают продукт лучше. Самый известный пример — Linux, который Линус Торвальдс начал в одиночку, а сообщество сделало мировым стандартом.

Tarantool развивалась медленнее, чем Linux, но технологию заметили. Так, в 2014 году она выиграла в четырех из пяти тестах на быстродействие, проведенных Коимбрским политехническим институтом (Португалия). Уж не знаем, насколько это связано, но в том же году Tarantool стали использовать за пределами компании-разработчика, например в сервисе знакомств Badoo и в американской компании, работающей на рынке информационной безопасности, Wallarm.

Зачем международным компаниям понадобилась маленькая российская технология Tarantool? Дело в том, что распространенный софт и аппаратная начинка универсальны: могут осуществлять одну тяжелую операцию или несколько — попроще, но, если нужно одновременно выполнить сотни простых процессов, система подвисает. Это все равно что грузовик, который может перевезти много товаров, но всего трех человек. Tarantool же помогает распространенным ОС Linux и Windows превратить грузовик в автобус, который может одновременно перевозить много людей, то есть выполнять больше процессов на том же железе. По оценке разработчиков, один сервер на Tarantool в то время мог заменить до 30 (!) серверов с традиционным софтом.

И да, конечно, компании сами могли разработать подобное решение. Но зачем, если есть работающее и быстрое с открытым исходным кодом? А для Tarantool следующим этапом развития стал переход от экономии виртуальных десятков миллионов долларов к зарабатыванию.

2016—2020 годы. Заработать деньги, но не предать комьюнити

Выше мы уже упоминали: одно дело — взять исходный код и совсем другое — интегрировать его со своими продуктами и заставить работать корректно. Этим-то VK (тогда Mail.ru Group) и занялась в 2016 году: официально предложила рынку оптимизацию хранения данных за счет использования Tarantool. Исходный код оставался доступен, а компания зарабатывала на кастомизации решений на базе технологии под специфические запросы.

Со временем на рынке дешевела оперативная память и увеличивалось количество проектов, связанных с in-memory вычислениями. Чтобы отстроиться от конкурентов, команда Tarantool начала создавать сервисы, которые компании могли бы получить сразу, а не ждать разработки с нуля. Разработка для одного заказчика могла потом эволюционировать в новый сервис.

Например, в 2017 году появилась система репликации данных (упрощенно это создание нескольких копий и синхронизация их содержимого) из MySQL в Tarantool. База данных MySQL широко распространена, и пользователи Tarantool часто применяли эту функцию. Но сначала это был код, который надо было при каждом внедрении дорабатывать под конкретную задачу. Со временем он вырос в коммерческий продукт Tarantool CDC, который собирает данные из разнотипных источников и корректно отдает их в приложения. Такое универсальное решение нашло спрос у крупных компаний, которые предпочитали быстро получить готовое решение, а не тратить время и средства на собственную разработку.

Как обработать 1 млн операций за одну секунду: история софта Tarantool

В результате, когда вы пользуетесь услугами Альфа-Банка, ВТБ, Билайна, Yota, МегаФона, Avito, Qiwi, Аэрофлота и других компаний, среди их внутренних сервисов может крутиться быстрый Tarantool.

2021 год — настоящее время. Tarantool — швейцарский нож для обработки данных

Типичных сценариев, для которых имело смысл сделать готовое решение, как вышеупомянутое Tarantool CDC, накапливалось все больше. И постепенно софт Tarantool обрастал модулями, которые позволяли не допиливать исходный код ручками, а сразу из коробки установить базу данных, получить данные из разных источников, работать с разными протоколами и даже создать катастрофоустойчивую систему, в которой выход из строя нескольких серверов не ведет к потере информации и не замедляет работу всей системы. Корпорациям, которые не занимаются непосредственно разработкой, часто проще купить такие решения, чем с нуля разрабатывать средства интеграции Tarantool в свои корпоративные системы.

В результате постепенно компания стала получать основной доход от продажи коробочных решений, а не от реализации конкретных проектов. Это как Microsoft реализует Windows или скорее Microsoft SQL Server.

На рынке уже много систем, поддерживающих in-memory вычисления. Но Tarantool теперь не гиковская поделка, которая служила кешем для базы данных, — разработка превратилась в ПО промежуточного слоя для данных. Этакий швейцарский нож от мира IT: разные модули не просто позволяют обеспечить быструю работу высоконагруженных приложений, но и помогают обмениваться данными между разнотипными системами в разных протоколах, обеспечивать управление этими процессами, безопасность данных и т.п.

Зачем Tarantool высоким технологиям

На IT-рынке много продуктов и с открытым исходным кодом, и коробочных. Но, пожалуй, мало кто может похвастаться таким извилистым технологическим путем, как Tarantool. Начавшись как небольшой внутренний продукт, он сейчас имеет три сильно различающиеся версии. Во-первых, это Tarantool EE (Enterprise Edition) — платный продукт с вышеупомянутыми инструментами для корпораций. Во-вторых, остался вариант с открытым исходным кодом — CE (Community Edition). И наконец, есть версия, работающая в VK Сloud, — для тех, кто хочет использовать базовые функции Tarantool, не погружаясь в вопросы разработки и развертывания решения на своих серверах.

По итогам 2022 года команда Tarantool включает уже полторы сотни человек — в десять раз больше, чем 15 лет назад. Казалось бы, все равно небольшая команда по современным меркам. Но совместно со сторонними разработчиками она создала продукт, который имеет несколько применений, влияющих на нашу жизнь каждый день:

Как обработать 1 млн операций за одну секунду: история софта Tarantool
  • Tarantool по-прежнему используется как промежуточное хранилище, быстрая база данных. Дополнительные инструменты для быстрой установки, управления и взаимодействия с другими продуктами позволяют быстро запустить продукт на базе технологии, например интернет-магазин. В этом случае критично, чтобы сотни тысяч покупателей имели доступ к актуальным товарам с действующими ценами, а их заказы оперативно отправлялись в логистическую IT-инфраструктуру.
  • Tarantool используется как движок для других технологических продуктов, которым надо быстро выполнять много транзакций. Текущая версия Tarantool выполняет до миллиона транзакций в секунду. Благодаря этому технология востребована в облачных продуктах, например в VK Cloud Storage, может мониторить вторжения в систему и т.п.
  • Индустриальный интернет вещей (IIoT) нам кажется чем-то глубоко корпоративным, но множество транзакций от распределенной сети миллиардов датчиков постоянно применяется в пользовательских приложениях и в какой-то степени управляет нашей жизнью. Чтобы уменьшить количество серверов, обслуживающих эти транзакции, многие компании применяют Tarantool.
  • Как ПО промежуточного слоя для данных Tarantool обеспечивает их корректную передачу из больших (и часто не очень быстрых) корпоративных систем в миллионы пользовательских приложений.
  • Наконец, Tarantool применяется в системах мониторинга для телекома. Каждый день происходят миллиарды соединений, какие-то из них заканчиваются ошибкой, где-то происходят обрывы. Надо быстро обработать множество событий о неисправностях, чтобы отыскать причину аварии, устранить ее и поддержать бесперебойную работу сетей. Так что каждый день при звонке по телефону или выходе в интернет мы используем сервисы с ПО промежуточного слоя для обработки данных.

Кажется, история Tarantool и похожа на историю Uber, YouTube и других проектов, и отличается от нее. С одной стороны, российские инженеры смогли превратить внутреннюю разработку компании в продукт, который доступен всему миру. И может быть, сейчас эту статью вы читаете благодаря тому, что где-то на промежуточных серверах трудится российская разработка. С другой стороны, функция у нее не изменилась: она родилась, чтобы ускорить и удешевить вход в соцсеть. Теперь это уже платформа, которая учитывает большинство запросов корпораций на работу с данными, но служит Tarantool все для того же: быстро обрабатывать данные, не покупая лишнее железо. Спираль сделала виток и ушла на новый уровень.

Как обработать 1 млн операций за одну секунду: история софта Tarantool
2929
34 комментария

Написали ВК, у которых страница грузится (и то не всегда полностью) 6-7 секунд в 2023 году...
ВК RIP.

11
Ответить

Нечего сказать по сути - докопайся до автора

6
Ответить

Комментарий недоступен

4
Ответить

Технология сама по себе класнная. Очень близко знаком. Погуглите Константина Осипова, её создателя (сейчас ей уже не занимается).

2
Ответить

и это ещё не все его минусы(

Ответить

Быстродействие в задачи не входит)))

Ответить