ARTW на HighLoad++ 2017

7 и 8 ноября в Сколково прошла 11-ая профессиональная конференция разработчиков высоконагруженных систем HighLoad++. Команда ARTW провела мероприятие за докладами из различных секций и отметила самые важные мысли, звучащие на конференции.

Докладов было очень много, – особенно заинтересовали потоки по управлению проектами и командой, базам данных, отказоустойчивых системах и непрерывной интеграции (CI/CD). Делимся новинками «с полей» в своем обзоре.

Блокчейн

Блокчейн — один из главных трендов настоящего. Неудивительно, что о нем упомянули и на HighLoad.

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

Новый Youtube

Ребята из Youtube рассказывали, как они переписали вcю платформу и технически улучшили сервис.

У Google много проектов. Однако они были разработаны в разное время. Так, например, первая версия Youtube была написана более десяти лет назад. За это время появилось много новых сервисов. На текущий момент все сервисы должны использовать Material Design и стандартизированный внутренний API для взаимодействия – именно в этом отставал Youtube, это создавало сложности и поэтому появилась необходимость его переписать.

В качестве библиотеки для разработки фронта они честно рассматривали разные популярные движки, реализующие парадигму веб-компонентов. У них было требование: максимально использовать нативные средства браузера для отрисовки компонентов, – выбрали Polymer от Google.

В итоге, единственное, что взволновало посетителей сайта – новая темная тема. Остальные изменения под капотом они не заметили.

Нововведения в MariaDB 10.2 и 10.3

Отметим только самые интересные:
  • оконные функции вместо сложных подзапросов;
  • функция FlashBack дает возможность применить события из бинарного лога в обратном порядке;
  • версионирование данных в таблице — для этого заводится служебная колонка в таблице, в которой хранится время изменения. Дальше можно сделать выборку и указать фильтр по этому полю. Так можно получить данные о состоянии на указанный период времени.

Новая система сообщений в ВК

Как полностью переписать систему сообщений социальной сети ВКонтакте?

Если кратко — очень сложно. Ребята хотели привлечь коллег из Телеграма, но те отказались, сказав, что это слишком сложная задача, поэтому работы велись своими силами. На реализацию новой системы сообщений ушел примерно год времени, работа 3 программистов.

Тем не менее, перейдя на новую систему сообщений, ВК вдвое сократил количество серверов – с 1000 до 500, – и сэкономил на этом несколько миллионов долларов.

Нагрузочное тестирование

Резюмируем сложную тему в несколько простых пунктов о том, как достигнуть успеха:
  • начинать нужно с проверки железа;
  • инфраструктура должна максимально совпадать с продакшном;
  • объем данных должен быть близок максимально близок к продакшну.


Слушай, Алиса, а кто тебя сделал

Неожиданностью стал рассказ ребят из Яндекса, которые выступили уже после окончания программы в первый день конференции. Речь шла о разработке нового отечественного голосового помощника «Алиса».

Оказывается, создать помощника – не только вопрос кода. Тут важно правильно выбрать голос, пол и имя. У Алисы есть целая придуманная история жизни — поэтому она легко может отвечать на многие вопросы о ней самой.

Алиса учится общаться и поддерживать разговор о художественной литературе, переписках между пользователями и накопленным опытом в системе поиска Яндекса.

Одной из важных задач было следить, чтобы Алиса не хамила в ответ пользователю, и в целом вела себя корректно.

Хочется выделить полезную особенность Алисы — она умеет понимать и хранить контекст разговора. Например, вы спросили «который час в Лондоне», а потом добавили «а сколько там градусов», и Алиса поймет, что «там» – это в Лондоне.

Остается ждать того времени, когда Яндекс предоставит разработчикам API (возможно платное) для использования возможностей Алисы в своих приложениях.


Митап-поинты

Помимо основных докладов на конференции существует формат тематических митап-поинтов, где можно было собраться небольшой группой и обсудить с коллегами интересующие вопросы. Главное отличие митапов от докладов — непосредственное общение и обсуждение технологии. Жаль, что встречи проходили в одно время с докладами, – успеть везде было трудно.

Стоит отметить митап, посвященный супер хранилищу данных от mail.ru — Tarantool. Один из ведущих разработчиков компании рассказывал, как они пришли к необходимости написания собственного решения, а также поделился техническими подробностями и деталями реализации: каким образом Тарантул работает так быстро. Делимся нюансами и с вами.

Сначала у них была обычная БД — MySql. Когда данных стало много, система начала тормозить. Правда перед этим у них тупил веб-сервер Apache, и они «просто» заменили его на nginx – все стало работать быстро. От этого создалось впечатление, что можно точно так же, «просто» заменить одну реляционную базу данных (БД) на другую, и все также быстро решится. Но так не получилось, потому что все они работают по одному принципу и не могут работать быстрее. В итоге решили написать свою БД. Главное, за счет чего Тарантул работает быстро — последовательная линейная запись на диск (а не в виде деревьев) и то, что все операции выполняются в памяти (ОП). В будущих версиях планируется поддержка полноценного SQL.


Стенды

Кроме самих докладов на конференции было много стендов, где можно было поучаствовать в различных квестах и размять загруженный новыми знаниями мозг. Где-то нужно было починить сломавшийся проект, и для этого давался консольный доступ к серверу (itsumma). Где-то нужно было наоборот расслабиться и в большом бассейне с шариками найти один с наклейкой. Такие активности отлично перегружали сознание между серьезными и сложными темами и не давали заскучать.


Стенд Lamoda

Отдельно хотелось бы остановиться на стенде Lamoda, который с помощью одного роллапа визуализировал карту всех технологий, используемых в компании. Они были разбиты по принципу: используем (adopt), пробуем (trial), обратили внимание (assess) и заблокировано (hold). Вся разработка должна строго соблюдать указанные ограничения. У них, например, забанен пхп 5.х, они пишут только на 7.х.

highload1
У Lamoda используется микросервисная архитектура. Каждый сервис расположен в своем контейнере и общаются они между собой по REST API. Существует микросервис, отвечающий за маршрутизацию: к нему обращаются, чтобы получить адрес нужного сервиса.

Микросервисная архитектура — это когда один большой проект (монолит) разбивается на группу небольших функциональных модулей, независимых друг от друга. Они общаются по API, могут находиться, как на одном физическом сервере, так и на разных. Самое главное, что это увеличивает отказоустойчивость и упрощает разработку большой сложной системы.


Стенд про автоматическое развертывание контейнеров

Kubernetes — средство автоматического развертывания контейнеров с приложениями и микро сервисами. Коллеги из Фланта рассказали о нем в контексте непрерывной интеграции (CI/CD). Например, Kubernetes умеет автоматически создавать веб-площадку по имени ветки: то есть вы работали в своей фичевой ветке, запушили, и вуаля, – площадка появилась автоматически.
highload2

Контейнер — это не виртуализация, это группа процессов, изолированная от основной системы. То есть внешняя система никоим образом не может повлиять на процессы внутри контейнера, и наоборот.

Самым популярным средством контейнеризации является Docker.

Работ с контейнерами позволяет вести разработку и тестирование в среде, полностью идентичной продуктовому серверу: начиная от сборки ОС и ресурсами сервера, и заканчивая версиями различных пакетов (nginx, php-fpm, и тд). Такой подход решает проблему, когда «у меня локально все работает», а на проде что-то не так.

Марк Дерманов, руководитель отдела разработки ARTW:
«Пообщавшись с ребятами из Фланта, мы выяснили, что Битрикс плохо подходит для разработки с использованием контейнеров, т.к. при каждом релизе старый контейнер будет уничтожаться. А это значит, что на продакшене нельзя вносить какие-либо правки в файловую структуру (например, создавать физические разделы через админку). Все должны работать по одному сценарию: развернул у себя проект, внес правки, закомитил, запушил, прошел тесты, и только после этого новый раздел появится на проде».


Стенд про DDOS

DDOS — сетевая атака на сайт, с целью исчерпать ресурсы сервера и вывести сайт из строя.

Советами по сетевой безопасности поделились ребята из компании Qrator. Также у них можно было сдать «экзамен», вытащив один из предложенных билетов. Так мы узнали, что long-poll POST запросы — это сетевые атаки уровня L7, применяемые с целью деградации веб-приложения.


Активности

Интересной маркетинговой активностью стала фишка «Затегируй себя».

Заранее были составлены и распечатаны мелкие наклейки с различными тегами, которые указали участники (проводили отдельный опрос через формы Google).

Участники наклеивали себе на бейджик различные теги и таким образом можно было легко определить братьев по разуму.
Вышло легкое и приятное решение для грамотного нетворкинга.
highload3

Кстати сразу же вспоминается еще один грамотный ход с наклейками, – использовать их для передачи своего голоса проекту. Так, к примеру, делают на Behance Portfolio Reviews. На Highload эту идею развили чуть сильнее.

Марк Дерманов:
«Хайлоад++ — это топовая профильная конференция по технологическому стеку, с которым я работаю каждый день. Это концентрат новых знаний. Каждая такая конференция выводит мышление на новый уровень и открывает новые горизонты».

Координационный
совет SPECIA
Санкт-Петербург,
8-я Красноармейская ул., д.10