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

от автора

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Dev что?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

ссылка на оригинал статьи https://habr.com/ru/company/skyeng/blog/554706/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *