- PVSM.RU - https://www.pvsm.ru -

PHP UK Conference 2016

PHP UK Conference 2016 - 1 В начале каждого года мы с коллегами составляем список интересных нам конференций, как российских, так и зарубежных. Поскольку я многократно посещал «конференции широкого профиля», то в этот раз решил посетить более узкоспециализированную, и мой выбор пал на PHP UK Conference [1].

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 [2] и Dip Your Toes in the Sea of Security [3]. Оба в чем-то пересекаются и каждый хорош по-своему: они неплохо подойдут в качестве чек-листа для поиска уязвимых мест. Ко всему прочему, незадолго до конференции мы с коллегами обсуждали подобные вопросы, что подтверждает их актуальность.

Из этих презентаций я, например, узнал про timing attacks и функцию для безопасного сравнения хешей — hash_equals [4] (а еще есть password_verify [5]). Вот отличная иллюстрация для понимания этой уязвимости:

PHP UK Conference 2016 - 2

К слову, в Badoo большое внимание уделяется вопросам безопасности и есть своя bounty-программа [6] по поиску уязвимостей. Будем рады, если вы примете в ней участие.

Немаловажной темой в разработке является и эффективность, о чем повествует Automation Automation Automation [7]. На мой взгляд, это одно из лучших выступлений! Мотивирующий рассказ, призывающий автоматизировать рутинные операции в разных частях вашего проекта, и впечатляющая демонстрация на примере того, как использовать Vim в клиент-серверном режиме, чтобы он писал код классов и тесты за вас. Больше всего мне запомнились эти два слайда. Думаю, многим стоило бы их распечатать и повесить на рабочем месте:

PHP UK Conference 2016 - 3 PHP UK Conference 2016 - 4

Автоматизация, непрерывная интеграция — одни из ключевых аспектов эффективной работы компаний с большим числом разработчиков (например, как наша, где есть целый отдел релиз-инженеров). Подробнее о том, как у нас организован процесс разработки и выкладки, можно узнать в статьях из корпоративного блога (1 [8], 2 [9], 3 [10]).

Зачастую крупные интернет-компании создают собственные инструменты разработки, автоматизации, тестирования и деплоя, а не используют готовые, так как они либо в числе первых сталкиваются с проблемами, либо существующие средства не полностью удовлетворяют потребности, постоянно растущие под большой нагрузкой. Например, мы недавно рассказывали про реализацию Soft Mocks [11] — нашу замену runkit для PHP 7. О том же, как организовать разработку доступными существующими средствами, рассказывается в выступлении From Vagrant to Production [12]. Компания bitExpert поддерживает одновременно множество проектов. Ее инженеры остро нуждаются в частой и удобной смене изолированного dev-окружения каждого из них. В этом им помогают Vagrant, Puppet, Composer, Satis, Phing, Liquibase, GitLab и Jenkins. В презентации можно найти много примеров конфигураций и связок одних инструментов с другими.

Еще больше разных технологий использует ResearchGate — социальная сеть для ученых. В их презентации Elastic scaling in a (micro)service oriented architecture [13], помимо конкретных используемых инструментов, автор рассказывает и об альтернативах, что добавляет ценности этому докладу. Но наблюдается явный перебор с микросервисной архитектурой: сервисы для сервисов, отвечающих за взаимодействие других сервисов… В целом, для понимания того, что у них «под капотом», достаточно этих слайдов:

PHP UK Conference 2016 - 5 PHP UK Conference 2016 - 6

Помимо докладов о том, как организовать архитектуру, был ряд выступлений, посвященных производительности и user-experience, и одно из самых достойных, на мой взгляд, — Every Millisecond Counts: Performance & UX [14]. Davey Shafik, автор нескольких книг по PHP, из компании Akamai, рассказывает о значимости задержек в загрузке сайта в финансовом эквиваленте, о техниках и инструментах, которыми стоит пользоваться. Вот несколько его рекомендаций:

  • сжимать картинки, ориентируясь на видимое качество;
  • использовать HTTP/2;
  • обращать внимание на Speed Index [15] (см. http://www.webpagetest.org/) [16];
  • кешировать (Memcache, Cassandra, Varnish, Squid). Причем автор даже предлагает кешировать целиком HTML. Для удобства существует специальная технология Edge Side Includes [17]. Хочу заметить, что идея не нова, и такой подход уже использовался как минимум 7 лет назад на auto.ru. Готовый HTML лежал в Memcache, а секции для баннеров были тегированы определенным образом, подставляя их на каждый запрос;
  • предугадывать действия пользователя и подгружать заранее с помощью dns-prefetch, preconnect, prefetch, preload и prerender.

В рубрике «сделай сам» оказался доклад Simple Machine Learning [18] — интригующая тема, хотя, по сути, речь шла именно о простом машинном обучении, а не о каком-то легком способе подобраться к rocket science, как может показаться на первый взгляд. Автор решил проанализировать сайт joind.in [19], посвященный отзывам на презентации с различных мероприятий, для поиска событий по теме PHP. К слову, про этот сайт я узнал именно на PHP UK Conference, на него ссылался буквально каждый из спикеров. Он сам по себе open source, сделан с использованием PHP-микрофреймворка Slim.

Для расчета вероятности того, что присутствие искомой темы зависит от наличия определенного тега к публикации, предлагалось использовать теорему Байеса. В конце автора спросили, можно ли использовать для тех же целей Elastic Search. Он согласился, сказав, что интересно было бы попробовать решить эту задачу вручную и понять, что все не так сложно.

Всего на конференции было более 30 докладов на разные темы. Все слайды можно найти на сайте joind.in [20], а видео — на YouTube [20].

Я уверен, что на эту конференцию было бы интересно попасть любому PHP-разработчику. Мне, например, гораздо меньше понравилось на Velocity в Санта-Кларе, потому что она больше ориентирована на DevOps, нежели веб-разработку в целом. Темы, которые были затронуты на PHP UK Conference, достаточно обширны и полезны в том числе и в общеобразовательном плане. Большинство докладчиков очень хорошо подготовлены, и этот уровень очень быстро начинаешь воспринимать как норму. Если вы планируете поехать на иностранную конференцию, то смело выбирайте эту — не прогадаете!

Александр Трегер,
Руководитель направления по экспериментальному функционалу Badoo.

Автор: Badoo

Источник [21]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka/117731

Ссылки в тексте:

[1] PHP UK Conference: http://phpconference.co.uk

[2] Security Theatre: http://www.slideshare.net/xsist10/security-theatre-php-uk-conference

[3] Dip Your Toes in the Sea of Security: http://www.slideshare.net/asgrim1/dip-your-toes-in-the-sea-of-security-php-uk-2016

[4] hash_equals: http://php.net/manual/ru/function.hash-equals.php

[5] password_verify: http://php.net/manual/ru/function.password-verify.php

[6] bounty-программа: https://habrahabr.ru/company/badoo/blog/279325/

[7] Automation Automation Automation: https://speakerdeck.com/mheap/automation-automation-automation

[8] 1: https://habrahabr.ru/company/badoo/blog/190572/

[9] 2: https://habrahabr.ru/company/badoo/blog/169417/

[10] 3: https://habrahabr.ru/company/badoo/blog/193258/

[11] Soft Mocks: https://habrahabr.ru/company/badoo/blog/279617/

[12] From Vagrant to Production: https://talks.bitexpert.de/phpuk16-vagrant-production/#/

[13] Elastic scaling in a (micro)service oriented architecture: https://speakerdeck.com/bastianhofmann/elastic-scaling-in-a-micro-service-oriented-architecture

[14] Every Millisecond Counts: Performance & UX: https://speakerdeck.com/dshafik/phpuk16-every-millisecond-counts-performance-and-ux

[15] Speed Index: https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index

[16] http://www.webpagetest.org/): http://www.webpagetest.org/

[17] Edge Side Includes: https://en.wikipedia.org/wiki/Edge_Side_Includes

[18] Simple Machine Learning: http://choult.com/talks/sml-phpuk.pdf

[19] joind.in: https://joind.in/

[20] joind.in: https://joind.in/event/php-uk-conference

[21] Источник: https://habrahabr.ru/post/281443/