Как писать тесты, трейты vs ООП, разговоры про DevOps, KPHP и Go — превью большого PHP-митапа

Привет! 15 мая мы проведем митап в смешанном формате: ты сможешь подключиться к ютуб-трансляции и задать вопрос текстом или голосом, а если ты в Казани или рядом — приходи в «Штаб». Ребята из Skyeng расскажут, как и зачем допиливать Codeception, чтобы больше радоваться. Ребята из VK — как превратить PHP-скрипты в статические бинарники. Ребята из iSpring — как внедряли DevOps без Docker и Kubernetes. Ребята из FindMyKids — как переписали нагруженный сервис. Ну, а автор Laravel Idea Адель Файзрахманов поднимет холиварную тему про трейты.  

Мы попросили докладчиков оценить темы друг друга и чуть больше рассказать о своем опыте.

Иван Филатов, старший разработчик в команде экспериментальных продуктов Skyeng

834d8593e9f2440ebe710ea650660a29.png

Расскажи самую памятную историю про свою тему — тесты.

Наверное, когда впервые сделал несколько тестов, настроил на поднятом своими руками Gitlab себе CI с автопрогоном — и оно всё заработало.

Как относишься к трейтам?  

Нормальный способ переиспользования кода. Можно выносить небольшие утилитарные вещи.

Как у тебя в проекте с DevOps?

Отлично, есть большой отдел, люди работают, разработку слышат, взаимодействие приятное. Сам активно помогал, делал PR и участвовал в обсуждениях.

Что думаешь о KPHP?  

Не думаю, что он может взлететь вне ВКонтакте, если не будет поддерживать всё, что есть в актуальном PHP.

Что думаешь о переписывании сервисов с PHP на Go?  

Хорошее дело, если надо сделать микросервис, когда RPS такой, что PHP живётся сложно. 

Сергей Шамбир, ведущий инженер-программист в iSpring

2c09ce6e435c443d3f9c30d775e03e90.png

Расскажи самую памятную историю про тесты.

Нашёл я однажды среди тестов целых 10 файлов, где всё закомментировано 2 года назад. Оказалось, автор закомментировал тесты временно и забыл раскомментировать перед коммитом.

Как относишься к трейтам?  

Использовал трейт как временное решение для переименования колонки в БД.

Как у тебя в проекте с DevOps?

В любом проекте внедряю DevOps-практики. Причем начинал делать это ещё когда не знал слова DevOps. Видимо, что-то бессознательное тянет меня в эту сторону.

Что думаешь о KPHP?

KPHP вряд ли выйдет за рамки внутреннего проекта VK. HHVM пытался выйти, и зашёл обратно в виде языка hack. Кажется, ни Facebook, ни VK не готовы терпеливо развивать сам язык и его инструментарий, поэтому они всегда будут где-то в стороне.

Что думаешь о переписывании сервисов с PHP на Go?  

Не всегда целесообразно переходить на Go. Чаще всего Go подходит для закрытия того, что PHP делает плохо, для новых компонентов продукта и для внутренней автоматизации, если она сложная. Если хочется переписать на Go существующее — стоит прочитать статью «Скрытые расходы при переходе на микросервисы».

Искандер Шарипов, ведущий разработчик ВКонтакте, работает над KPHP

54e7631a307696808517e4f1d865269a.png

Расскажи самую памятную историю про тесты.

Поменял пару строк в коде, сфейлились тесты на несколько десятков тысяч кода в тестах (тестовые данные были завязаны на всяких внутренностях). У меня руки устали всё править даже в полуавтоматическом режиме.

Как относишься к трейтам?  

Древнее зло… оно непобедимо.

Как у тебя в проекте с DevOps?

Dev что?

Что думаешь о KPHP?  

Лучший язык программирования. 

Что думаешь о переписывании сервисов с PHP на Go?  

Это отличная идея! Потом ещё можно на KPHP переписать.

Адель Файзрахманов, разработчик Laravel Idea и автор книги «Архитектура сложных веб-приложений»

ce44daa1dcc798fc4f7cba2a5dbc4cc0.png

Расскажи самую памятную историю про тесты.

Делал огромный рефакторинг. Перелопатил под сотню файлов и тысячи строк. Очень сильно упростил внутреннюю структуру авто-дополнений Laravel Idea. Всё стало проще, красивее, быстрее. Появилась возможность реализовывать кастомные авто-дополнения. В общем, одни плюсы. Но я запустил после всего этого тесты, один из них упал. Я быстро нашёл мелкий баг (там банально не ту переменную заюзал). 

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

Как относишься к трейтам?  

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

Как у тебя в проекте с DevOps?  

Мой текущий проект это плагин для PhpStorm, поэтому весь DevOps — это собрать его, обфусцировать и залить в репозиторий JetBrains. Трудностей добавляет то, что надо это делать для 5 разных версий шторма. Со всем этим справляется мой доморощенный CI. Осталось только научить его заливать в репозиторий, но это несложно.

Что думаешь о KPHP?  

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

Что думаешь о переписывании сервисов с PHP на Go?  

Если это экономически оправдано, а не развлечения ради, то почему нет? Обычно это оправдано для каких-нибудь числодробилок или чисто инфраструктурных вещей. Сам я в подобных развлечениях не участвовал.

Егор Пересада, техлид в команде платформы FindMyKids

583d45555d084bfc4c91851b90346e79.png

Расскажи самую памятную историю про тесты.

Однажды спросил у парня на собеседовании, пишет ли он тесты. Он ответил нет — и мы его не взяли. А потом вспомнили, что и сами не пишем…

Как относишься к трейтам?  

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

Как у тебя в проекте с DevOps?  

Большая часть автоматизирована, как минимум есть build-test-deploy, но не хватает более приватной работы с конфигами для приложений. Сейчас у нас все на bare-metal, но постепенно мы переезжает в Kubernetes.

Что думаешь о KPHP?  

Кажется, что если бы ВКонтакте не занимался кодогенерацией из PHP в Си, то PHP бы развивался значительно быстрее и уровень специалистов был бы выше. Но если отбросить сантименты, то технология интересная и в рамках бизнеса — безусловно интересное решение.

Что думаешь о переписывании сервисов с PHP на Go?  

Положительно, если это обусловлено объективными причинами.

P.S. Присоединяйся к митапу 15 мая в онлайн или офлайн режиме. Мы начнем в 11 по Москве.

P.P. S. Запись митапа будет доступна здесь.

© Habrahabr.ru