Разгоняем сервис до 1M RPS: Java/Spring Boot под нагрузкой. Создаем воспроизводимую базовую реализацию и наблюдаемость.

Коротко: во второй части цикла мы не разгоняем сервис и не пытаемся получить красивую цифру RPS. Мы собираем воспроизводимый базовый стенд, на котором любой следующий результат можно объяснить: фиксируем API и набор данных, делаем три явно переключаемых пути чтения, добавляем метрики, структурированные логи, трассировки, Grafana и k6, а затем проверяем, что для каждого запроса можем … —Читать далее—

Loading

Разгоняем сервис до 1M RPS: с чего начинается производительность

Оглавление Введение Когда в статье написано, что система “держит 1M RPS”, а рядом нет ни размера ответа, ни latency, ни уровня ошибок, ни описания стенда, ни состояния кэша, ни правил подсчета успешных запросов, то инженерной ценности у такой цифры почти нет. Пропускная способность системы сам по себе не говорит, держит ли система реальный пользовательский трафик, … —Читать далее—

Loading

p99 глазами разработчика: как измерять, считать, расследовать и реально снижать tail latency

Оглавление Введение Перцентили latency – это не “красивая статистика”, а способ говорить про пользовательский опыт и предсказуемость системы там, где среднее время ответа на запрос (avg) системно врет. Практика крупных распределенных систем показывает: даже редкие (например, 1%) “медленные” ответы на уровне компонентов превращаются в массовые (десятки процентов) “медленные” ответы на уровне сервиса, если запросы имеют … —Читать далее—

Loading

Версионирование REST API в Spring Boot: практическое руководство

Оглавление Введение Версионирование API – ключевой механизм, позволяющий эволюционировать веб-сервисы без нарушения работы существующих клиентов. Многие крупные компании версионируют свои REST API, чтобы внести изменения в сервис, не ломая интеграции для внешних потребителей. С другой стороны, поддержка нескольких версий API приводит к усложнению кода и увеличению объема поддержки. Если нет прямой необходимости, лучше избегать множества … —Читать далее—

Loading

CQRS в распределенных системах

Оглавление Введение Command-Query Responsibility Segregation (CQRS) – это архитектурный паттерн, предлагающий раздельное ведение операций модификации данных (команд) и операций чтения данных (запросов). Идея возникла из принципа Command-Query Separation (CQS) Бертрана Мейера, где каждый метод либо команда (изменяет состояние), либо запрос (возвращает данные), но не совмещает и то и другое. CQRS развивает эту идею на уровне … —Читать далее—

Loading