Сегодня мы беседуем с Василием Сошниковым, архитектором и разработчиком отечественной open source СУБД Tarantool.
Благодаря своим возможностям обеспечивать высокую пропускную способность на OLTP-нагрузках, Тарантул пользуется необычайной популярностью и спросом среди высокотехнологичных компаний. Сегодня Тарантулом пользуются отечественные крупнейшие Web-сервисы, телекоммуникационные операторы и многие другие представители крупного бизнеса.
На PG Day'17 Russia, Василий проведет интенсивный практический курс по построению масштабируемой распределенной архитектуры для OLTP-задач, используя всего лишь два инструмента: Tarantool и nginx. Все участники курса прослушают краткий ликбез об архитектуре и внутреннем устройстве Тарантула, после чего погрузятся в 3-хчасовую практику, во время которой с нуля построят отказоустойчивый и масштабируемый сервис.
В рамках сегодняшнего разговора, Василий поведал о разработке Тарантула и своей роли в этом процессе, поделился примерами задач, которые решаются с помощью Tarantool, рассказал о структуре roadmap и принципах появления в нем новых «фич».
PG Day: Василий, расскажи вкратце про себя: кто ты, чем занимаешься, какие проблемы решаешь?
Василий: Я – старший разработчик / архитектор. В мои обязанности входит проектирование и разработка. Также я иногда пересекаюсь с бизнесовой, менеджерской и организационной составляющей. Трудно охарактеризовать мою работу одним словом. Сейчас я разрабатываю и продвигаю open source проект Tarantool. Также иногда помогаю другим сторонним проектам, к примеру Centrifugo (это message broker для веба).
Говоря о моей страсти – это video streaming. Я им занимался один раз в жизни, было это в компании РБК, я создал весь backend для РБК-ТВ. Наверное, это был мой самый интересный, с точки зрения архитектуры и кода, проект.
PG Day: Чем именно ты занимаешься внутри проекта Tarantool?
Василий: В основном, планированием и архитектурными решениями на базе самого Tarantool, разработкой частей ядра и внешних модулей. К примеру, из разработанных мной: Tarantool Curl – это binding libcurl’а в Tarantool; Tarantool MQTT – binding для MQTT; и модуль для nginx – это reverse proxy модуль, который преобразовывает поток HTTP-запросов в протокол Тарантула и наоборот. Что касается ядра, недавно как раз принимал участие в переносе внешнего проекта в ядро. Это был Tarantool Curl, HTTP в базе данных нужен всем.
PG Day: Сколько человек занято разработкой Тарантула? Есть такое понятие как корневая команда (core team)?
Василий: Да, конечно. На самом деле, это не только разработчики. Это еще и технические писатели, немного маркетинга и еще кое-кто. Суммарно нас 21 человек. Это те, кто сидит в Москве, в офисе Mail.ru, и разрабатывает Тарантул. Достаточно большой вклад вносят люди из нашего сообщества. Например, они добавляют новые connector’ы для разных языков, придумывают фичи и даже их реализовывают!
PG Day: Чем крут Тарантул как база данных? Что его отличает от других продуктов?
Василий: Ответ прост – OLTP. В Тарантуле нет такой проблемы как сильная деградация со временем и под нагрузкой. Любая дисковая база данных, и даже некоторые in-memory, сильно деградирует. К примеру, тот же Redis, когда он сильно загружен и при этом делает snapshot – мы получаем x2 к размеру занимаемой памяти и тормоза, а это, я отмечу, еще и под нагрузкой происходит. У Tarantool’а этих недостатков нет, плюс ко всему он транзакционный.
На сегодняшний день существует мало баз данных, которые действительно работают с предсказуемым latency (время отклика) и предсказуемой деградацией. Я каждый день вижу как Тарантул работает в “проде”, и я знаю, что он будет работать так и через год, даже если профиль нагрузки изменится.
PG Day: За счет чего достигается такая предсказуемость и стабильность в работе на высоких транзакционных нагрузках?
Василий: Во внутренней архитектуре. В общем-то, об этом и будет мой мастер-класс. Поэтому я не хочу сейчас рассказывать. Если я расскажу сейчас, то будет не очень интересно слушателям. Кому интересно, тот загуглит и попадет на несколько статей и на доклады Константина Осипова. А лучше прийти на мастер-класс! Я нарисую красивую схему, у меня на слайдах будет обоснование, почему это так быстро и стабильно работает. Так что потерпим еще немного.
PG Day: Неожиданно, но хорошо, принимается такой ответ! Насколько я понял, ты планируешь на мастер-классе теорию с практикой совместить?
Василий: У меня запланировано несколько секций. Первая секция – самая короткая, без практики. Она о том, как Тарантул устроен изнутри, что это такое и как надо его использовать. Также мы обсудим проблемы, которые в нем есть; это очень важно – во время эксплуатации знать о всех проблемах! Вторая часть – это будет очень легонькая практика. Мы запустим Tarantool, посмотрим, как он работает, что такое концепция Application server. Третья часть – самая сложная, мы создадим полноценный сервис, будем это масштабировать и, в качестве вишенки на торте, сделаем все это отказоустойчивым. Резюмирую. Теории будет где-то 50 минут, дальше – только практика.
PG Day: Требуются ли участникам знания каких-то языков программирования или еще что-то? Какой-то уровень подготовки, чтобы участвовать в практической части?
Василий: Нет, не потребуется, только ноутбуки. Язык Lua примитивен, я всем его объясню. Файлы конфигурации можно будет взять с моего github, ссылку я дам.
PG Day: Получается своеобразный plug-n-play: как взять минимальное количество инструментов и сразу начать создавать работающую архитектуру.
Василий: Все верно. Мы создадим проект, который будет удовлетворять двум требованиям: прогнозируемое масштабирование и отказоустойчивость. Будут использоваться две технологии: собственно, Тарантул и nginx (тот самый reverse proxy модуль, про который я говорил).
PG Day: Какие фичи вы хотите добавить в Тарантул? Делаете что-то крутое сейчас, что скоро в нем появится?
Василий: Вначале хочу сказать, что у нас полностью открытый roadmap, на который может влиять community. Наверное, SQL – одна из самых больших фич, которая прямо сейчас разрабатывается, уже доступна alpha-версия. Наш план: догнать ее до stable, после чего начать реализовывать распределённый SQL и полноценный планировщик запросов.
PG Day: Под SQL подразумевается стандарт SQL или какая-то разновидность?
Василий: Мы взяли парсер SQLite3. SQL стандарт, если мне память не изменяет, 2003 года. Но, надо понимать, что в нем есть какие-то нестандартные вещи.
PG Day: Есть ли планы сделать встроенный в Тарантул SQL совместимым с популярными СУБД?
Василий: У нас были такие мысли, но, честно говоря, мы пока не видим особой ценности в этом. Все-таки хочется какую-то самобытность сохранить. Если это будет делаться, то под конкретного заказчика, который попросит нас это сделать. Но в рамках развития общего проекта, вряд ли. Даже в roadmap вы этого не найдете.
PG Day: Тарантул – это что-то такое, что следует брать на старте, когда начинается запуск продукта, или же есть какие-то примеры применения в уже сложившейся инфраструктуре?
Василий: Для новых проектов определенно да. Для старых Tarantool может решить некоторые задачи. Напомню, OLTP – идеальный кейс для Tarantool, а это есть или будет во всех проектах.
Был отличный кейс недавно: Тарантул использовали как read-only реплику в MySQL кластере, все это позволило сильно разгрузить кластер MySQL и увеличить время отклика. Создала это компания Mamba (Wamba).
Говоря о community, коллеги из Mamba сами разработали репликационные механизмы между этими базами и выложили их в open source для общего пользования. Мы об этом всем узнали, когда человек в нашем community-чате начал активно спрашивать о репликации.
Еще есть у нас один клиент, сделавший репликацию через Oracle GoldenGate в Tarantool. Схема та же: вся OLTP-нагрузка переносится в Tarantool. Это им позволило сэкономить много денег и повысить время отклика.
PG Day: Если какая-то компания желает привлечь вашу экспертизу для адаптации Tarantool под их реалии, что надо сделать?
Василий: На контрактной основе.
PG Day: Есть примеры использования Тарантула не по назначению? Какие-то рекомендации на этот счет?
Василий: Да. Есть люди, которые пытаются сделать очень тяжелую аналитику, используя один экземпляр Tarantool’а! Даже не пытаясь построить многослойную архитектуру, которая легко и гибко масштабируется. Это самый частый анти-паттерн, который я встречал.
Типичная история выглядит так: сначала они делают мелкие запросы, получают высокую скорость и радуются; потом начинают делать очень-очень тяжелые запросы, Tarantool работает хуже и это вполне логично, для OLAP нужна совершенно другая архитектура, и ее надо продумывать на этапе проектирования. Tarantool может быть и OLAP базой, но это не самый лучший для него кейс.
PG Day: Есть в планах идея сделать Тарантул продуктом, пригодным для стабильного и быстрого OLAP? Или это все-таки противоречит его идеологии?
Василий: Мысли есть, но это еще не в roadmap. Мы пытаемся делаем то, в чем мы сильны. А именно – обрабатывать большое количество мелких транзакций, это достаточно понятный и большой рынок. Понятно, куда двигаться. Начинать большую разработку по OLAP без конкретного заказчика – не самый хороший путь.
PG Day: Текущий roadmap сформирован из актуальных требований и реальных прецедентов?
Василий: Все верно. У нас есть несколько разных типов задач в roadmap. Есть совсем мелкие (грубо говоря, добавить какую-то опцию) и довольно крупные (какую-то большую проблему устранить). Есть другой тип – новая разработка. Все это складывается из требований наших клиентов, пользователей и нашего собственного видения продукта.
PG Day: А в какой момент вы понимаете, что есть какая-то фича, которая должна попасть в roadmap продукта?
Василий: Это сложный вопрос. Бывает совершенно по-разному. Могу свой недавний опыт пересказать.
Была такая задача: добавить возможность возвращать HTTP статусы и заголовки из Tarantool в nginx модуль. Идея висела где-то год, многие за эту идею проголосовали, а у меня все руки до реализации не доходили. Дошли, когда появились два заказчика, которые говорят: «Парни, а вот у нас тут везде SOAP и REST, и нам очень нужны коды статусов». Естественно, фича сразу появилась в open source.
PG Day: Мы уже немного поговорили про содержание мастер-класса. Кому в первую очередь он будет полезен?
Василий: Говорить я буду об архитектуре, о программировании – о том, в чем я силен. Поэтому, в первую очередь, архитекторам, разработчикам. А вообще, приглашаю всех, кто хочет узнать, как на базе Тарантула делать новые проекты или применять уже в существующих.
PG Day: Спасибо, Василий! Хочу поблагодарить за то время, которое ты нам уделил. С нетерпением ждем нашей встречи в Санкт-Петербурге.
Василий: Взаимно, Роман! Очень жду. Для меня это будет интересный опыт.
Благодаря своим возможностям обеспечивать высокую пропускную способность на OLTP-нагрузках, Тарантул пользуется необычайной популярностью и спросом среди высокотехнологичных компаний. Сегодня Тарантулом пользуются отечественные крупнейшие Web-сервисы, телекоммуникационные операторы и многие другие представители крупного бизнеса.
На PG Day'17 Russia, Василий проведет интенсивный практический курс по построению масштабируемой распределенной архитектуры для OLTP-задач, используя всего лишь два инструмента: Tarantool и nginx. Все участники курса прослушают краткий ликбез об архитектуре и внутреннем устройстве Тарантула, после чего погрузятся в 3-хчасовую практику, во время которой с нуля построят отказоустойчивый и масштабируемый сервис.
В рамках сегодняшнего разговора, Василий поведал о разработке Тарантула и своей роли в этом процессе, поделился примерами задач, которые решаются с помощью Tarantool, рассказал о структуре roadmap и принципах появления в нем новых «фич».
PG Day: Василий, расскажи вкратце про себя: кто ты, чем занимаешься, какие проблемы решаешь?
Василий: Я – старший разработчик / архитектор. В мои обязанности входит проектирование и разработка. Также я иногда пересекаюсь с бизнесовой, менеджерской и организационной составляющей. Трудно охарактеризовать мою работу одним словом. Сейчас я разрабатываю и продвигаю open source проект Tarantool. Также иногда помогаю другим сторонним проектам, к примеру Centrifugo (это message broker для веба).
Говоря о моей страсти – это video streaming. Я им занимался один раз в жизни, было это в компании РБК, я создал весь backend для РБК-ТВ. Наверное, это был мой самый интересный, с точки зрения архитектуры и кода, проект.
PG Day: Чем именно ты занимаешься внутри проекта Tarantool?
Василий: В основном, планированием и архитектурными решениями на базе самого Tarantool, разработкой частей ядра и внешних модулей. К примеру, из разработанных мной: Tarantool Curl – это binding libcurl’а в Tarantool; Tarantool MQTT – binding для MQTT; и модуль для nginx – это reverse proxy модуль, который преобразовывает поток HTTP-запросов в протокол Тарантула и наоборот. Что касается ядра, недавно как раз принимал участие в переносе внешнего проекта в ядро. Это был Tarantool Curl, HTTP в базе данных нужен всем.
PG Day: Сколько человек занято разработкой Тарантула? Есть такое понятие как корневая команда (core team)?
Василий: Да, конечно. На самом деле, это не только разработчики. Это еще и технические писатели, немного маркетинга и еще кое-кто. Суммарно нас 21 человек. Это те, кто сидит в Москве, в офисе Mail.ru, и разрабатывает Тарантул. Достаточно большой вклад вносят люди из нашего сообщества. Например, они добавляют новые connector’ы для разных языков, придумывают фичи и даже их реализовывают!
PG Day: Чем крут Тарантул как база данных? Что его отличает от других продуктов?
Василий: Ответ прост – OLTP. В Тарантуле нет такой проблемы как сильная деградация со временем и под нагрузкой. Любая дисковая база данных, и даже некоторые in-memory, сильно деградирует. К примеру, тот же Redis, когда он сильно загружен и при этом делает snapshot – мы получаем x2 к размеру занимаемой памяти и тормоза, а это, я отмечу, еще и под нагрузкой происходит. У Tarantool’а этих недостатков нет, плюс ко всему он транзакционный.
На сегодняшний день существует мало баз данных, которые действительно работают с предсказуемым latency (время отклика) и предсказуемой деградацией. Я каждый день вижу как Тарантул работает в “проде”, и я знаю, что он будет работать так и через год, даже если профиль нагрузки изменится.
PG Day: За счет чего достигается такая предсказуемость и стабильность в работе на высоких транзакционных нагрузках?
Василий: Во внутренней архитектуре. В общем-то, об этом и будет мой мастер-класс. Поэтому я не хочу сейчас рассказывать. Если я расскажу сейчас, то будет не очень интересно слушателям. Кому интересно, тот загуглит и попадет на несколько статей и на доклады Константина Осипова. А лучше прийти на мастер-класс! Я нарисую красивую схему, у меня на слайдах будет обоснование, почему это так быстро и стабильно работает. Так что потерпим еще немного.
PG Day: Неожиданно, но хорошо, принимается такой ответ! Насколько я понял, ты планируешь на мастер-классе теорию с практикой совместить?
Василий: У меня запланировано несколько секций. Первая секция – самая короткая, без практики. Она о том, как Тарантул устроен изнутри, что это такое и как надо его использовать. Также мы обсудим проблемы, которые в нем есть; это очень важно – во время эксплуатации знать о всех проблемах! Вторая часть – это будет очень легонькая практика. Мы запустим Tarantool, посмотрим, как он работает, что такое концепция Application server. Третья часть – самая сложная, мы создадим полноценный сервис, будем это масштабировать и, в качестве вишенки на торте, сделаем все это отказоустойчивым. Резюмирую. Теории будет где-то 50 минут, дальше – только практика.
PG Day: Требуются ли участникам знания каких-то языков программирования или еще что-то? Какой-то уровень подготовки, чтобы участвовать в практической части?
Василий: Нет, не потребуется, только ноутбуки. Язык Lua примитивен, я всем его объясню. Файлы конфигурации можно будет взять с моего github, ссылку я дам.
PG Day: Получается своеобразный plug-n-play: как взять минимальное количество инструментов и сразу начать создавать работающую архитектуру.
Василий: Все верно. Мы создадим проект, который будет удовлетворять двум требованиям: прогнозируемое масштабирование и отказоустойчивость. Будут использоваться две технологии: собственно, Тарантул и nginx (тот самый reverse proxy модуль, про который я говорил).
PG Day: Какие фичи вы хотите добавить в Тарантул? Делаете что-то крутое сейчас, что скоро в нем появится?
Василий: Вначале хочу сказать, что у нас полностью открытый roadmap, на который может влиять community. Наверное, SQL – одна из самых больших фич, которая прямо сейчас разрабатывается, уже доступна alpha-версия. Наш план: догнать ее до stable, после чего начать реализовывать распределённый SQL и полноценный планировщик запросов.
PG Day: Под SQL подразумевается стандарт SQL или какая-то разновидность?
Василий: Мы взяли парсер SQLite3. SQL стандарт, если мне память не изменяет, 2003 года. Но, надо понимать, что в нем есть какие-то нестандартные вещи.
PG Day: Есть ли планы сделать встроенный в Тарантул SQL совместимым с популярными СУБД?
Василий: У нас были такие мысли, но, честно говоря, мы пока не видим особой ценности в этом. Все-таки хочется какую-то самобытность сохранить. Если это будет делаться, то под конкретного заказчика, который попросит нас это сделать. Но в рамках развития общего проекта, вряд ли. Даже в roadmap вы этого не найдете.
PG Day: Тарантул – это что-то такое, что следует брать на старте, когда начинается запуск продукта, или же есть какие-то примеры применения в уже сложившейся инфраструктуре?
Василий: Для новых проектов определенно да. Для старых Tarantool может решить некоторые задачи. Напомню, OLTP – идеальный кейс для Tarantool, а это есть или будет во всех проектах.
Был отличный кейс недавно: Тарантул использовали как read-only реплику в MySQL кластере, все это позволило сильно разгрузить кластер MySQL и увеличить время отклика. Создала это компания Mamba (Wamba).
Говоря о community, коллеги из Mamba сами разработали репликационные механизмы между этими базами и выложили их в open source для общего пользования. Мы об этом всем узнали, когда человек в нашем community-чате начал активно спрашивать о репликации.
Еще есть у нас один клиент, сделавший репликацию через Oracle GoldenGate в Tarantool. Схема та же: вся OLTP-нагрузка переносится в Tarantool. Это им позволило сэкономить много денег и повысить время отклика.
PG Day: Если какая-то компания желает привлечь вашу экспертизу для адаптации Tarantool под их реалии, что надо сделать?
Василий: На контрактной основе.
PG Day: Есть примеры использования Тарантула не по назначению? Какие-то рекомендации на этот счет?
Василий: Да. Есть люди, которые пытаются сделать очень тяжелую аналитику, используя один экземпляр Tarantool’а! Даже не пытаясь построить многослойную архитектуру, которая легко и гибко масштабируется. Это самый частый анти-паттерн, который я встречал.
Типичная история выглядит так: сначала они делают мелкие запросы, получают высокую скорость и радуются; потом начинают делать очень-очень тяжелые запросы, Tarantool работает хуже и это вполне логично, для OLAP нужна совершенно другая архитектура, и ее надо продумывать на этапе проектирования. Tarantool может быть и OLAP базой, но это не самый лучший для него кейс.
PG Day: Есть в планах идея сделать Тарантул продуктом, пригодным для стабильного и быстрого OLAP? Или это все-таки противоречит его идеологии?
Василий: Мысли есть, но это еще не в roadmap. Мы пытаемся делаем то, в чем мы сильны. А именно – обрабатывать большое количество мелких транзакций, это достаточно понятный и большой рынок. Понятно, куда двигаться. Начинать большую разработку по OLAP без конкретного заказчика – не самый хороший путь.
PG Day: Текущий roadmap сформирован из актуальных требований и реальных прецедентов?
Василий: Все верно. У нас есть несколько разных типов задач в roadmap. Есть совсем мелкие (грубо говоря, добавить какую-то опцию) и довольно крупные (какую-то большую проблему устранить). Есть другой тип – новая разработка. Все это складывается из требований наших клиентов, пользователей и нашего собственного видения продукта.
PG Day: А в какой момент вы понимаете, что есть какая-то фича, которая должна попасть в roadmap продукта?
Василий: Это сложный вопрос. Бывает совершенно по-разному. Могу свой недавний опыт пересказать.
Была такая задача: добавить возможность возвращать HTTP статусы и заголовки из Tarantool в nginx модуль. Идея висела где-то год, многие за эту идею проголосовали, а у меня все руки до реализации не доходили. Дошли, когда появились два заказчика, которые говорят: «Парни, а вот у нас тут везде SOAP и REST, и нам очень нужны коды статусов». Естественно, фича сразу появилась в open source.
PG Day: Мы уже немного поговорили про содержание мастер-класса. Кому в первую очередь он будет полезен?
Василий: Говорить я буду об архитектуре, о программировании – о том, в чем я силен. Поэтому, в первую очередь, архитекторам, разработчикам. А вообще, приглашаю всех, кто хочет узнать, как на базе Тарантула делать новые проекты или применять уже в существующих.
PG Day: Спасибо, Василий! Хочу поблагодарить за то время, которое ты нам уделил. С нетерпением ждем нашей встречи в Санкт-Петербурге.
Василий: Взаимно, Роман! Очень жду. Для меня это будет интересный опыт.