Рейтинг скоростных веб-фреймворков 2020 -21




Озадачился я на днях выбором решения для серверного бэкенда одного нагруженного конструктора сайтов. Текущая архитектура построена на популярном MVC-фреймворке на старом-добром PHP. Такой фреймворк хорош для быстрой разработки большого количества функционала и быстрого старта, все мы это знаем. Только после этого старта довольно скоро наступает момент, когда возникают узкие места, которые требует повышенной производительности и обычный универсальный фреймворк уже не справляется.

В процессе поиска решения мне попалась аналитика скорости обработки запросов по большому количеству фреймворков, существующих на сегодняшний день. Я выбрал из них те, у кого больше 5000 звезд на GitHub и которые обрабатывают больше 150 000 запросов в секунду. В формуле подсчета рейтинга второй параметр взят в квадрате, поскольку флуктуации звезд куда амплитудней.

В итоге формула такая:
Количество звезд на GitHub * (Количество запросов в секунду) ^ 2

Жирным выделены лидеры по скорости обработки запросов.

1. Beego [go] — 359 279
2. Gin [go] — 252 895
3. FastHttp [go] — 420 498
4. Echo [go] — 262 940
5. ASP.NET Core [csharp] — 263 725
6. Workerman [php] — 349 897
7. Mux [go] — 263 585
8. Koa [js] — 159 032
9. Perfect [swift] — 218 634
10. Chi [go] — 274 507
11. Fastify [js] — 177 372
12. Falcon [python] — 208 805
13. Bottle [python] — 168 776
14. Ktor [kotlin] — 162 842
15. Сowboy [elixir] — 160 063

Замеры количества запросов в секунду проводились с помощью wrk. Механизм подсчета основан на ответах в трех сценариях:
— открытие главной страницы с ответом 200 и пустым содержанием
— открыите страницы /user с ответом 200 и пустым содержанием
— открыите страницы /user/__ID__ с ответом 200 и c __ID__ в содержании

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

Источник данных: GitHub и web-frameworks

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




К сожалению, не доступен сервер mySQL