C++ Moscow №0: «бэкенд на плюсах для нормальных людей»
Докладчик: Данил Сидорук
Видео: YouTube
Презентация: Online
В рамках доклада был совершен обзор трех самых популярных и функциональных плюсовых веб-фреймворков: drogon, oat++ и userver.
Кроме того, на всех из них был реализован крошечный pastebin сервис с минимальной функциональностью: добавление, обновление, удаление и получение паст. Репозитории: drogon_sample, oat_sample, userver_sample.
С каждым годом писать прикладной код на плюсах становится все проще: у нас появляются такие удобные библиотеки, которые можно просто взять и использовать без необходимости мучаться с сборкой, страдать от отвратительной документации и просто излишней сложности, такие как nlohmann/json, C++ Requests и fmt
Но как только нам хочется хоть для личных нужд написать даже простой бэкенд.. На нас сваливается с одной стороны Boost.Beast — слишком низкоуровневый для большинства задач, с другой userver, только собрать который уже может оказаться большим испытанием. Кажется, проще плюнуть и написать все за один вечер на питоне.
Но, может, плюсовой экосистеме все же есть, что нам предложить? Сравним альтернативы и ответим на вопрос, бэкенд на плюсах для нормальных людей — миф или реальность?
Место | Фреймворк | Lines of code | % |
---|---|---|---|
1 | userver | 162 | 100 |
2 | Drogon | 165 | 101 |
3 | Oat++ | 310 | 191 |
Для простоты сравнение производилось следующим образом:
- В базу данных помещалось содержание заголовочного файла array
- Производилось стрессовое тестирование с помощью инструмента
drogon_ctl
с следующими параметрами: количество запросов — 10 тысяч, количество одновременных соединений — 100, количество потоков — 4. Сначала сервера разогревались тестовым прогоном, дальше делалось еще пять прогонов, и за результат бралось их среднее.
Место | Фреймворк | Requests per second | % |
---|---|---|---|
1 | userver | 39547 | 100 |
2 | Drogon | 35890 | 90 |
3 | Oat++ | 31512 | 79 |