Тезисы:
За последние 2 года экосистема tarantool пополнилась огромным количеством батареек: дисковое хранение, lua-шардинг, работа со схемами данных и версиями, nginx upstream модуль. Используя эти компоненты, можно создавать высокопроизводительные приложения без использования дополнительных технологий.
В докладе будет описан опыт использования Tarantool для разработки performance-critical restful api: расскажу в чем плюсы и минусы текущей реализации lua-шардинга, как создать restful api прямо в базе данных и почему это быстрее многих популярных решений на примере реальных данных. Кроме того, будет рассмотрен подход использования avro схем для валидации, версионирования и хранения json документов в Tarantool. Для наглядности во время доклада будет разработан микросервис и проведено нагрузочное тестирование.
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Ontico
AVRO - система сериализации данных, созданная сообществом Apache Hadoop. Включает в себя различные структуры данных, компактный формат хранения в бинарном виде, язык описания схем данных и правила миграции данных между разными версиями схемы. С помощью инструментария AVRO можно валидировать данные по схеме, совершать преобразования из одной версии в другую и даже восстанавливать неполные данные при помощи значений по-умолчанию. Поддержка Apache AVRO была добавлена в Tarantool в этом году и уже используются в production.
Tarantool можно использовать как документо-ориентированную СУБД. В докладе я расскажу про подход к версионированию данных, разработанный командой tarantool: использование avro схемы для валидации входных данных, преобразования от одной версии к другой в runtime, оптимальное хранение версий документа, изменение схемы данных без избыточности и проблем в предыдущих версиях.
Также я расскажу, как применять этот подход для создания бэкендов restful api прямо в базе данных (без дополнительной разработки). Для наглядности мы сравним получившуюся систему с популярными веб-фреймворками: django-rest-framework, go-restful, node.js и посмотрим, кто окажется в лидерах по производительности. Кроме того, во время выступления я покажу live пример создания restful api на стеке технологий tarantool в облаке amazon.
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
В эпоху распределённых архитектур и микросервисов как никогда актуальными становятся вопросы — как эффективно сериализовать и передать данные. Большинство решает данный вопрос просто — используют стандартный, универсальный и всем понятный формат JSON. Другие же, ориентируясь на производительность, ищут в интернете бенчмарки и выбирают protobuf или msgpack.
Мы протестировали разные реализации статически (thrift, protocol buffers) и динамически (json, msgpack) типизированных протоколов для python; сравнили их производительность в разных сценариях, возможности, внутреннее устройство, удобство разработки.
Я расскажу о результатах нашего исследования, особенностях "приготовления" библиотек и выявленных подводных камнях.
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
В данном докладе я расскажу о том, как Lua помогает расширять функционал Rspamd, позволяя людям без особых знаний С писать эффективные правила фильтрации спама. Также будут рассмотрены особенности внедрения Lua в C код и основные приемы, применяемые при написании API для Lua приложений. Отдельное внимание будет уделено документации к Lua API, которая является одним из необходимых компонентов для opensource приложения.
Кроме этого, отдельная часть доклада посвящена анализу производительности Lua: использованию LuaJIT, сравнению вызовов C функций через FFI с традиционным вызовом, оптимизации строковых операций и таблиц в Lua.
В заключение будут рассмотрены некоторые открытые вопросы: будущее языка, наличие нескольких диалектов, статический анализ Lua стека, а также вопросы безопасности при JIT компиляции.
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Badoo Development
Каждый день на badoo.com пользователи просматривают порядка 100 миллионов профилей других юзеров. Мы храним счетчики и полную историю посещений за последние 90 дней, с некоторой агрегацией - это около 5 миллиардов ивентов. Система обрабатывающая этот поток данных создана давно и пережила несколько инкарнаций, становясь все ближе к базе данных.
В какой-то момент мы решили перестать изобретать велосипед, отказались от демонов на C+sqlite, не стали делать на mysql-ях, редисах и мемкешах, а взяли и запилили на Tarantool.
Рассказываем почему Tarantool, как шардим, реплицируем (все просто) и как плавно это дело внедрили на живой системе без downtime.
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)Badoo Development
DevConf 2016
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
Lua — высокоуровневый язык, похожий на Python/JS, но существенно более простой. Он гибкий и при этом очень быстрый.
Возможно, вы слышали про OpenResty. Это решение для разработки Nginx модулей на Lua. Cloudflare, крупнейший CDN/anti-DDOS провайдер, как раз работает на OpenResty.
На скоростях 10/100Gb сетевой стек в ядре Linux становится “узким местом”. Есть ряд технологий для выноса обработки пакетов из ядра в userspace; например Snabb Switch. Последний написан целиком на Lua и справляется с потоком в 200+Gb.
Как на счет менее экзотических применений? На Lua есть свой Node.js (luvit.io). Lua есть в БД Tarantool. У нас была задача валидации данных на соответствие схеме; мы переписали валидацию с Си на Lua и получили ускорение в 4 раза (за счет JIT-компиляции).
Lua набирает популярность и он объективно хорош. Что будет в докладе:
1) Краткое введение в Lua: мы убедимся в том, что язык простой и там есть все необходимое на каждый день.
2) Секция Lua WAT (смешные контр-интуитивные особенности языка, 0 and 1 == 0)
3) Поговорим о том, почему Tarantool использует LuaJIT, а не V8.
4) Разберемся, почему именно Lua такой быстрый, и как работает трассирующий JIT-компилятор.
Из презентации вы узнаете:
— как работает database/sql;
— интерфейс и реализации database/sql/driver;
— обзор популярных ORM и что с ними не так;
— как мы делали свой лучший ORM;
— и почему столько раз его переделывали.
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Ontico
AVRO - система сериализации данных, созданная сообществом Apache Hadoop. Включает в себя различные структуры данных, компактный формат хранения в бинарном виде, язык описания схем данных и правила миграции данных между разными версиями схемы. С помощью инструментария AVRO можно валидировать данные по схеме, совершать преобразования из одной версии в другую и даже восстанавливать неполные данные при помощи значений по-умолчанию. Поддержка Apache AVRO была добавлена в Tarantool в этом году и уже используются в production.
Tarantool можно использовать как документо-ориентированную СУБД. В докладе я расскажу про подход к версионированию данных, разработанный командой tarantool: использование avro схемы для валидации входных данных, преобразования от одной версии к другой в runtime, оптимальное хранение версий документа, изменение схемы данных без избыточности и проблем в предыдущих версиях.
Также я расскажу, как применять этот подход для создания бэкендов restful api прямо в базе данных (без дополнительной разработки). Для наглядности мы сравним получившуюся систему с популярными веб-фреймворками: django-rest-framework, go-restful, node.js и посмотрим, кто окажется в лидерах по производительности. Кроме того, во время выступления я покажу live пример создания restful api на стеке технологий tarantool в облаке amazon.
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
В эпоху распределённых архитектур и микросервисов как никогда актуальными становятся вопросы — как эффективно сериализовать и передать данные. Большинство решает данный вопрос просто — используют стандартный, универсальный и всем понятный формат JSON. Другие же, ориентируясь на производительность, ищут в интернете бенчмарки и выбирают protobuf или msgpack.
Мы протестировали разные реализации статически (thrift, protocol buffers) и динамически (json, msgpack) типизированных протоколов для python; сравнили их производительность в разных сценариях, возможности, внутреннее устройство, удобство разработки.
Я расскажу о результатах нашего исследования, особенностях "приготовления" библиотек и выявленных подводных камнях.
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
В данном докладе я расскажу о том, как Lua помогает расширять функционал Rspamd, позволяя людям без особых знаний С писать эффективные правила фильтрации спама. Также будут рассмотрены особенности внедрения Lua в C код и основные приемы, применяемые при написании API для Lua приложений. Отдельное внимание будет уделено документации к Lua API, которая является одним из необходимых компонентов для opensource приложения.
Кроме этого, отдельная часть доклада посвящена анализу производительности Lua: использованию LuaJIT, сравнению вызовов C функций через FFI с традиционным вызовом, оптимизации строковых операций и таблиц в Lua.
В заключение будут рассмотрены некоторые открытые вопросы: будущее языка, наличие нескольких диалектов, статический анализ Lua стека, а также вопросы безопасности при JIT компиляции.
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Badoo Development
Каждый день на badoo.com пользователи просматривают порядка 100 миллионов профилей других юзеров. Мы храним счетчики и полную историю посещений за последние 90 дней, с некоторой агрегацией - это около 5 миллиардов ивентов. Система обрабатывающая этот поток данных создана давно и пережила несколько инкарнаций, становясь все ближе к базе данных.
В какой-то момент мы решили перестать изобретать велосипед, отказались от демонов на C+sqlite, не стали делать на mysql-ях, редисах и мемкешах, а взяли и запилили на Tarantool.
Рассказываем почему Tarantool, как шардим, реплицируем (все просто) и как плавно это дело внедрили на живой системе без downtime.
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)Badoo Development
DevConf 2016
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
Lua — высокоуровневый язык, похожий на Python/JS, но существенно более простой. Он гибкий и при этом очень быстрый.
Возможно, вы слышали про OpenResty. Это решение для разработки Nginx модулей на Lua. Cloudflare, крупнейший CDN/anti-DDOS провайдер, как раз работает на OpenResty.
На скоростях 10/100Gb сетевой стек в ядре Linux становится “узким местом”. Есть ряд технологий для выноса обработки пакетов из ядра в userspace; например Snabb Switch. Последний написан целиком на Lua и справляется с потоком в 200+Gb.
Как на счет менее экзотических применений? На Lua есть свой Node.js (luvit.io). Lua есть в БД Tarantool. У нас была задача валидации данных на соответствие схеме; мы переписали валидацию с Си на Lua и получили ускорение в 4 раза (за счет JIT-компиляции).
Lua набирает популярность и он объективно хорош. Что будет в докладе:
1) Краткое введение в Lua: мы убедимся в том, что язык простой и там есть все необходимое на каждый день.
2) Секция Lua WAT (смешные контр-интуитивные особенности языка, 0 and 1 == 0)
3) Поговорим о том, почему Tarantool использует LuaJIT, а не V8.
4) Разберемся, почему именно Lua такой быстрый, и как работает трассирующий JIT-компилятор.
Из презентации вы узнаете:
— как работает database/sql;
— интерфейс и реализации database/sql/driver;
— обзор популярных ORM и что с ними не так;
— как мы делали свой лучший ORM;
— и почему столько раз его переделывали.
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
Довольно часто как адинистраторы, так и разработчики жалуются на низкую производительность приложений, работающих с базой данных, и нередко при этом ищут решения возникших проблем с помощью различных настроек как СУБД, так и операционной системы, пренебрегая при этом самым действенным способом - оптимизацией запросов к собственно БД.
Тому, как понимать, где же узкие места, и как их можно попробовать избежать на примере PostgreSQL и посвящен этот доклад.
Из презентации вы узнаете:
— как мы пришли к Go, оставив идею использования Node.js, Scala или Rust;
— про первый сервис, который мы написали на Go и запустили в продакшен;
— про ошибки, с которыми сталкивались под нагрузкой;
— про оптимизации, которые мы сделали и еще планируем сделать;
— про тестирование и предотвращение тестирования на продакшене (в частности, websocket'ов).
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
В многоядерных высоконагруженных системах с высокой конкурентностью часто бывает сложно определить, чем занят отдельный процесс PostgreSQL. Он может находиться в ожидании локов высокого уровня, таких как локи таблиц, внутренних локов, используемых для синхронизации процессов, ввода-вывода и многих других.
В настоящий момент среди всех событий ожидания мониторить можно только локи высокого уровня с помощью представлений PostgreSQL. Другие типы ожиданий требуют использования низкоуровневых утилит типа perf, systemtap и других. Эти утилиты требуют специальных знаний и могут быть платформозависимыми. В то же время другие enterprise базы данных уже включают в себя инструменты для мониторинга ожиданий.
Мы разработали патч, который реализует мониторинг ожиданий в PostgreSQL. С минимальной настройкой (несколько конфигурационных параметров) этот патч показывает полную информацию о текущих ожиданиях в режиме реального времени и с небольшим оверхедом на всю систему. Этот патч уже работает на продакшен серверах Яндекса и показал свою полезность.
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
В дата-центрах нашей компании несколько тысяч серверов, и примерно на половине из них нужно выкладывать PHP-код 2 раза в день. Помимо раскладки на production также не стоит забывать о том, что код нужен на стейджинге, и в стейджинг-кластер у нас входит около 50 машин, код на которых обновляется раз в несколько минут. Также есть «хотфиксы» — небольшие (1-5) наборы файлов, которые выкладываются во внеочередном порядке на все или на выделенную часть серверов, чтобы устранить существующие проблемы на продакшне, не дожидаясь полной выкладки.
В этом докладе я расскажу о том, как мы деплоились в течение 10 лет, о том, какую новую систему для деплоя PHP-кода мы разработали и внедрили в production, а также проведу обзор решений для масштабного деплоя кода на PHP и анализ их производительности.
План доклада:
— Наша старая система деплоя, достоинства и недостатки.
— Существующие решения:
* "svn up" / "git pull".
* rsync.
* phar, hhbc (HHVM-specific), "loop".
* rsync + 2 директории + realpath_root (Rasmus-style).
— Требования для новой системы деплоя.
* быстрый деплой на стейджинг (5-10 секунд на 50 серверов).
* возможность атомарно патчить несколько файлов и быстро их выкладывать (10 секунд на весь кластер).
* совместимость с docker.
* поддержка «долгоиграющих» CLI-скриптов (несколько часов).
* низкое потребление ресурсов на принимающей стороне.
* отсутствие необходимости сбрасывать opcache.
* высокая скорость деплоя на продакшн (1-2 минуты на 1500 серверов).
— MDK — multiversion deployment kit.
— Анализ применимости и производительности способов деплоя.
— Выводы.
Современная операционная система: что надо знать разработчику / Александр Кри...Ontico
Мы проговорим про связь приложения и ОС, какие компоненты есть в современной ОС на примере Linux, как настройки этих компонент могут повлиять на приложение.
Я расскажу про планировщик процессов, дисковый и сетевой ввод-вывод и соответствующие планировщики, управление памятью - как это все в общих чертах работает и как его потюнить.
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
RethinkDB - это распределенное документо-ориентированное хранилище данных с открытым исходным кодом. Данная система ориентирована на разработку систем обработки данных реального времени, позволяя клиентскому приложению подписываться на изменение тех или иных данных.
В данном докладе я бы хотел осветить не только вопросы разработки приложений на базе RethinkDB, но и поговорить о том, как все это работает. Мы поговорим о ReQL (язык запросов), “changefeeds”, индексах, шардинге, репликациях, а также затронем вопросы особенностей проектирования баз данных под данную платформу.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Badoo Development
Рассказали о том как у нас эволюционировала сборка code-coverage для php-кода за 4 года, каких успехов мы достигли на этом поприще и как боролись со скоростью сборки с учетом постоянно растущего количества тестов. Доклад будет полезен как тем, кто только начитает покрывать свой код тестами, так и тем, кто давно этим занимается и сталкивается с проблемами производительности при сборке покрытия.
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...Ontico
Чтобы добиться от системы максимальной производительности, необходимо учитывать структуру данных, с которыми вы работаете. Проблемы возникают, если данные очень неоднородные, и один из способов решения этих проблем - использовать возможности современных реляционных БД для хранения данных в документо-ориентированной форме.
Этот подход имеет свои плюсы и минусы, которые будут обсуждаться в докладе на примерах PostgreSQL/MySQL/MariaDB etc.
Основные вопросы:
* конечно, производительность тех или иных решений и подходов - чего необходимо избегать, а чего бояться не стоит (бенчмарки для разных конфигураций и видов нагрузки);
* способы безболезненного переноса данных в такой формат.
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Ontico
В процессе обновления высоконагруженных серверов раздачи видео (40Gbit/s с каждого сервера) со старого OpenSuSE 10.2 на новый CentOS 7 (время между релизами — 7 лет) мы столкнулись с рядом проблем — необъяснимый свопинг и запуски OOM killer, неравномерное распределение нагрузки по ядрам, обрывы соединений, скачки системной нагрузки на CPU.
В докладе будет рассказано о том, как мы боролись с этими проблемами и какие технологии для этого использовали.
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...Tanya Denisyuk
Каждый день пользователи совершают миллионы действий в Интернете. Нам в FACETz DMP необходимо структурировать эти данные и проводить сегментацию для выявления предпочтений пользователей.
Хочу рассказать, как мы:
- Сегментируем в реальном времени 600 миллионов пользователей ежедневно;
- Поставляем данные партнерам, DSP, Google с минимальной задержкой;
- Храним статистику по количеству уникальных пользователей в сегменте при потоковой обработке;
- Отслеживаем влияние изменения параметров сегментации;
- Ведем подсчет аффинитивности домена к сегменту для аналитики аудиторий.
Алексей Залесов-«Управление контейнерами в облаках»Tanya Denisyuk
"Один физический сервер предоставляет определенный объем ресурсов, таких как память, жесткий диск и процессоры. Но вычислительная задача редко совпадает по объему с одним сервером. Она может задействовать для своего решения ресурсы десятков и сотен физических машин или оставлять вычислительные мощности одного сервера незагруженными. Более того, объем задачи может меняться
динамически в зависимости от нагрузки.
Для решения описанной проблемы были придуманы контейнеры. Контейнеры – это полностью готовый к исполнению код с зависимостями и ресурсы, выделенные под эту задачу. Выполняющиеся на одной физической машине контейнеры изолированы друг от друга, поэтому могут принадлежать разным задачам. Контейнеры одной задачи могут выполняться на разных машинах. Для того чтобы ими управлять, нужен контейнер менеджер.
Что будет в докладе:
∙ принципы работы менеджера контейнеров
∙ фунции менеджера контейнеров
∙ технологии контейнеризации
∙ сравнение существующих решений: Kubernetes, Mesos и Cloud Foundry"
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
Довольно часто как адинистраторы, так и разработчики жалуются на низкую производительность приложений, работающих с базой данных, и нередко при этом ищут решения возникших проблем с помощью различных настроек как СУБД, так и операционной системы, пренебрегая при этом самым действенным способом - оптимизацией запросов к собственно БД.
Тому, как понимать, где же узкие места, и как их можно попробовать избежать на примере PostgreSQL и посвящен этот доклад.
Из презентации вы узнаете:
— как мы пришли к Go, оставив идею использования Node.js, Scala или Rust;
— про первый сервис, который мы написали на Go и запустили в продакшен;
— про ошибки, с которыми сталкивались под нагрузкой;
— про оптимизации, которые мы сделали и еще планируем сделать;
— про тестирование и предотвращение тестирования на продакшене (в частности, websocket'ов).
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
В многоядерных высоконагруженных системах с высокой конкурентностью часто бывает сложно определить, чем занят отдельный процесс PostgreSQL. Он может находиться в ожидании локов высокого уровня, таких как локи таблиц, внутренних локов, используемых для синхронизации процессов, ввода-вывода и многих других.
В настоящий момент среди всех событий ожидания мониторить можно только локи высокого уровня с помощью представлений PostgreSQL. Другие типы ожиданий требуют использования низкоуровневых утилит типа perf, systemtap и других. Эти утилиты требуют специальных знаний и могут быть платформозависимыми. В то же время другие enterprise базы данных уже включают в себя инструменты для мониторинга ожиданий.
Мы разработали патч, который реализует мониторинг ожиданий в PostgreSQL. С минимальной настройкой (несколько конфигурационных параметров) этот патч показывает полную информацию о текущих ожиданиях в режиме реального времени и с небольшим оверхедом на всю систему. Этот патч уже работает на продакшен серверах Яндекса и показал свою полезность.
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
В дата-центрах нашей компании несколько тысяч серверов, и примерно на половине из них нужно выкладывать PHP-код 2 раза в день. Помимо раскладки на production также не стоит забывать о том, что код нужен на стейджинге, и в стейджинг-кластер у нас входит около 50 машин, код на которых обновляется раз в несколько минут. Также есть «хотфиксы» — небольшие (1-5) наборы файлов, которые выкладываются во внеочередном порядке на все или на выделенную часть серверов, чтобы устранить существующие проблемы на продакшне, не дожидаясь полной выкладки.
В этом докладе я расскажу о том, как мы деплоились в течение 10 лет, о том, какую новую систему для деплоя PHP-кода мы разработали и внедрили в production, а также проведу обзор решений для масштабного деплоя кода на PHP и анализ их производительности.
План доклада:
— Наша старая система деплоя, достоинства и недостатки.
— Существующие решения:
* "svn up" / "git pull".
* rsync.
* phar, hhbc (HHVM-specific), "loop".
* rsync + 2 директории + realpath_root (Rasmus-style).
— Требования для новой системы деплоя.
* быстрый деплой на стейджинг (5-10 секунд на 50 серверов).
* возможность атомарно патчить несколько файлов и быстро их выкладывать (10 секунд на весь кластер).
* совместимость с docker.
* поддержка «долгоиграющих» CLI-скриптов (несколько часов).
* низкое потребление ресурсов на принимающей стороне.
* отсутствие необходимости сбрасывать opcache.
* высокая скорость деплоя на продакшн (1-2 минуты на 1500 серверов).
— MDK — multiversion deployment kit.
— Анализ применимости и производительности способов деплоя.
— Выводы.
Современная операционная система: что надо знать разработчику / Александр Кри...Ontico
Мы проговорим про связь приложения и ОС, какие компоненты есть в современной ОС на примере Linux, как настройки этих компонент могут повлиять на приложение.
Я расскажу про планировщик процессов, дисковый и сетевой ввод-вывод и соответствующие планировщики, управление памятью - как это все в общих чертах работает и как его потюнить.
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
RethinkDB - это распределенное документо-ориентированное хранилище данных с открытым исходным кодом. Данная система ориентирована на разработку систем обработки данных реального времени, позволяя клиентскому приложению подписываться на изменение тех или иных данных.
В данном докладе я бы хотел осветить не только вопросы разработки приложений на базе RethinkDB, но и поговорить о том, как все это работает. Мы поговорим о ReQL (язык запросов), “changefeeds”, индексах, шардинге, репликациях, а также затронем вопросы особенностей проектирования баз данных под данную платформу.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Badoo Development
Рассказали о том как у нас эволюционировала сборка code-coverage для php-кода за 4 года, каких успехов мы достигли на этом поприще и как боролись со скоростью сборки с учетом постоянно растущего количества тестов. Доклад будет полезен как тем, кто только начитает покрывать свой код тестами, так и тем, кто давно этим занимается и сталкивается с проблемами производительности при сборке покрытия.
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...Ontico
Чтобы добиться от системы максимальной производительности, необходимо учитывать структуру данных, с которыми вы работаете. Проблемы возникают, если данные очень неоднородные, и один из способов решения этих проблем - использовать возможности современных реляционных БД для хранения данных в документо-ориентированной форме.
Этот подход имеет свои плюсы и минусы, которые будут обсуждаться в докладе на примерах PostgreSQL/MySQL/MariaDB etc.
Основные вопросы:
* конечно, производительность тех или иных решений и подходов - чего необходимо избегать, а чего бояться не стоит (бенчмарки для разных конфигураций и видов нагрузки);
* способы безболезненного переноса данных в такой формат.
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Ontico
В процессе обновления высоконагруженных серверов раздачи видео (40Gbit/s с каждого сервера) со старого OpenSuSE 10.2 на новый CentOS 7 (время между релизами — 7 лет) мы столкнулись с рядом проблем — необъяснимый свопинг и запуски OOM killer, неравномерное распределение нагрузки по ядрам, обрывы соединений, скачки системной нагрузки на CPU.
В докладе будет рассказано о том, как мы боролись с этими проблемами и какие технологии для этого использовали.
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...Tanya Denisyuk
Каждый день пользователи совершают миллионы действий в Интернете. Нам в FACETz DMP необходимо структурировать эти данные и проводить сегментацию для выявления предпочтений пользователей.
Хочу рассказать, как мы:
- Сегментируем в реальном времени 600 миллионов пользователей ежедневно;
- Поставляем данные партнерам, DSP, Google с минимальной задержкой;
- Храним статистику по количеству уникальных пользователей в сегменте при потоковой обработке;
- Отслеживаем влияние изменения параметров сегментации;
- Ведем подсчет аффинитивности домена к сегменту для аналитики аудиторий.
Алексей Залесов-«Управление контейнерами в облаках»Tanya Denisyuk
"Один физический сервер предоставляет определенный объем ресурсов, таких как память, жесткий диск и процессоры. Но вычислительная задача редко совпадает по объему с одним сервером. Она может задействовать для своего решения ресурсы десятков и сотен физических машин или оставлять вычислительные мощности одного сервера незагруженными. Более того, объем задачи может меняться
динамически в зависимости от нагрузки.
Для решения описанной проблемы были придуманы контейнеры. Контейнеры – это полностью готовый к исполнению код с зависимостями и ресурсы, выделенные под эту задачу. Выполняющиеся на одной физической машине контейнеры изолированы друг от друга, поэтому могут принадлежать разным задачам. Контейнеры одной задачи могут выполняться на разных машинах. Для того чтобы ими управлять, нужен контейнер менеджер.
Что будет в докладе:
∙ принципы работы менеджера контейнеров
∙ фунции менеджера контейнеров
∙ технологии контейнеризации
∙ сравнение существующих решений: Kubernetes, Mesos и Cloud Foundry"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"Tanya Denisyuk
Исторически сложилось так, что одни люди разрабатывают приложения (Dev), а другие эксплуатируют их в продакшне (Ops). И у последних есть немало проблем с тем, что невозможно понять, что происходит.
Причем это касается как собственных разработок, так и популярных open source решений.
Я расскажу, как устроена диагностика у некоторых популярных софтин:
- nginx
- postgresql
- mongodb
Мы попробуем разобраться, что там сделано хорошо, и чего не хватает для полного счастья.
Во второй части доклада мы поговорим про то, как нужно инструментировать собственное приложение для прозрачной работы в продакшне:
- что считать и зачем: ошибки, тайминги, разные состояния приложения,
- инструментарий: your_lang-metrics, your_lang-statsd-client, логи,
- как не перемудрить и не убить прод диагностикой.
Может показаться, что этот доклад про DevOps, но нет - про docker не будет ни слова :)
Левон Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"Tanya Denisyuk
В своем докладе я расскажу что такое Глобальная карта, как она устроена, какие технологии, архитектурные решения, принципы и подходы используются. Как мы боремся с высокими нагрузками, с какими проблемами сталкиваемся, и как их решаем.
Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...Tanya Denisyuk
С начала атак на блог Брайана Кребса прошла, по меркам IT-индустрии, уже целая вечность (месяц), и самое время изучить ситуацию и сделать из неё полезные выводы. 22 октября на площадке HighLoad Dev Conf мы проанализируем и обсудим:
- Что изменилось на рынке DDoS-атак в 2016 году;
- Каковы обстоятельства атаки, обрушившей Akamai и Google, что привело к этому и как от этого защититься;
- Как ситуация будет развиваться дальше.
Алексей Лесовский "Тюнинг Linux для баз данных. "Tanya Denisyuk
В любом проекте всегда есть данные которые важно не потерять. И если проект перешагнул размеры домашнего, то наверняка там уже используется что-то более надежное чем текстовые файлы на диске. Скорее всего это какая-то конкретная база данных. Учитывая важную роль баз данных к ним предъявляют жесткие требования производительности и стабильности. Отдельной особенностью является и операционная система на которой работает база данных. Опыт и практика подсказывает что это будет Linux - одна из наиболее популярных на сегодняшний день операционных систем. Прогрессивное развитие в сочетании с гибкостью и стабильностью делает Linux хорошим кандидатом в качестве платформы для баз данных (да и не только). Однако настройки по-умолчанию в большинстве дистрибутивов предназначены для широкого круга задач и потребностей. В этом докладе я расскажу о том, на какие настройки следует обратить внимание и как они влияют на работу СУБД. Как сделать работу СУБД более предсказуемой, как в простых условиях, так и в условиях непостоянной или растущей нагрузки.
Сергей Аверин "Распространенные ошибки применения баз данных"Tanya Denisyuk
Выбор хранилища данных — сложная задача, с которой часто сталкиваются разработчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...Tanya Denisyuk
В докладе пойдет речь о теоретических (NER системы, инструменты для машинного обучения) и практических (LUIS, Microsoft Bot Framework, Azure Cognitive Services, OpenCalais, Dbpedia Spotlight) аспектах разработки интеллектуальных ботов.
Будут затронуты такие темы:
- почему все сейчас говорят о ботах;
- успешные примеры ботов;
- создание бота для Telegram, Skype, Messenger, Email, Slack и др. на базе Microsoft Bot Framework;
- как сделать бота умным – обзор Named Entity Recognition инструментов;
- как улучшить работу бота с помощью Azure Cognitive Services;
- как создать интеллектуального бота без программирования с помощью системы машинного обучения LUIS.
Вадим Мадисон "Опыт разработки через микросервисы"Tanya Denisyuk
Мы начали разработку через микросервисы когда это еще не было трендом, было не ясно - это реально работающий подход или просто очередная модная штука. Не было понимания как это делать правильно, где подводные камни и что за одним словом “микросервисы” по факту стоит куча всего, что придется узнать, изучить и понять.
Сейчас у нас большой парк микросервисов, но оперировать ими становится все проще - сказывается опыт.
В ходе доклада я поделюсь основными моментами в разработке микросервисов, расскажу как это делаем мы и что для этого используем.
Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...Tanya Denisyuk
We will share first-hand experience in how to build secure, highly available, and scalable private clouds for IoT industries, using OpenStack and Amazon Web Services. Join the talk to learn about unique techniques for connecting private customer networks to the cloud and providing support for WebSocket, TCP, and HTTP devices. This discussion will also cover Cloud Foundry, an open source cloud-native platform for rapid development of 12-factor applications.
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...Tanya Denisyuk
Вопросы безопасности в больших корпоративных приложениях всегда стоят на первом плане. В монолитной архитектуре эти вопросы решаются достаточно единообразно, так как приложение является единым целым. Но сложности начинаются, когда мы решаем перейти к микросервисной архитектуре. Ведь по сути мы имеем дело с несколькими приложениями, доступ к которым нужно контролировать. В докладе мы обсудим:
· Какие существуют подходы обеспечения безопасности микросервисных приложений
· Их достоинства и недостатки
· Как защитить микросервесы с помощью CloudFoundry User Account and Authentication (UAA) Server
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...Tanya Denisyuk
Каждый день пользователи совершают миллионы действий в Интернете. Нам в FACETz DMP необходимо структурировать эти данные и проводить сегментацию для выявления предпочтений пользователей.
Хочу рассказать, как мы:
- Сегментируем в реальном времени 600 миллионов пользователей ежедневно;
- Поставляем данные партнерам, DSP, Google с минимальной задержкой;
- Храним статистику по количеству уникальных пользователей в сегменте при потоковой обработке;
- Отслеживаем влияние изменения параметров сегментации;
- Ведем подсчет аффинитивности домена к сегменту для аналитики аудиторий.
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Tanya Denisyuk
Будет показан пример архитектуры популярной социальной сети в Англии, переработанной на новом стеке, чтобы решить проблемы производительности, отказоустойчивости и горизонтального масштабирования. Новый стек базируется на технологиях: .NET, SignalR, Couchbase, RabbitMQ, ElasticSearch, Amazon Services (CloudFront, S3, EC2, Route 53, Balancer), Windows, Linux. Цель: показать одну из моделей архитектуры нагруженных веб-систем, практики и возможные подводные камни при разработке высоконагруженных Интернет систем.
Максим Барышиков-«WoT: Geographically distributed cluster of clusters»Tanya Denisyuk
"World of Tanks — MMOG с зарегистрированным пиковым онлайном превышающем 1 миллион пользователей. Авторитарная архитектура сервера (весь расчет физического мира происходит на стороне сервера и затем транслируется подклчюенным клиентам) позволяет эффективно защититься от нечестной игры, но вместе с тем создает значительную дополнительную нагрузку на серверную инфраструктуру.
В докладе рассказывается об инженерных решениях, принятых на разных стадиях разработки игры, их последствиях, и о том, как в конечном итоге организован географически распределенный «кластер кластеров» World of Tanks."
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Tanya Denisyuk
В нашей компании есть система для запуска PHP-скриптов по расписанию, которая позволяет распределять нагрузку на множество узлов и обеспечивать отказоустойвость. И в этой системе необходимо уметь собирать логи скриптов с сотен (и даже тысяч) машин, желательно в режиме реального времени. У нас раньше была система сбора логов, собранная «на коленке», и выдающая относительно невысокую производительность. Производительности стало не хватать, и мы переписали систему на Go. Новая система не использует scribe и обладает некоторыми уникальными фичами, например «вытесняющей многозадачностью» при доставке - если один из скриптов пишет столько логов, что мы не успеваем их всех доставить, логи всех остальных скриптов продолжают доставляться, с небольшой фиксированной задержкой. Система легко забивает гигабитную сетевую карту на нашем сервере-приемнике логов и не слишком «тормозит» доставку в случае, когда пропускной способности всё же не хваетает. В докладе я расскажу о том, как мы делали эту систему и про то, как она работает изнутри. Исходные тексты доступны на github: https://github.com/badoo/thunder
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Tanya Denisyuk
"Мое выступление поможет ответить на следующие вопросы:
1. Что такое HTTP reverse proxy?
2. Настройка NGINX в режиме reverse proxy.
3. Стандартные способы выбора upstream server: Round Robin, Hash, Consistent Hash.
4. Не сдерживаем фантазию -- пишем свой алгоритм.
5. Примеры, когда создание собственного решения оправдано."
Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...Tanya Denisyuk
Кланы являются неотъемлемой частью любой MMO. И игры Wargaming не стали исключением, а вместе с бурным развитием трилогии, и World of Tanks в частности, быстро изменялись требования к кланам как у пользователей, так и у бизнеса. Доклад расскажет о том пути, который мы прошли, создавая поддержку кланов в Wargaming, какие трудности преодолевали и какие уроки выучили, создавая игровой сервис, который радует миллионы наших игроков.
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»Tanya Denisyuk
Многие согласятся, что писать велосипеды - плохо, а автоматизировать трудоемкие задачи - хорошо. Другие повторяют одно и то же и не задумываются об этом. Cloud Foundry - открытая платформа, которая позволяет радикально сократить время развертывания приложений и сделать разработчиков и бизнес счастливее. В моем докладе я раскажу вам почему через несколько лет весь мир будет использовать CF при разработке приложений.
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...Tanya Denisyuk
В докладе на примере системы метапоиска aviasales будет рассмотрен переход от монолитной архитектуры RoR приложения к многозвенной системе внутренней разработки на базе tornado/python в целях ослабления зависимостей между подсистемами, упрощения контроля за потоком данных и изоляции потенциальных аварийных ситуаций.
Будут рассмотрены побочные эффекты этого перехода, такие как устойчивость к пиковым нагрузкам, упрощение схемы выкатки обновлений и сокращение потребляемых машинных ресурсов.
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Ontico
Tarantool - отечественная Opensource NoSQL база данных.
В докладе мы обсудим:
- Какое место занимают NoSQL базы данных в highload проектах?
Почему и для чего вам стоит NoSQL решения?
Какие NoSQL решения вы можете использовать?
- Рассмотрим, что из себя представляет Tarantool 1.6 - база данных и сервер приложений в одном лице.
Какие основные особенности Tarantool как NoSQL базы данных?
Lua как встроенный язык сервера приложений.
- Посмотрим, как можно начать использовать Tarantool в своих проектах, и сделаем первые шаги.
Как установить Tarantool.
Первый запуск и основы конфигурирования.
Модель данных.
Как создавать и работать с хранилищем данных.
Как использовать пакеты tarantool.
- Узнаем об интересных модулях и фичах Tarantool
Чем полезен application server
Tarantool http
Tarantool queue
- Познакомимся с сообществом Tarantool opensource
Почему сообщество - это важно?
Чем полезны opensource проекты начинающему разработчику?
Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
Рассказ об основных принципах, которых придерживается Viber в длительной разработке приложения с большой кодовой базой — если разработкой занимается распределённая команда. Мы обсудим используемые технологии, библиотеки, работу с кодом и многое другое.
Создание и развитие отечественной платформы с открытым программным кодом для ...ARCCN
Доклад в рамках Международной конференции «Управление сетями электросвязи. Программно-конфигурируемые сети и виртуализация сетевых функций – SDN&NFV Russia 2016».
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
Tempesta FW — это Open Source гибрид Web-акселератора и файервола, специально разработанный для высокопроизводительной доставки контента вне зависимости от DDoS или наплыва посетителей.
В докладе будет рассказано про задачи, которые ставились при разработке проекта и пути их решения. Рассмотрим проблемы современных операционных систем в приложении к Web-стеку (система фильтрации, Web-сервер, application слой, БД), и как они решаются в Tempesta — некоторые уже решены, некоторые еще в процессе работы.
И самое главное — у нас появился рабочий прототип, и я расскажу про типовые примеры инсталляции, фичи и конфигурацию, а также покажу бенчмарки.
Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...Tanya Denisyuk
Текста много, а полезной информации мало. Как извлечь только то что нужно и ничего не пропустить? Система, которая представляется в докладе, обрабатывает огромный массив текстов, автоматически извлекает из них сущности и события интересующей предметной области, после чего они доступны для последующего анализа. Такую систему можно разработать только на open source технологиях, она не требует гигантского количества серверов, зато интенсивно использует технологии Natural Language Processing и Machine Learning.
Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...Tanya Denisyuk
Отказоустойчивость без сомнения один из важнейших факторов для продакшена, а в месте с ней и масштабируемость. Растет количество клиентов, а в месте с ним и нагрузка. В своем докладе я расскажу как была решена эта проблема у нас, как были объединены в общую схему для слаженной работы haproxy, keepalived, nginx, ceph и varnish.
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Tanya Denisyuk
"Контейнеры могут динамически появляться и исчезать, являются легковесными, не резервируют все необходимые ресурсы при старте, потому их оркестрация дается не простой ценой. Каждый из виртуальных контейнеров в один момент времени может потребовать максимум доступных ему ресурсов и это может привести к тому, что закончатся все ресурсы на физическом сервере, на котором они размещаются. В докладе мы поговорим о механизме, который решает эту непростую задачу, и умеет проводить непрерывную балансировку нагрузки, перемещать контейнеры с одного физического сервера на другие для проведения технических работ без простоя приложений - умная живая миграция (Smart Live Migration).
Многие считают, что контейнеры не подходят для хранения важных данных, т.к. в любой момент они могут упасть и все данные пропадут навсегда. Мы расскажем как этого избежать с помощью технологии Software-defined-storage."
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Tanya Denisyuk
Наша рекламная сеть прошла путь от 1М до 150M показов в сутки. На этом пути пришлось столкнуться с проблемами при логировании и анализе больших объемов данных. В итоге отказались от использования NonSQL базы данных и выбрали column-based InfoBright. В своем докладе я расскажу, как мы накапливаем, храним, обрабатываем и анализируем сотни гигабайт информации в день c использованием InfoBright.
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»Tanya Denisyuk
"Если все возможности кеширования и индексирования исчерпаны, а производительности все равно недостаточно.
Если еженочно просыпаясь в холодном поту, вы спрашиваете себя снова и снова:
- Как организовать данные так, чтобы всё нужное всегда было под рукой
- Как сделать так, чтобы приложение не тупило даже на медленном интернете
- Как моментально обеспечивать клиента самыми свежими данными
Тогда мой доклад может оказаться полезным.Мы в Todoist, кажется, нашли простой способ решить большинство из этих проблем. Всё, что мы сделали, это дополнили наш API функциями для синхронизации данных, позволяющими
писать ""толстые клиенты"" (кстати,то же самое для решения тех же задач рекомендуют и Google, и Evernote). В докладе я расскажу как это реализовать с минимальными усилиями одним лишь MySQL и Redis, с какими проблемами мы столкнулись, и как мы героически эти проблемы побеждали."
Дмитрий Дурасов-«Технологии контейнеризации в Windows Server 2016»Tanya Denisyuk
"Все чаще мы слышим про контейнеры – в подкастах, на конференциях, возможно, кто-то уже активно использует их в своих проектах или только собирается узнать о них поглубже. Инновации добрались и до Windows Server – уже в следующем выпуске нам представлены Windows Server Containers. Контейнеры формируют свою экосистему и дают возможность разработчикам создавать приложения нового поколения. Цель моего доклада – вживую познакомить слушателей с новейшей технологией контейнеризации от Microsoft. Вы узнаете о теории и практике работы с контейнерами под управлением Windows Server 2016, ознакомитесь с основными сценариями использования технологии и увидите реальную работу контейнеризации.
Начните использовать контейнеры прямо сейчас."
Александр Тоболь, Кадры решают все, или стриминг видео в ОдноклассникахTanya Denisyuk
Александр расскажет, как им удалось ускорить более чем в 10 раз старт просмотра кино и сериалов с использованием технологий адаптивного стриминга MPEG-DASH и HLS. Вы узнаете, какие технологии попали в поле зрения команды, как инфраструктурные особенности и размер аудитории, а также специфика потребления на разных пользовательских устройствах повлияли на принятие решение о выборе технологии. И, конечно, будет дан подробный отчет о результатах внедрения и полученном эффекте.
Денис Баталов, Принципы построения высоконагруженных сайтов на платформе АWSTanya Denisyuk
Детально разберём шесть основных принципов построения высоко-нагруженных веб-приложений с использованием таких сервисов AWS как Route 53, Elastic Load Вalancing, RDS, CloudFront, ElastiCache, DynamoDB и др.
Кирилл Алешин, Ламбда Архитектура на практикеTanya Denisyuk
Кирилл расскажет о таких темах, как практичность современных распределенных файловых систем для складирования структурированных данных, сложности синхронизации данных на разных Ламбда уровнях, а также несколько Big Data новинок для закрытия брешей в традиционном описании Ламбда архитектуры. Кирилл расскажет как о пользе этой модели, так и об извлеченных уроках ее использования.
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцTanya Denisyuk
Доклад про:
– развитие архитектуры этой системы, как менялись и как будут меняться требования к такого рода системам
– анализ подходящих под эту систему БД, с их проблемами, и опытом реальной эксплуатации
– почему мы остановились на MongoDB, со всеми минусами и плюсами
– немного про команду, трудозатраты и поддержку
– как мы используем эту систему и как она помогает растить наши продукты
Alvaro Videla, Building a Distributed Data Ingestion System with RabbitMQTanya Denisyuk
In this talk I am going to show how to build a system that can ingest data produced at separate geo located areas (think AWS and it’s many regions) and replicate it to a central cluster where it can be further processed and analysed. I will present an example of how to build a system like this one by using RabbitMQ Federation to replicate data across AWS Regions and RabbitMQ support for many protocols to produce/consume data.
To help with scalability I am going to show an interesting way to implement sharded queues with RabbitMQ by using the Consistent Hash Exchange.
Антон Тюрин, Евгений Сафронов, Инфраструктура под CocaineTanya Denisyuk
Докладчики расскажут о набитых шишках в управлении облаком, а так же других частях облачной инфраструктуры. Расскажут о расширении возможностей взаимодействия между компонентами облака, организации полноценного стриминга данных. Т.е. поделяться опытом создания облачного планировщика, оптимизирующего утилизацию ресурсов облака, профилирования приложения «на горячую».
Антон Тюрин, Евгений Сафронов, Инфраструктура под Cocaine
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
1.
2. Agenda
Что представляет из себя Tarantool в 2016 году
Как подружить Nginx и Tarantool
Как сделать REST API на чистой СУБД
Как это используется в production
Бенчмарки и цифры
22. Примеры архитектур
• Одноуровневая система с репликацией
• Отдельно приложение, отдельно хранение
(shard)
• Хранение по ttl (expirationd)
• Совместное хранение в памяти и на диске(vinyl)
23. Use cases
• Виртуализация данных
• Роутинг запросов в биллинге
• Обогащение данных от источника
• Интеграция с legacy проектами
• Объединение данных от нескольких источников
24. Bench
Железо
4 ядра 2,6 GHz
64 GB оперативной памяти
Данные
100 ГБ данных, размер запроса 2 КБ(JSON)
избыточность(2 датацентра)
Кластер
4 storage сервера(16 инстансов tarantool)
4 application сервера(16 инстансов tarantool)
Клиентские машины для создания нагрузки
28. Подводные камни
• Нужно описать логику преобразования версий
• Нужно написать хранимые процедуры под
каждый тип запроса
• Нужно связывать авро схему и индексы в tuple
• Удобно иметь связи между схемами
• Удобно создавать простые API автоматически (не
программируя на lua)
30. Что это дает?
• Автоматическая настройка tarantool
• Вся конфигурация - один json файл
• Версионирование запросов на лету
• Хранится только актуальная версия
• Иерархические связи между схемами
• Не нужно программировать на lua
42. Use cases
• Легковесные restful сервисы
• Бекенды для мобильных приложений
• Выкатывание нескольких версий приложения
одновременно
• Scientific приложения (анализ данных) - хранение
грязных и чистых данных в разных версиях
43. Спасибо за внимание
• http://tarantool.org
• https://github.com/tarantool/avro-schema
• http://avro.apache.org/docs/1.8.0/spec.html