PHP UK Conference 2016
В начале каждого года мы с коллегами составляем список интересных нам конференций, как российских, так и зарубежных. Поскольку я многократно посещал «конференции широкого профиля», то в этот раз решил посетить более узкоспециализированную, и мой выбор пал на PHP UK Conference.
PHP UK Conference проводится с 2006 года и изначально задумывалась как профильная конференция для местного PHP-сообщества, где разработчики могли бы делиться знаниями и узнавать из первых уст о об опыте профессионалов и последних достижениях в индустрии.
Организаторы с самого начала сделали ставку на доступность. Им хотелось, чтобы любой желающий мог посетить конференцию. В этом году стоимость билета составила 400 фунтов. Действительно, до кризиса она была сопоставима с ценой билетов на HighLoad (15–24 тыс. руб.). Учитывая, что это Лондон, цена и в самом деле демократичная. В нее входит посещение двух дней конференции и питание, включающее в себя завтраки, обеды и кофе-брейки. Еда, на мой взгляд, непривычная, но вкусная, хотя лучшие обеды были на HighLoad-2013 в гостинице «Рэдиссон САС Славянская».
Конференция состояла из трех параллельных потоков докладов, длившихся с 9 утра и до 6 вечера. 18–19 февраля более 700 участников разместились в самом сердце Лондона, на Чисвелл-стрит, в здании бывшего пивоваренного завода Brewery, а теперь — места проведения разного рода деловых и развлекательных мероприятий. Стоит отметить отличный Wi-Fi в месте проведения. При необходимости можно было срочно обновить рабочий репозиторий и сделать пару коммитов, хотя на многих конференциях с большим количеством участников это бывает сложно.
Уровень подготовленности докладчиков на иностранных конференциях ощутимо выше, чем на российских. В этом я смог убедиться еще в прошлом году на конференции Velocity в Санта-Кларе. И дело не столько в том, что доклады как-то лучше структурированы или более информативны, сколько в том, что иностранные докладчики немало внимания уделяют форме подачи материала. Поэтому некоторые презентации становятся больше похожими на мини-перформансы и даже на самых серьезных докладах не заскучаешь. Плюс ко всему, на PHP UK Conference большинство спикеров говорили на понятном английском, а среди участников и спикеров можно было встретить представителей таких именитых компаний, как Akamai, AOL, MongoDB, JetBrains, Oracle, Booking.com и многих других.
Тематика выступлений в основном касалась непосредственно PHP и того, как он работает; различных CMS и фреймворков; PHP в стеке веб-технологий и связанных технологий; описания инфраструктуры, использующей PHP; безопасности; процесса и методики разработки.
Одной из самых важных тем, затронутых на мероприятии, была безопасность. Ей были посвящены два доклада: Security Theatre и Dip Your Toes in the Sea of Security. Оба в чем-то пересекаются и каждый хорош по-своему: они неплохо подойдут в качестве чек-листа для поиска уязвимых мест. Ко всему прочему, незадолго до конференции мы с коллегами обсуждали подобные вопросы, что подтверждает их актуальность.
Из этих презентаций я, например, узнал про timing attacks и функцию для безопасного сравнения хешей — hash_equals (а еще есть password_verify). Вот отличная иллюстрация для понимания этой уязвимости:
К слову, в Badoo большое внимание уделяется вопросам безопасности и есть своя bounty-программа по поиску уязвимостей. Будем рады, если вы примете в ней участие.
Немаловажной темой в разработке является и эффективность, о чем повествует Automation Automation Automation. На мой взгляд, это одно из лучших выступлений! Мотивирующий рассказ, призывающий автоматизировать рутинные операции в разных частях вашего проекта, и впечатляющая демонстрация на примере того, как использовать Vim в клиент-серверном режиме, чтобы он писал код классов и тесты за вас. Больше всего мне запомнились эти два слайда. Думаю, многим стоило бы их распечатать и повесить на рабочем месте:
Автоматизация, непрерывная интеграция — одни из ключевых аспектов эффективной работы компаний с большим числом разработчиков (например, как наша, где есть целый отдел релиз-инженеров). Подробнее о том, как у нас организован процесс разработки и выкладки, можно узнать в статьях из корпоративного блога (1, 2, 3).
Зачастую крупные интернет-компании создают собственные инструменты разработки, автоматизации, тестирования и деплоя, а не используют готовые, так как они либо в числе первых сталкиваются с проблемами, либо существующие средства не полностью удовлетворяют потребности, постоянно растущие под большой нагрузкой. Например, мы недавно рассказывали про реализацию Soft Mocks — нашу замену runkit для PHP 7. О том же, как организовать разработку доступными существующими средствами, рассказывается в выступлении From Vagrant to Production. Компания bitExpert поддерживает одновременно множество проектов. Ее инженеры остро нуждаются в частой и удобной смене изолированного dev-окружения каждого из них. В этом им помогают Vagrant, Puppet, Composer, Satis, Phing, Liquibase, GitLab и Jenkins. В презентации можно найти много примеров конфигураций и связок одних инструментов с другими.
Еще больше разных технологий использует ResearchGate — социальная сеть для ученых. В их презентации Elastic scaling in a (micro)service oriented architecture, помимо конкретных используемых инструментов, автор рассказывает и об альтернативах, что добавляет ценности этому докладу. Но наблюдается явный перебор с микросервисной архитектурой: сервисы для сервисов, отвечающих за взаимодействие других сервисов… В целом, для понимания того, что у них «под капотом», достаточно этих слайдов:
Помимо докладов о том, как организовать архитектуру, был ряд выступлений, посвященных производительности и user-experience, и одно из самых достойных, на мой взгляд, — Every Millisecond Counts: Performance & UX. Davey Shafik, автор нескольких книг по PHP, из компании Akamai, рассказывает о значимости задержек в загрузке сайта в финансовом эквиваленте, о техниках и инструментах, которыми стоит пользоваться. Вот несколько его рекомендаций:
- сжимать картинки, ориентируясь на видимое качество;
- использовать HTTP/2;
- обращать внимание на Speed Index (см. http://www.webpagetest.org/);
- кешировать (Memcache, Cassandra, Varnish, Squid). Причем автор даже предлагает кешировать целиком HTML. Для удобства существует специальная технология Edge Side Includes. Хочу заметить, что идея не нова, и такой подход уже использовался как минимум 7 лет назад на auto.ru. Готовый HTML лежал в Memcache, а секции для баннеров были тегированы определенным образом, подставляя их на каждый запрос;
- предугадывать действия пользователя и подгружать заранее с помощью dns-prefetch, preconnect, prefetch, preload и prerender.
В рубрике «сделай сам» оказался доклад Simple Machine Learning — интригующая тема, хотя, по сути, речь шла именно о простом машинном обучении, а не о каком-то легком способе подобраться к rocket science, как может показаться на первый взгляд. Автор решил проанализировать сайт joind.in, посвященный отзывам на презентации с различных мероприятий, для поиска событий по теме PHP. К слову, про этот сайт я узнал именно на PHP UK Conference, на него ссылался буквально каждый из спикеров. Он сам по себе open source, сделан с использованием PHP-микрофреймворка Slim.
Для расчета вероятности того, что присутствие искомой темы зависит от наличия определенного тега к публикации, предлагалось использовать теорему Байеса. В конце автора спросили, можно ли использовать для тех же целей Elastic Search. Он согласился, сказав, что интересно было бы попробовать решить эту задачу вручную и понять, что все не так сложно.
Всего на конференции было более 30 докладов на разные темы. Все слайды можно найти на сайте joind.in, а видео — на YouTube.
Я уверен, что на эту конференцию было бы интересно попасть любому PHP-разработчику. Мне, например, гораздо меньше понравилось на Velocity в Санта-Кларе, потому что она больше ориентирована на DevOps, нежели веб-разработку в целом. Темы, которые были затронуты на PHP UK Conference, достаточно обширны и полезны в том числе и в общеобразовательном плане. Большинство докладчиков очень хорошо подготовлены, и этот уровень очень быстро начинаешь воспринимать как норму. Если вы планируете поехать на иностранную конференцию, то смело выбирайте эту — не прогадаете!
Александр Трегер,
Руководитель направления по экспериментальному функционалу Badoo.