Привет! 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. Запись митапа будет доступна здесь.