«Стачка-2017»: подводим итоги международной ИТ-конференции

На прошлой неделе команда i-Sys в лице Дениса Черносова, Сергея Гольдштейна, Никиты Усатова и Алексея Козлова побывала в Ульяновске на одной из крупнейших российских IT-конференций «Стачка-2017». Мероприятие собрало более 5000 программистов, digital-специалистов, руководителей IT-компаний, интернет-предпринимателей и студентов.
СТАТЬЯ БЛОГА

По итогам мероприятия Денис Черносов подготовил небольшой отчет о некоторых докладах, которые показались ему наиболее интересными.

В докладе Антона Степаненко (Lazada) "Нагрузочное тестирование по-живому" слушателям рассказали, что можно проводить нагрузочное тестирование на продуктовом сервере, если соблюдать некоторые правила, из которых особо примечательны следующие:

  1. В сервисы встраиваются нагрузочные "предохранители", т.е. сервис обрабатывает клиентов до заданного в конфигураторе лимита одновременных подключений, а всех, кто свыше, сразу обламывает. Это уменьшает вероятность прихода системы в неконсистентное состояние.
  2. График запуска нагрузочных тестов согласовывается с известными и предполагаемыми пиками пользовательской активности. Обычно запускают ночью, в выходные дни и т.п.
  3. На данный момент тестируются GET-роуты (не модифицирующие данные). Для того, чтобы проверять остальной функционал, нужна поддержка маркеров фейкового-трафика (заголовки, куки и т.п.), чтобы в нужных местах только имитировать активность.
  4. При анализе графики совмещаются с логами активности систем тестирования (т.е. можно видеть, например, метки начала/конца нагрузочного тестирования и соотносить их с изменениями на графике). Такая практика называется "End-to-End Tracing" (сквозные id для событий в разных системах, связанных с одной задачей). 

В ходе доклада Алексея Палажченко "Профилирование и оптимизация программ на Go" наш коллега Денис сделал некоторые пометки, хотя пока на этом языке программирования не пишет:

  1. В Go нет виртуальной машины, поэтому отладка и профилирование приложений достаточно нетривиальный процесс (забавный факт, но на другом докладе было озвучено, что в Go с отладкой всё отлично) и профилировать нужно с самого начала, когда ваше приложение ещё небольшое. И, в основном, сравнивать отчёты между "коммитами".
  2. При написании тестов нужно быть очень внимательным, потому что компилятор не дремлет и может выпилить из вашего теста всю суть и смысл, если посчитает, что результаты вычислений никому не нужны.
  3. При отладке параллельных вычислений обвязка для эмуляции параллельности вполне может работать дольше полезного кода.
  4. Как это ни печально, но лучше не запускать профилировочные тесты в виртуальных машинах. Нужно выключить АУП (автоматическое управление питанием), чтобы ОС не пыталась включать/отключать процессоры. Не нужно ничего делать на машине во время тестов - это может сильно повлиять на результаты.
  5. Помимо собственных инструментов профилирования, можно использовать родные Линуксовые.

