0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Мы попросили опытных PHP-программистов рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.</p>
1
<p>Мы попросили опытных PHP-программистов рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.</p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет</a></li>
3
<ul><li><a>Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет</a></li>
4
<li><a>Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии</a></li>
4
<li><a>Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии</a></li>
5
<li><a>Алексей Уколов, технический директор в компании "Айтигро", занимается веб-разработкой более 10 лет</a></li>
5
<li><a>Алексей Уколов, технический директор в компании "Айтигро", занимается веб-разработкой более 10 лет</a></li>
6
<li><a>Максим Фёдоров, PHP-программист, "Яндекс.Еда"</a></li>
6
<li><a>Максим Фёдоров, PHP-программист, "Яндекс.Еда"</a></li>
7
<li><a>Антон Морев, CTO в Wormsoft</a></li>
7
<li><a>Антон Морев, CTO в Wormsoft</a></li>
8
<li><a>Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры "ВКонтакте"</a></li>
8
<li><a>Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры "ВКонтакте"</a></li>
9
<li><a>Илья Логинов, Senior PHP developer</a></li>
9
<li><a>Илья Логинов, Senior PHP developer</a></li>
10
</ul><h2>Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет</h2>
10
</ul><h2>Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет</h2>
11
<p><em><a>Евгений Вольф</a></em>,<a>W-Group</a></p>
11
<p><em><a>Евгений Вольф</a></em>,<a>W-Group</a></p>
12
<p><em>Какой редактор или IDE вы используете?</em></p>
12
<p><em>Какой редактор или IDE вы используете?</em></p>
13
<p>Использую PhpStorm (оплаченная коммерческая версия), так как это, пожалуй, единственная на сегодняшний день полноценная IDE, она всегда идёт в ногу со временем, в том числе поддерживает все основные фреймворки (Symfony, Laravel, etc.), имеет поддержку новых версий PHP по мере их выхода и так далее.</p>
13
<p>Использую PhpStorm (оплаченная коммерческая версия), так как это, пожалуй, единственная на сегодняшний день полноценная IDE, она всегда идёт в ногу со временем, в том числе поддерживает все основные фреймворки (Symfony, Laravel, etc.), имеет поддержку новых версий PHP по мере их выхода и так далее.</p>
14
<p>Раньше активно пользовался NetBeans в виду его бесплатности и хорошей поддержки нашей кодовой базы, но в какой-то момент NetBeans начал сильно отставать от выхода новых версий PHP, а потом Oracle и вовсе отказался от его развития, передав его в руки Apache Software foundation, которые, в свою очередь, разумеется начали его развивать в сторону поддержки Java в первую очередь. По итогу, на данный момент NetBeans в некоторой степени можно назвать лучшей бесплатной IDE, но она очень сильно проигрывает конкурентам как по функционалу, так и по поддержке современных версий PHP.</p>
14
<p>Раньше активно пользовался NetBeans в виду его бесплатности и хорошей поддержки нашей кодовой базы, но в какой-то момент NetBeans начал сильно отставать от выхода новых версий PHP, а потом Oracle и вовсе отказался от его развития, передав его в руки Apache Software foundation, которые, в свою очередь, разумеется начали его развивать в сторону поддержки Java в первую очередь. По итогу, на данный момент NetBeans в некоторой степени можно назвать лучшей бесплатной IDE, но она очень сильно проигрывает конкурентам как по функционалу, так и по поддержке современных версий PHP.</p>
15
<p>В плане редакторов, мне нравятся Atom, Visual studio code и, пожалуй, Notepad++. Обычно использую их для работы уровня "что-то поправить". С этой задачей они справляются отлично, выглядят приятно, относительно мало потребляют ресурсов, имеют подсветку синтаксиса, встроенную консоль и работу с Git'ом.</p>
15
<p>В плане редакторов, мне нравятся Atom, Visual studio code и, пожалуй, Notepad++. Обычно использую их для работы уровня "что-то поправить". С этой задачей они справляются отлично, выглядят приятно, относительно мало потребляют ресурсов, имеют подсветку синтаксиса, встроенную консоль и работу с Git'ом.</p>
16
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
16
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
17
<p>Для мониторинга производительности приложений применяем top/htop. Это программы для линукса, которые показывают текущую нагрузку на сервер. Также применяем встроенные в Google Chrome средства для мониторинга производительности, скорости загрузки и так далее, и прочие инструменты, доступные в Google Chrome.</p>
17
<p>Для мониторинга производительности приложений применяем top/htop. Это программы для линукса, которые показывают текущую нагрузку на сервер. Также применяем встроенные в Google Chrome средства для мониторинга производительности, скорости загрузки и так далее, и прочие инструменты, доступные в Google Chrome.</p>
18
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
18
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
19
<p>Безопасность обеспечиваем по старинке, выглядит это примерно так: мне известны все основные потенциальные дыры на уровне приложения и веб-сервера, а также способы атак. Код пишется таким образом, чтобы нивелировать все гипотетические последствия подобных атак.</p>
19
<p>Безопасность обеспечиваем по старинке, выглядит это примерно так: мне известны все основные потенциальные дыры на уровне приложения и веб-сервера, а также способы атак. Код пишется таким образом, чтобы нивелировать все гипотетические последствия подобных атак.</p>
20
<p>Все известные мне приложения и сервисы по проверке безопасности находят уязвимости, которыми пользуются хакеры уровня "школьник", не более того. И особой ценности подобная информация для меня не представляет, так как все эти уязвимости стары как мир и общеизвестны. Возможно я старомоден, но я считаю, что руки + голова + firewall решают 99 % проблем с безопасностью приложений и серверов.</p>
20
<p>Все известные мне приложения и сервисы по проверке безопасности находят уязвимости, которыми пользуются хакеры уровня "школьник", не более того. И особой ценности подобная информация для меня не представляет, так как все эти уязвимости стары как мир и общеизвестны. Возможно я старомоден, но я считаю, что руки + голова + firewall решают 99 % проблем с безопасностью приложений и серверов.</p>
21
<p><em>Какие инструменты отладки используете?</em></p>
21
<p><em>Какие инструменты отладки используете?</em></p>
22
<p>Для отладки PHP используем Xdebug. Не уверен, что у него есть альтернативы заслуживающие особого внимания. Для отладки Laravel-проектов также используем barryvdh/laravel-debugbar (php debugbar), в Symfony же была собственная весьма неплохая отладочная панель.</p>
22
<p>Для отладки PHP используем Xdebug. Не уверен, что у него есть альтернативы заслуживающие особого внимания. Для отладки Laravel-проектов также используем barryvdh/laravel-debugbar (php debugbar), в Symfony же была собственная весьма неплохая отладочная панель.</p>
23
<p><em>Что используете для тестирования?</em></p>
23
<p><em>Что используете для тестирования?</em></p>
24
<p>Как базовый (основной/первичный) инструмент используем PHPUnit, а далее в зависимости от сложности и требований конкретного проекта. Иногда тесты не пишем вообще.</p>
24
<p>Как базовый (основной/первичный) инструмент используем PHPUnit, а далее в зависимости от сложности и требований конкретного проекта. Иногда тесты не пишем вообще.</p>
25
<p><em>С каким веб-фреймворком работаете?</em></p>
25
<p><em>С каким веб-фреймворком работаете?</em></p>
26
<p>Работали мы с очень многими фреймворками, начиная от таких "мамонтов", как CodeIgniter, Kohana, CakePHP и так далее, включая экзотику, например, Phalcon. Сейчас остановили свой выбор исключительно на Laravel и не перестаём посматривать<a>в сторону Symfony</a>. Пока мы ей не смогли найти достойного применения ввиду того, что она нещадно тормозит, кто бы что не говорил, но производительности ей сильно не хватает и это факт.</p>
26
<p>Работали мы с очень многими фреймворками, начиная от таких "мамонтов", как CodeIgniter, Kohana, CakePHP и так далее, включая экзотику, например, Phalcon. Сейчас остановили свой выбор исключительно на Laravel и не перестаём посматривать<a>в сторону Symfony</a>. Пока мы ей не смогли найти достойного применения ввиду того, что она нещадно тормозит, кто бы что не говорил, но производительности ей сильно не хватает и это факт.</p>
27
<p>Достаточно долго (вынужденно) пришлось поработать с Yii 1.x и 2.х. От его использования мы полностью отказались, так как проект находится в стадии предсмертной агонии. За последние 5+ лет, по моим наблюдениям, в Yii2 было исправлено около половины из 400+ заявленных багов. На этом собственно и всё. Никакого нового функционала не появилось, возможности современных (вышедших далеко не вчера) версий PHP данный фреймворк не использует, новых версий особо не выходит, проект если и не совсем мёртв, то слишком долго топчется на одном месте, ввиду чего по нашему мнению он мало ликвиден и используется в основном теми, кто не имеет достаточной экспертизы в Laravel и/или Symfony.</p>
27
<p>Достаточно долго (вынужденно) пришлось поработать с Yii 1.x и 2.х. От его использования мы полностью отказались, так как проект находится в стадии предсмертной агонии. За последние 5+ лет, по моим наблюдениям, в Yii2 было исправлено около половины из 400+ заявленных багов. На этом собственно и всё. Никакого нового функционала не появилось, возможности современных (вышедших далеко не вчера) версий PHP данный фреймворк не использует, новых версий особо не выходит, проект если и не совсем мёртв, то слишком долго топчется на одном месте, ввиду чего по нашему мнению он мало ликвиден и используется в основном теми, кто не имеет достаточной экспертизы в Laravel и/или Symfony.</p>
28
<p><em>Какие серверы и базы данных применяете?</em></p>
28
<p><em>Какие серверы и базы данных применяете?</em></p>
29
<p>Базы данных... Ну, в первую очередь, это конечно же MySQL, куда же без него, но без фанатизма.</p>
29
<p>Базы данных... Ну, в первую очередь, это конечно же MySQL, куда же без него, но без фанатизма.</p>
30
<p>Если проект публичный (OpenSource) или просто мелкий/простой, MySQL подходит идеально, его все знают, а некоторые даже любят. Но при серьёзных проектах и нагрузках MySQL не лишен ряда существенных недостатков. Начиная с отсутствия поддержки современных стандартов SQL до того, что при больших объёмах база может просто посыпаться.</p>
30
<p>Если проект публичный (OpenSource) или просто мелкий/простой, MySQL подходит идеально, его все знают, а некоторые даже любят. Но при серьёзных проектах и нагрузках MySQL не лишен ряда существенных недостатков. Начиная с отсутствия поддержки современных стандартов SQL до того, что при больших объёмах база может просто посыпаться.</p>
31
<p>Также у MySQL есть ряд технических коллизий, в частности в MySQL практически отсутствует такой механизм, как планировщик запросов. Он не может использовать более одного индекса на запрос, отсутствует многопоточность запросов и MVCC, есть ограничения на размер одной записи индекса, набор индексов довольно скудный, функционал сильно отстаёт от "старших собратьев".</p>
31
<p>Также у MySQL есть ряд технических коллизий, в частности в MySQL практически отсутствует такой механизм, как планировщик запросов. Он не может использовать более одного индекса на запрос, отсутствует многопоточность запросов и MVCC, есть ограничения на размер одной записи индекса, набор индексов довольно скудный, функционал сильно отстаёт от "старших собратьев".</p>
32
<p>Например, оконные функции появились в MySQL только с версии 8.0, поддержка JSON тоже появилась относительно недавно (с версии 5.7 кажется), но JSON-поля в MySQL текстовые и не индексируются. А также масса других объективных недостатков данной БД. Часть из которых подтверждается наличием множества форков данный БД, наиболее известные из которых - MariaDB, Percona. Что в принципе ожидаемо, так как после покупки данного проекта Oracle вполне логично предположить, что Oracle не даст проекту сильно развиваться и составить конкуренцию их основной (платной) БД. По этому, для серьёзных проектов мы используем PostgreSQL.</p>
32
<p>Например, оконные функции появились в MySQL только с версии 8.0, поддержка JSON тоже появилась относительно недавно (с версии 5.7 кажется), но JSON-поля в MySQL текстовые и не индексируются. А также масса других объективных недостатков данной БД. Часть из которых подтверждается наличием множества форков данный БД, наиболее известные из которых - MariaDB, Percona. Что в принципе ожидаемо, так как после покупки данного проекта Oracle вполне логично предположить, что Oracle не даст проекту сильно развиваться и составить конкуренцию их основной (платной) БД. По этому, для серьёзных проектов мы используем PostgreSQL.</p>
33
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
33
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
34
<p>Для виртуализации активно используем Docker, так как он позволяет решать проблему различия сред (то есть когда у одного работает, а другого нет), а также он позволяет упаковывать приложения, передавая их как единой целое (приложение + все прикладные его части + настройки ОС, включая её саму и так далее), что в целом довольно удобно.</p>
34
<p>Для виртуализации активно используем Docker, так как он позволяет решать проблему различия сред (то есть когда у одного работает, а другого нет), а также он позволяет упаковывать приложения, передавая их как единой целое (приложение + все прикладные его части + настройки ОС, включая её саму и так далее), что в целом довольно удобно.</p>
35
<p>Конечно, Docker - это далеко не серебряная пуля, и у него хватает своих "тараканов", но в целом это неплохое решение для ряда задач (ввиду того, что ничего лучше пока не придумали).</p>
35
<p>Конечно, Docker - это далеко не серебряная пуля, и у него хватает своих "тараканов", но в целом это неплохое решение для ряда задач (ввиду того, что ничего лучше пока не придумали).</p>
36
<p>Очень жаль, что под ОС Windows Docker работает весьма посредственно, но для себя мы решили эту проблему, просто отказавшись от Windows в пользу Linux. Иногда используем VirtualBox, LXC/LXD. Если бы LXC/LXD был более переносим, я имею в виду простоту переноса и отсутствие лишних телодвижений, между разными ОС или хотя бы внутри Linux, цены бы ему не было, так как в отличии от Docker LXC/LXD эмулирует полноценную ОС, включая систему инициализации, что в ряде случаев было бы куда лучшим решением, чем куча отдельных Docker-контейнеров для одного приложения. Другие системы виртуализации нам хорошо знакомы, но ввиду отсутствия какой-либо необходимости в них в нашей работе я о них просто не упоминаю.</p>
36
<p>Очень жаль, что под ОС Windows Docker работает весьма посредственно, но для себя мы решили эту проблему, просто отказавшись от Windows в пользу Linux. Иногда используем VirtualBox, LXC/LXD. Если бы LXC/LXD был более переносим, я имею в виду простоту переноса и отсутствие лишних телодвижений, между разными ОС или хотя бы внутри Linux, цены бы ему не было, так как в отличии от Docker LXC/LXD эмулирует полноценную ОС, включая систему инициализации, что в ряде случаев было бы куда лучшим решением, чем куча отдельных Docker-контейнеров для одного приложения. Другие системы виртуализации нам хорошо знакомы, но ввиду отсутствия какой-либо необходимости в них в нашей работе я о них просто не упоминаю.</p>
37
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
37
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
38
<p>В первую очередь, я думаю, это ОС Linux, позволяющая разрабатывать приложения в родной для них среде со всеми вытекающими. Хорошая IDE, умение пользоваться инструментами ОС Linux (в частности иногда очень сильно выручает редактор VI[M], такие инструменты как find, grep, ssh, tail и многие другие), пара веб-серверов (Nginx, Apache - да, вы не ослышались, иногда мы используем Apache по вполне конкретным причинам), свежая версия PHP, ну и общее понимание принимаемых решений, то есть осознанный выбор на уровне полного понимания последствий, а не на уровне интуиции, - вот, пожалуй, самые важные инструменты для веб-разработчика.</p>
38
<p>В первую очередь, я думаю, это ОС Linux, позволяющая разрабатывать приложения в родной для них среде со всеми вытекающими. Хорошая IDE, умение пользоваться инструментами ОС Linux (в частности иногда очень сильно выручает редактор VI[M], такие инструменты как find, grep, ssh, tail и многие другие), пара веб-серверов (Nginx, Apache - да, вы не ослышались, иногда мы используем Apache по вполне конкретным причинам), свежая версия PHP, ну и общее понимание принимаемых решений, то есть осознанный выбор на уровне полного понимания последствий, а не на уровне интуиции, - вот, пожалуй, самые важные инструменты для веб-разработчика.</p>
39
<p>И да, в 99% случаев мы не используем CMS вообще.</p>
39
<p>И да, в 99% случаев мы не используем CMS вообще.</p>
40
<h2>Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии</h2>
40
<h2>Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии</h2>
41
<p><em><a>Борис Коробков</a></em></p>
41
<p><em><a>Борис Коробков</a></em></p>
42
<p><em>Какой редактор или IDE вы используете?</em></p>
42
<p><em>Какой редактор или IDE вы используете?</em></p>
43
<p>Более 10 лет назад - NetBeans, других альтернатив тогда не было. Потом PhpStorm - он удобнее, чем NetBeans. Работодатель оплачивал лицензию. Сейчас Visual Studio Code - такой же удобный, но бесплатный.</p>
43
<p>Более 10 лет назад - NetBeans, других альтернатив тогда не было. Потом PhpStorm - он удобнее, чем NetBeans. Работодатель оплачивал лицензию. Сейчас Visual Studio Code - такой же удобный, но бесплатный.</p>
44
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
44
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
45
<p>При локальной отладке - breakpoint средствами фреймворка. На продакшене - Nagios (так исторически сложилось), slow query log, iostat и так далее.</p>
45
<p>При локальной отладке - breakpoint средствами фреймворка. На продакшене - Nagios (так исторически сложилось), slow query log, iostat и так далее.</p>
46
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
46
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
47
<p>Ввод, вывод, БД - средствами фреймворка: Request, Response, ORM. Статические анализаторы кода: Php Inspections, CodeSniffer. Сканеры: Nmap.</p>
47
<p>Ввод, вывод, БД - средствами фреймворка: Request, Response, ORM. Статические анализаторы кода: Php Inspections, CodeSniffer. Сканеры: Nmap.</p>
48
<p><em>Какие инструменты отладки используете?</em></p>
48
<p><em>Какие инструменты отладки используете?</em></p>
49
<p>Xdebug.</p>
49
<p>Xdebug.</p>
50
<p><em>Что используете для тестирования?</em></p>
50
<p><em>Что используете для тестирования?</em></p>
51
<p>PHPUnit, Selenium.</p>
51
<p>PHPUnit, Selenium.</p>
52
<p><em>С каким веб-фреймворком работаете?</em></p>
52
<p><em>С каким веб-фреймворком работаете?</em></p>
53
<p>Есть опыт работы со многими фреймворками, включая самописные. Если делать простой сайт для себя just for fun, вероятно, выберу Yii2. Если выбирать фреймворк для серьезного проекта, надо учесть много факторов.</p>
53
<p>Есть опыт работы со многими фреймворками, включая самописные. Если делать простой сайт для себя just for fun, вероятно, выберу Yii2. Если выбирать фреймворк для серьезного проекта, надо учесть много факторов.</p>
54
<p><em>Какие серверы и базы данных применяете?</em></p>
54
<p><em>Какие серверы и базы данных применяете?</em></p>
55
<p>На новых серверах ставлю CentOS, на старых работаю с тем, что есть. Из БД предпочитаю PostgreSQL, иногда использую MySQL, по требованию заказчика или по обстоятельствам - SQLite, Redis, Mongo и прочие.</p>
55
<p>На новых серверах ставлю CentOS, на старых работаю с тем, что есть. Из БД предпочитаю PostgreSQL, иногда использую MySQL, по требованию заказчика или по обстоятельствам - SQLite, Redis, Mongo и прочие.</p>
56
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
56
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
57
<p>Docker. С его помощью запускаю unit-тесты с разными БД (разных версии PostgreSQL, MySQL), разными веб-серверами (Nginx, Apache2), разными версиями PHP.</p>
57
<p>Docker. С его помощью запускаю unit-тесты с разными БД (разных версии PostgreSQL, MySQL), разными веб-серверами (Nginx, Apache2), разными версиями PHP.</p>
58
<p>Запускаю Selenium-тесты на разных браузерах (Chrome, Firefox).</p>
58
<p>Запускаю Selenium-тесты на разных браузерах (Chrome, Firefox).</p>
59
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
59
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
60
<p>Для любых разработчиков: git + code review = github или gitlab.</p>
60
<p>Для любых разработчиков: git + code review = github или gitlab.</p>
61
<h2>Алексей Уколов, технический директор в компании "Айтигро", занимается веб-разработкой более 10 лет</h2>
61
<h2>Алексей Уколов, технический директор в компании "Айтигро", занимается веб-разработкой более 10 лет</h2>
62
<p><em><a>Алексей Уколов</a>, компания<a>"Айтигро"</a></em></p>
62
<p><em><a>Алексей Уколов</a>, компания<a>"Айтигро"</a></em></p>
63
<p><em>Какой редактор или IDE вы используете?</em></p>
63
<p><em>Какой редактор или IDE вы используете?</em></p>
64
<p>Начинал с NetBeans, но довольно быстро перешёл на PhpStorm, и последние семь лет использую его. Почему перешёл, уже не помню точно, кажется, интерфейс казался неудобным. Свою стоимость PhpStorm оправдывает полностью - удобный интерфейс и умные подсказки значительно облегчают работу.</p>
64
<p>Начинал с NetBeans, но довольно быстро перешёл на PhpStorm, и последние семь лет использую его. Почему перешёл, уже не помню точно, кажется, интерфейс казался неудобным. Свою стоимость PhpStorm оправдывает полностью - удобный интерфейс и умные подсказки значительно облегчают работу.</p>
65
<p>Полезно смотреть или читать туториалы, чтобы знать о каких-то неочевидных функциях. Для новичков будет полезно включить настройку Show tips on startup, при помощи этого окна я тоже многие функции узнал.</p>
65
<p>Полезно смотреть или читать туториалы, чтобы знать о каких-то неочевидных функциях. Для новичков будет полезно включить настройку Show tips on startup, при помощи этого окна я тоже многие функции узнал.</p>
66
<p>Простые редакторы тоже использую, но нечасто - обычно это nano или mceditor на серверах.</p>
66
<p>Простые редакторы тоже использую, но нечасто - обычно это nano или mceditor на серверах.</p>
67
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
67
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
68
<p>У нас нет какого-то прямо серьёзного хайлоада и распределённых систем, поэтому хватает данных "Яндекс.Метрики", чтобы увидеть есть ли какие-то проблемы. Наши админы настраивают Zabbix, и он предупреждает о "железных" проблемах. Бизнес-метрики собираем кастомным решением под каждый проект, потому что требования у всех свои.</p>
68
<p>У нас нет какого-то прямо серьёзного хайлоада и распределённых систем, поэтому хватает данных "Яндекс.Метрики", чтобы увидеть есть ли какие-то проблемы. Наши админы настраивают Zabbix, и он предупреждает о "железных" проблемах. Бизнес-метрики собираем кастомным решением под каждый проект, потому что требования у всех свои.</p>
69
<p>Во время разработки мы всегда профилируем приложение при помощи XHProf и создания какого-то похожего на правду объёма данных, поэтому многие проблемы до продакшена вообще не доезжают. Если всё-таки случаются тормоза, то запускаем XHProf уже на сервере для какого-то среза пользователей (об этом нужно думать заранее и разворачивать инфраструктуру, когда проблем нет, потому что поднимать XHProf на "горящем" проекте - удовольствие сомнительное). Если и это не помогает, подключаем NewRelic или okmeter.</p>
69
<p>Во время разработки мы всегда профилируем приложение при помощи XHProf и создания какого-то похожего на правду объёма данных, поэтому многие проблемы до продакшена вообще не доезжают. Если всё-таки случаются тормоза, то запускаем XHProf уже на сервере для какого-то среза пользователей (об этом нужно думать заранее и разворачивать инфраструктуру, когда проблем нет, потому что поднимать XHProf на "горящем" проекте - удовольствие сомнительное). Если и это не помогает, подключаем NewRelic или okmeter.</p>
70
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
70
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
71
<p>Каких-то специальных инструментов не используем, просто помним о лучших практиках кода и проводим ревью. Современные фреймворки, в принципе, многое из этой области берут на себя.</p>
71
<p>Каких-то специальных инструментов не используем, просто помним о лучших практиках кода и проводим ревью. Современные фреймворки, в принципе, многое из этой области берут на себя.</p>
72
<p><em>Какие инструменты отладки используете?</em></p>
72
<p><em>Какие инструменты отладки используете?</em></p>
73
<p>Практика показывает, что самый лучший инструмент - это Xdebug. Но часто запускать его лень, и проблема решается дампом каких-то данных на страницу или в консоль. Периодически я ловлю себя на том, что вывожу какие-то данные, копаюсь в них, а потом запускаю Xdebug и сразу нахожу проблему. Приучить себя сложно, но я стараюсь.</p>
73
<p>Практика показывает, что самый лучший инструмент - это Xdebug. Но часто запускать его лень, и проблема решается дампом каких-то данных на страницу или в консоль. Периодически я ловлю себя на том, что вывожу какие-то данные, копаюсь в них, а потом запускаю Xdebug и сразу нахожу проблему. Приучить себя сложно, но я стараюсь.</p>
74
<p>Ещё на каждый проект ставим Laravel Debug Bar, но я обычно её сразу скрываю и практически никогда не пользуюсь. Хотя штука это довольно полезная - например, показывает, что какие-то запросы к БД дублируются, значит где-то есть проблема N+1.</p>
74
<p>Ещё на каждый проект ставим Laravel Debug Bar, но я обычно её сразу скрываю и практически никогда не пользуюсь. Хотя штука это довольно полезная - например, показывает, что какие-то запросы к БД дублируются, значит где-то есть проблема N+1.</p>
75
<p><em>Что используете для тестирования?</em></p>
75
<p><em>Что используете для тестирования?</em></p>
76
<p>Для тестов используем PHPUnit и Mockery, плюс встроенные в Laravel тест-кейсы. Этого хватает для решения всех задач. У Laravel ещё есть браузерное тестирование через Dusk, но в нём пока большой необходимости не увидели.</p>
76
<p>Для тестов используем PHPUnit и Mockery, плюс встроенные в Laravel тест-кейсы. Этого хватает для решения всех задач. У Laravel ещё есть браузерное тестирование через Dusk, но в нём пока большой необходимости не увидели.</p>
77
<p>Несколько лет назад пытались подружить Behat и Битрикс - безуспешно. Сама идея Behat мне нравится, но когда тесты придумывают и пишут сами программисты, использование "литературного" описания кажется лишней прослойкой.</p>
77
<p>Несколько лет назад пытались подружить Behat и Битрикс - безуспешно. Сама идея Behat мне нравится, но когда тесты придумывают и пишут сами программисты, использование "литературного" описания кажется лишней прослойкой.</p>
78
<p><em>С каким веб-фреймворком работаете?</em></p>
78
<p><em>С каким веб-фреймворком работаете?</em></p>
79
<p>Только с Laravel. Yii и Zend мне персонально не очень нравятся, когда я выбирал фреймворк, они выглядели устаревшими. Возможно, сейчас они догнали остальных по использованию каких-то стандартов индустрии (PSR и тому подобное), но переходить уже не вижу смысла - все мои задачи Laravel закрывает.</p>
79
<p>Только с Laravel. Yii и Zend мне персонально не очень нравятся, когда я выбирал фреймворк, они выглядели устаревшими. Возможно, сейчас они догнали остальных по использованию каких-то стандартов индустрии (PSR и тому подобное), но переходить уже не вижу смысла - все мои задачи Laravel закрывает.</p>
80
<p>Symfony выглядит привлекательно, и какие-то небольшие вещи я на ней писал, но у Laravel ниже порог входа, поэтому проще найти разработчиков.</p>
80
<p>Symfony выглядит привлекательно, и какие-то небольшие вещи я на ней писал, но у Laravel ниже порог входа, поэтому проще найти разработчиков.</p>
81
<p><em>Какие серверы и базы данных применяете?</em></p>
81
<p><em>Какие серверы и базы данных применяете?</em></p>
82
<p>Не очень понятно что подразумевается под серверами. Если железо, то не знаю - админы что-то собирают :) ОС используем разные, в зависимости от требований клиента. Кому-то важны разные сертификации надзорных органов - тогда берём какой-то не самый свежий Debian. Кому-то важно, чтобы релиз был LTS. Чаще всего используем Debian, CentOS и Ubuntu.</p>
82
<p>Не очень понятно что подразумевается под серверами. Если железо, то не знаю - админы что-то собирают :) ОС используем разные, в зависимости от требований клиента. Кому-то важны разные сертификации надзорных органов - тогда берём какой-то не самый свежий Debian. Кому-то важно, чтобы релиз был LTS. Чаще всего используем Debian, CentOS и Ubuntu.</p>
83
<p>СУБД, опять же, выбираем под проект. Обычно это последняя версия MySQL, но иногда клиенту нужна "экзотика". Приходилось писать и под PostgreSQL, и под MSSQL, и даже под SQLite.</p>
83
<p>СУБД, опять же, выбираем под проект. Обычно это последняя версия MySQL, но иногда клиенту нужна "экзотика". Приходилось писать и под PostgreSQL, и под MSSQL, и даже под SQLite.</p>
84
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
84
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
85
<p>Сейчас на всех этапах разработки используем Docker - он стоит на локальных машинах разработчиков, на стейджинг-серверах и на продакшене.</p>
85
<p>Сейчас на всех этапах разработки используем Docker - он стоит на локальных машинах разработчиков, на стейджинг-серверах и на продакшене.</p>
86
<p>На мой взгляд, глубоко погружаться в эту тему PHP-разработчику не нужно, у нас хватает своих забот в предметной области, так что умения написать несложный Docker-файл, запустить-остановить контейнер и собрать несколько контейнеров в приложение при помощи docker-compose должно быть достаточно. Это, конечно, при условии, что есть доступ к компетентным админам и девопсам.</p>
86
<p>На мой взгляд, глубоко погружаться в эту тему PHP-разработчику не нужно, у нас хватает своих забот в предметной области, так что умения написать несложный Docker-файл, запустить-остановить контейнер и собрать несколько контейнеров в приложение при помощи docker-compose должно быть достаточно. Это, конечно, при условии, что есть доступ к компетентным админам и девопсам.</p>
87
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
87
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
88
<p>Очень рекомендую использовать различные анализаторы кода, они реально ловят ошибки и помогают писать чище. Вот что я сразу ставлю на новый проект:</p>
88
<p>Очень рекомендую использовать различные анализаторы кода, они реально ловят ошибки и помогают писать чище. Вот что я сразу ставлю на новый проект:</p>
89
<ul><li><a>phpstan</a></li>
89
<ul><li><a>phpstan</a></li>
90
<li><a>phpcpd</a></li>
90
<li><a>phpcpd</a></li>
91
<li><a>php_codesniffer</a></li>
91
<li><a>php_codesniffer</a></li>
92
<li><a>php-cs-fixer</a></li>
92
<li><a>php-cs-fixer</a></li>
93
<li><a>churn</a></li>
93
<li><a>churn</a></li>
94
</ul><h2>Максим Фёдоров, PHP-программист, "Яндекс.Еда"</h2>
94
</ul><h2>Максим Фёдоров, PHP-программист, "Яндекс.Еда"</h2>
95
<p><em><a>Максим Фёдоров</a></em></p>
95
<p><em><a>Максим Фёдоров</a></em></p>
96
<p><em>Какой редактор или IDE вы используете?</em></p>
96
<p><em>Какой редактор или IDE вы используете?</em></p>
97
<p>PhpStorm.</p>
97
<p>PhpStorm.</p>
98
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
98
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
99
<p>Мало приходилось, немного через Blackfire от Symfony производительность мерил, сейчас будем с танком работать. Это разные вещи, но так или иначе этот вопрос решал с помощью этих инструментов в рамках своей работы.</p>
99
<p>Мало приходилось, немного через Blackfire от Symfony производительность мерил, сейчас будем с танком работать. Это разные вещи, но так или иначе этот вопрос решал с помощью этих инструментов в рамках своей работы.</p>
100
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
100
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
101
<p>Только через ручное/обычное автоматическое тестирование без специальных решений.</p>
101
<p>Только через ручное/обычное автоматическое тестирование без специальных решений.</p>
102
<p><em>Какие инструменты отладки используете?</em></p>
102
<p><em>Какие инструменты отладки используете?</em></p>
103
<p>Xdebug.</p>
103
<p>Xdebug.</p>
104
<p><em>Что используете для тестирования?</em></p>
104
<p><em>Что используете для тестирования?</em></p>
105
<p>PHPUnit, Codeception + selenium, paratest.</p>
105
<p>PHPUnit, Codeception + selenium, paratest.</p>
106
<p><em>С каким веб-фреймворком работаете?</em></p>
106
<p><em>С каким веб-фреймворком работаете?</em></p>
107
<p>Symfony (3.4 на работе, 4 для своих проектов).</p>
107
<p>Symfony (3.4 на работе, 4 для своих проектов).</p>
108
<p><em>Какие серверы и базы данных применяете?</em></p>
108
<p><em>Какие серверы и базы данных применяете?</em></p>
109
<p>MySQL, rabbitmq.</p>
109
<p>MySQL, rabbitmq.</p>
110
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
110
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
111
<p>Предпочитаю вагрант, но работаю с докером :)</p>
111
<p>Предпочитаю вагрант, но работаю с докером :)</p>
112
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
112
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
113
<p>PhpStan, php-CS-fixer обязательным набором идут, чего-то экзотического не особо использую.</p>
113
<p>PhpStan, php-CS-fixer обязательным набором идут, чего-то экзотического не особо использую.</p>
114
<h2>Антон Морев, CTO в Wormsoft</h2>
114
<h2>Антон Морев, CTO в Wormsoft</h2>
115
<p><em><a>Антон Морев</a></em></p>
115
<p><em><a>Антон Морев</a></em></p>
116
<p><em>Какой редактор или IDE вы используете?</em></p>
116
<p><em>Какой редактор или IDE вы используете?</em></p>
117
<p>PhpStorm (сначала были PSDPad, Sublime Text).</p>
117
<p>PhpStorm (сначала были PSDPad, Sublime Text).</p>
118
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
118
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
119
<p>AB, Siege</p>
119
<p>AB, Siege</p>
120
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
120
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
121
<p>Не используем специальные решения.</p>
121
<p>Не используем специальные решения.</p>
122
<p><em>Какие инструменты отладки используете?</em></p>
122
<p><em>Какие инструменты отладки используете?</em></p>
123
<p>Xdebug.</p>
123
<p>Xdebug.</p>
124
<p><em>Что используете для тестирования?</em></p>
124
<p><em>Что используете для тестирования?</em></p>
125
<p>Codeception.</p>
125
<p>Codeception.</p>
126
<p><em>С каким веб-фреймворком работаете?</em></p>
126
<p><em>С каким веб-фреймворком работаете?</em></p>
127
<p>Yii2, Laravel.</p>
127
<p>Yii2, Laravel.</p>
128
<p><em>Какие серверы и базы данных применяете?</em></p>
128
<p><em>Какие серверы и базы данных применяете?</em></p>
129
<p>Mysql, PostgreSQL, MongoDB.</p>
129
<p>Mysql, PostgreSQL, MongoDB.</p>
130
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
130
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
131
<p>Docker.</p>
131
<p>Docker.</p>
132
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
132
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
133
<p>Postman, Altair.</p>
133
<p>Postman, Altair.</p>
134
<h2>Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры "ВКонтакте"</h2>
134
<h2>Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры "ВКонтакте"</h2>
135
<p><em><a>Искандер Шарипов</a></em></p>
135
<p><em><a>Искандер Шарипов</a></em></p>
136
<p><em>Какой редактор или IDE вы используете?</em></p>
136
<p><em>Какой редактор или IDE вы используете?</em></p>
137
<p>PhpStorm.</p>
137
<p>PhpStorm.</p>
138
<p><em>Какие инструменты отладки используете?</em></p>
138
<p><em>Какие инструменты отладки используете?</em></p>
139
<p>Статический анализ, кодовое ревью. Ещё в kPHP к коду есть требование в указании большинства типов, поэтому PHP у нас во многом более строгий, из-за чего ошибки типов встречаются реже. Остальные ошибки пытаемся находить статическим анализом или во время тестирования.</p>
139
<p>Статический анализ, кодовое ревью. Ещё в kPHP к коду есть требование в указании большинства типов, поэтому PHP у нас во многом более строгий, из-за чего ошибки типов встречаются реже. Остальные ошибки пытаемся находить статическим анализом или во время тестирования.</p>
140
<p><em>Что используете для тестирования?</em></p>
140
<p><em>Что используете для тестирования?</em></p>
141
<p>PHPUnit.</p>
141
<p>PHPUnit.</p>
142
<p><em>С каким веб-фреймворком работаете?</em></p>
142
<p><em>С каким веб-фреймворком работаете?</em></p>
143
<p>Свой собственный. На прошлой работе тоже были свои велосипеды, но ближе всего был Yii2.</p>
143
<p>Свой собственный. На прошлой работе тоже были свои велосипеды, но ближе всего был Yii2.</p>
144
<p><em>Какие серверы и базы данных применяете?</em></p>
144
<p><em>Какие серверы и базы данных применяете?</em></p>
145
<p>В ВК большая часть БД написанные нашей же командой. Но ещё используются MySQL и ClickHouse. Есть сервера под Nginx, но бывают и отдельно стоящие сервера на каком-нибудь Go (но перед ними тоже могут быть балансировщики).</p>
145
<p>В ВК большая часть БД написанные нашей же командой. Но ещё используются MySQL и ClickHouse. Есть сервера под Nginx, но бывают и отдельно стоящие сервера на каком-нибудь Go (но перед ними тоже могут быть балансировщики).</p>
146
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
146
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
147
<p><a>Phpgrep</a>и<a>NoVerify</a>.</p>
147
<p><a>Phpgrep</a>и<a>NoVerify</a>.</p>
148
<h2>Илья Логинов, Senior PHP developer</h2>
148
<h2>Илья Логинов, Senior PHP developer</h2>
149
<p><em><a>Илья Логинов</a></em></p>
149
<p><em><a>Илья Логинов</a></em></p>
150
<p><em>Какой редактор или IDE вы используете?</em></p>
150
<p><em>Какой редактор или IDE вы используете?</em></p>
151
<p>PhpStorm, до этого был NetBeans, а до него Notepad++ с плагинами.</p>
151
<p>PhpStorm, до этого был NetBeans, а до него Notepad++ с плагинами.</p>
152
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
152
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
153
<p>Обычно Zabbix с доработками, изредка какой нибудь внутренний продукт компании</p>
153
<p>Обычно Zabbix с доработками, изредка какой нибудь внутренний продукт компании</p>
154
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
154
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
155
<p>Кастомные решения в виде bash скриптов, настройки окружения, логов и прочего.</p>
155
<p>Кастомные решения в виде bash скриптов, настройки окружения, логов и прочего.</p>
156
<p><em>Какие инструменты отладки используете?</em></p>
156
<p><em>Какие инструменты отладки используете?</em></p>
157
<p>Xdebug.</p>
157
<p>Xdebug.</p>
158
<p><em>Что используете для тестирования?</em></p>
158
<p><em>Что используете для тестирования?</em></p>
159
<p>PHPUnit (+ Code Coverage).</p>
159
<p>PHPUnit (+ Code Coverage).</p>
160
<p><em>С каким веб-фреймворком работаете?</em></p>
160
<p><em>С каким веб-фреймворком работаете?</em></p>
161
<p>Сейчас с Laravel, до этого были Zend, Kohana, Codeigniter.</p>
161
<p>Сейчас с Laravel, до этого были Zend, Kohana, Codeigniter.</p>
162
<p><em>Какие серверы и базы данных применяете?</em></p>
162
<p><em>Какие серверы и базы данных применяете?</em></p>
163
<p>Тут все зависит от требований к проекту, для некоторых подходит VPS с SqLite, другим продукты AWS требуются. Но в большинстве случаев это VDS и MySQL(MariaDB) или PostgreSQL.</p>
163
<p>Тут все зависит от требований к проекту, для некоторых подходит VPS с SqLite, другим продукты AWS требуются. Но в большинстве случаев это VDS и MySQL(MariaDB) или PostgreSQL.</p>
164
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
164
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
165
<p>Уже давно не работал с системами виртуализации, сейчас только контейнеризация в виде Docker с Kubernetes.</p>
165
<p>Уже давно не работал с системами виртуализации, сейчас только контейнеризация в виде Docker с Kubernetes.</p>
166
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
166
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
167
<p>Vim.</p>
167
<p>Vim.</p>
168
<p>Пожалуйста, напишите в комментариях, какими инструментами в повседневной работе с PHP-кодом пользуетесь вы.</p>
168
<p>Пожалуйста, напишите в комментариях, какими инструментами в повседневной работе с PHP-кодом пользуетесь вы.</p>