Обсудить проект
Обсудить проект

Услуги / High-load

Высоконагруженные и критичные к производительности системы

Closeflow проектирует серверные системы, которым приходится держать большой поток событий, быстро отвечать и не ломаться при перегрузке. Основа — Go, PostgreSQL, Redis и брокеры сообщений; поведение под нагрузкой проверяем измерениями, а не предположениями.

  • Go · PostgreSQL · Redis · Kafka
  • очереди · backpressure
  • k6 · p95/p99
  • договор · NDA

02Задачи

С какими задачами работаем

  • Высокий поток событий

    Приём и обработка событий, которые приходят быстрее, чем их можно обработать синхронно: очереди, пакетная обработка, параллельные воркеры.

  • Жёсткие требования к задержкам

    Ответ укладывается в бюджет по p95 и p99, а не только в среднее. Ищем, где уходит время: база, сеть, блокировки, сериализация.

  • Перегрузка и деградация

    Система должна отказывать предсказуемо: ограничивать вход, держать очередь ограниченной и не падать каскадом.

  • Корректность при повторах

    Брокер доставляет сообщение дважды, воркер падает на полпути. Побочный эффект должен сработать один раз.

  • Узкие места в PostgreSQL

    Индексы, планы запросов, блокировки, пулы соединений, горячие строки, партиционирование там, где оно оправдано.

  • Изоляция и ресурсы

    Запуск ненадёжного кода или тяжёлых задач с ограничениями по процессору, памяти и времени.

03Подход

Как мы это делаем

  1. Бюджет и гарантии

    Фиксируем, какая нагрузка и какие задержки ожидаются и что система обязана гарантировать при сбое.

  2. Простая архитектура сначала

    Начинаем с понятной схемы и измеряем. Усложнение — Kafka, шардирование, кэш — добавляем там, где измерение показало необходимость.

  3. Нагрузочные тесты

    Сценарии на k6 с реалистичным профилем, замер p95 и p99, а не только пропускной способности.

  4. Проверка инвариантов

    После нагрузки и сбоев сверяем итоговое состояние: нет потерянных и дублированных эффектов.

  5. Наблюдаемость

    Метрики, логи и трассировка, по которым видно очередь, задержки и ошибки до того, как пожалуется пользователь.

04Доказательство

execute-once: надёжность, которую можно воспроизвести

Execute-once — открытый репозиторий с воспроизводимыми тестами надёжности. В нём проверяются дублирующиеся события, сбои ретрансляции, метрики p95 и p99 и инварианты итогового состояния. Идея в том, чтобы утверждение «эффект произойдёт ровно один раз» можно было проверить запуском, а не словами.

Код: github.com/Husqvarnalox/execute-once.

05Эксперимент

sandboxd: экспериментальный проект

sandboxd — демон на Go для изоляции процессов: пространства имён Linux, cgroup v2, seccomp, ограниченный планировщик, HTTP API, потоковые логи через SSE и метрики Prometheus. Проект экспериментальный. Это не готовый коммерческий контейнерный движок, а работающая демонстрация того, как мы подходим к изоляции и ограничению ресурсов.

Код: github.com/Husqvarnalox/sandboxd.

06Стек

Инструменты

Язык

  • Go

Основной язык для высоконагруженных сервисов.

Данные

  • PostgreSQL
  • Redis

Очереди и события

  • Kafka / Redpanda
  • Asynq
  • outbox / inbox

Проверка и наблюдаемость

  • k6
  • Prometheus
  • Grafana
  • OpenTelemetry

Система не держит нагрузку?

Опишите профиль нагрузки, узкие места и ограничения. Скажем, что можно измерить и исправить, и берёмся ли.

Обсудить нагрузку

08Контакт

Расскажите, что
должно работать.

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

brief.form4 поля · 2 минуты

Бюджет необязательно