Докладчик также приводит цитату о полезности учёта тонкостей задачи при применении оптимизаций (Rob Pike's 5 Rules of Programming):
"Fancy algorithms are slow when n is small, and n is usually small."
Что означает: сложные алгоритмы медленны, при малых n, а n часто бывает мало. 

Александр Макаров (Соавтор и разработчик, Yii Framework) с темой "OpenSource изнутри" рассказал, что OpenSource - это очень круто по многим параметрам, но кроме денег. А в тех схемах, в которых деньги есть (например, консалтинг или приглашение на высокооплачиваемую работу на full time, как следствие известности по активности в OpenSource), появляется конфликт бизнес-интересов с задачами собственно OpenSource-проекта и могут всплывать дополнительные риски (например, для лицензионной чистоты подписывается соглашение разработчика с компанией, что ВЕСЬ код, который будет написан в период работы в компании - станет её собственностью). 

flag Доклад генерального директора Postgres Professional Олега Бартунова на тему "Postgres как NoSQL-база данных" собрал в зале около 300 человек. В ходе доклада Олег рассказал, что Postgres Pro вскоре предоставит улучшения, которые попозже появятся и в стандартной версии. Но самой неожиданной в рамках доклада была информация, что JSONB - это часть нового стандарта SQL-2016. И реализация уже тоже сделана. Так что теперь ждём улучшений в PostgresPro 10 в этом году и в PostgreSQL 11. И, кстати, всех заинтересованных приглашают к тестированию и отправки баг-реквестов. Очень помогут тестовые наборы данных.

Дмитрий Иванов (Developer, Postgres Professional) с докладом "Секционирование и шардинг в PostgreSQL при помощи pg_pathman" представил крутые экстеншены для облегчения задач партиционирования и шардирования. А также для оптимизации запросов к партиционированным и шардированным данным. Причём, настолько минимальными вмешательствами, что можно только аплодировать. А на другой день ещё провели мастер-класс по этим возможностям.

К сожалению, пока решение не вполне интегрировано с другой свежей фишкой: HA claster (multimaster), хотя цели такие есть.

Расширение можно собрать для версий 9.5+, готовятся прекомпилированные сборки и образы docker для желающих поэкспериментировать. В PostgresPro появится из коробки в 10-й версии. В стандартной версии, видимо, уже с 11-й, но это не точно.

Дмитрий Еманов (Ведущий разработчик, FirebirdSQL Project) в докладе "Механизмы резервирования и обеспечения высокой доступности в Firebird" рассказал о том, как их проект постепенно набирает обороты, укорачивает релизы и внедряет давно востребованные фичи. В этот раз речь шла о сложностях, связанных с бэкапами, репликами, кластерами и прочими насущными проблемами больших проектов. Например, ребятам пока не даётся тема с мультимастером, кластерные возможности в основном на внешних инструментах работают - но это совершенно нормальный ход событий.
Зато и бинарная, и логическая репликации поддерживаются из коробки (или будут в ближайшей версии), а это уже покрывает значительный объём кейсов.
Наш коллега Денис Черносов на этом докладе узнал несколько интересных трюков. Например, нужно получить "горячее" резервирование (когда слэйв может в любой момент стать мастером, без потери данных), но с минимизацией потерь на синхронность внесения изменений в мастер и реплику. Делаем репликацию синхронной, но запись в ФС на мастере - асинхронной. Т.е. окончательно записываются изменения сначала на слэйве, а уже потом на мастере. И, в случае отказа мастера, слэйв содержит самые свежие данные.

Иван Панченко (заместитель генерального директора, Postgres Professional) представил очень мощный доклад "Кластеры в Postgres или Postgres в кластерах". Иван сделал обзор задач кластеризации и различных вариантов реализации HA claster (multimaster) на форках Postgres. Всё либо слабовато по возможностям, либо тухловато, либо рискованно ввиду отставания форка по релизам. С некоторыми просто туман - то ли есть они, то ли уже загнулись.
Но теперь есть классический отказоустойчивый кластер Gorynych, который будет продвигаться в основную ветку Postgres. В системе отсутствуют единые точки отказа, исключена ситуация SplitBrain и при этом довольно низкие накладные расходы на обеспечение отказоустойчивой репликации, что Иван и продемонстрировал в конце доклада на своём ноутбуке. Это весьма и весьма впечатляющие результаты.

Очень интересный доклад Ивана Евтуховича (Генеральный директор, Express42) на тему "Ключевые DevOps-практики" о том, что такое DevOps и почему его нужно внедрять во все слои и закоулки организации. Иван во время доклада упомянул закон Конвея, процитировал, что "самая твёрдая часть software - это люди", а решать, что с этим делать - вопрос за рамками IT. Кроме того, докладчик отрекламировал переводную книгу "Проект «Феникс». Роман о том, как DevOps меняет бизнес к лучшему". Книга из серии must read для каждого, кто умеет читать!

Еще один интересный и необычный доклад был от Алексея Вахова (Технический директор, Учи.ру) на тему "DevOps или искусство выживания в растущей компании" о том, какой профит растущая фирма может получать от перемещения в облака, автоматизации всех процессов с постоянным их "выпрямлением" и предельно возможным упрощением, непрерывного мониторинга и т.п. Кроме того, Алексей рассказал про первичный вариант масштабирования приложения, написанного на медленном языке (Ruby). Основной совет - не жалейте серверов. Это зачастую дешевле, чем тонкие оптимизации.
Докладчик также подметил некоторые нюансы конфигурирования докера при пробросе портов, чтобы случайно не выкинуть на внешние интерфейсы внутренние приложения, отметил, что в конфигах нередко копипаст предпочтительнее, чем навороченная логика параметризации и наследования, потому что опять же "выпрямляет" процессы и делает их более изолированными.
Алексей еще упомянул, что для уверенности в целостности бэкапов, нужно заставить их работать: например поднимать реплики и тестовые окружения и что, когда команды разработки допущены до продуктовых серверов, это повышает их осведомлённость и ответственность.

"Человеческого фактора не существует. Человек всегда действует наилучшим образом, исходя из своего понимания ситуации. Если он серьезно ошибся — значит, неправильно понял ситуацию. В случае с компьютерными интерфейсами виновата в этом система, не человек." (https://antonz.ru/human-factor/)

Красной нитью через рассказ проходит идея о том, что вынос инфраструктурных проблем в облака позволяет высвободить силы для собственно бизнеса, его предметной области.

Про ещё один опыт разработки в облаке (AWS) и DevOps силами разработчиков (а далее и менеджеров) рассказал Илья Жиленков (Castle) в докладе Docker in Production: Successes, Frustrations and Lessons Learned.

Главная информация, которую можно выделить - это критерии, по которым можно понять, стоит какой-то сервис помещать в Docker или нет:

  1. время жизни - чем более сервис долгоживущий (долго исполняет отдельную операцию), тем меньше причин использовать docker.
  2. состояние - statefull-контейнеры доставляют боль.

Таким образом:
++ web-server, application server (stateless, short life)
+- background Jobs, Integration (statefull, shortlife)
-+ DevOps environment: monitoring, etc (stateless, longlife)
-- Databases, CI/CD-Servers (statefull, longlife)

Но, к примеру, для поднятия одноразового тестового окружения, БД можно положить в контейнер.

Очень подробный доклад о том, как поддерживать и развивать безопасность при DevOps-подходе был у Валерия Боронина (Head of SDL Solutions Dept, R&D, Positive Technologies) на тему "SecDevOps. Разработка, DevOps и безопасность. Расширяем безопасную разработку (SDL) на стадию «после релиза»".

Докладчик смог донести мысль, что DevOps - это намного больше, чем кентавр из сисадмина и разработчика. Это философия, не менее мощная, чем Agile. А потому - всепроникающая. Главная идея доклада - меры по обеспечению безопасности должны также бескомпромиссно автоматизироваться, как и другие процессы. Иначе это будет не помощник, а тяжёлый камень на шее. С другой стороны, автоматизированные проверки позволяют поднять уверенность в безопасности продукта на немыслимые высоты.
Впрочем, докладчик об этом всём говорил без лишнего пафоса и упирал на то, что изменения должны вноситься малыми порциями, эволюционно. Ну как и всё в DevOps: чем мельче изменение, тем легче им управлять.

Доклад Армана Яхина (Генеральный директор, Main Road|Post) "Фильм "Притяжение" - взгляд из-за кулис" стал приятным завершением долгого насыщенного первого дня. Показывали промо-ролики по работам студии, рассказали про фазы роста кампании от 5 человек до over 150, про то, что SCRUM позволил решить проблемы роста компании, что программисты в компании играют не меньшую роль, чем дизайнеры. Ну и про то, что фильмы, как дети - и авторы любят их все, независимо от того, насколько те "выстрелили".

Напомним, международная конференция «Стачка» проводится в Ульяновской области с 2012 года. Цели мероприятия – это предоставление ИТ-специалистам возможности обмена опытом и получения узкопрофильных знаний. 14-15 апреля с докладами на конференции выступилт представители самых авторитетных ИТ-компаний России и зарубежья. В этом году участники «Стачки» смогли послушать свыше 200 докладов от 500 спикеров. На мероприятии работали одновременно 10 площадок.

Организаторами конференции выступили ульяновские ИТ-компании MST digital agency, Simtech, Interra Group, ADVANTSHOP, SimbirSoft, ArgentaTeam и Ассоциация развития информационных технологий при поддержке Правительства Ульяновской области. 

Некоторые доклады можно посмотреть: