Один сервис — четыре стека: практический бенчмарк с SLO по p99 и Docker/JMeter
В статье я сравниваю четыре реализации одного и того же сервиса поверх PostgreSQL:
1. Spring MVC + JDBC
2. Spring WebFlux + R2DBC
3. Ktor + JDBC
4. Go + pgx
Все сервисы крутятся в Docker с одинаковыми ресурсными лимитами и прогоняются через один и тот же JMeter-план. Для каждого стека я ищу максимальный RPS при соблюдении SLO по p99-латентности.
Я подробно разбираю:
- как устроен стенд (Docker-compose, Postgres, Prometheus, Grafana, JMeter);
- как реализованы сервисы и чем различаются модели конкурентности;
- методологию нагрузочного тестирования и расчёта RPS@p99≤SLA;
- как реально ведут себя блокирующий стек, реактивный стек и Go под честной нагрузкой.
Читать далее