Сегодня в одном из чатов разгорелся спор, о том можно ли использовать фреймворк Symfony для микросервисов. Ну я сказал нет.
Я сказал это потому, что мне кажется микросервисы, это маленькие программы, выполняющие одну функцию и они должны делать это как можно быстрее.
Мои данные конечно немного устарели, и вот даже на сайте Symfony говорят, что его можно использовать в двух режимах, полноценном для сайта, и модульном для микросервисов.
Я был уверен, что фреймворки вносят небольшой overhead в работу приложения, и чем этого overhead меньше, тем быстрее работает приложение, тем больше запросов в секунду приложение примет, в общем все будут счастливее.
Я сделал условное Hello Word приложение, чтобы просто отработал Router и показал простой текст.
$number = random_int(0, 100);
echo '<html><body>Lucky number: '.$number.'</body></html>';
вот такой код, показывает случайное число от 0 до 100. Все просто, ничего лишнего.
Тестирование проводил через утилиту
ab -c 50 -n 1000 -f TLS1.2 -H "Accept-Encoding: gzip,deflate" http://site.ru/hello/lucky
И результаты получились такими:
Clear PHP: 5269.29 [#/sec] (mean) x7.7
FatFreeFramework: 2835.15 [#/sec] (mean) x4.1
Slim: 1500.98 [#/sec] (mean) x2.2
Symfony: 1246.42 [#/sec] (mean) x1.8
Symfony --full: 685.56 [#/sec] (mean) x1
Laravel: 255.47 [#/sec] (mean) x0.37
Тут первый столбик, это название фреймворка, второй столбик количество запросов в секунду, третий столбик это скорость относительно фреймворка Symfony в режиме -full т.е. полноценный режим для сайта.
И да, если зарыться, чем больше возможностей фреймворка мы будем использовать, тем медленнее он будет работать, но тем быстрее мы будем писать код, и соответственно в чистом PHP тем сложнее нам будет писать код. В каждом конкретном случае, нужно смотреть что для нас имеет приоритет. Скорость приложения, количество серверов, т.е. бюджет на оборудование, скорость разработки, уровень разработчиков и т.п.