Skip to content

Repository files navigation

Review Assignment Due Date

Бэкенд-сервис для бронирования переговорок

Сервис позволяет управлять переговорками, просматривать доступные временные слоты на выбранную дату и бронировать их.


Запуск проекта

Для запуска всего окружения выполните в корне проекта:

docker-compose up --build

Или запуск через Makefile:

make up
make seed #заполнение тестовыми данными

Тестирование

go test ./internal/... -coverpkg=./internal/... -coverprofile=cover.out
go tool cover -func=cover.out #процент покрытия
go test -tags=integration ./tests/... #интеграционные тесты

Обоснование подхода генерации слотов бронирования

В соответствии с ТЗ, админ создает неизменяемое расписание (время начала, окончания и дни недели), а система сама делит его на фиксированные 30-минутные интервалы. Был выбран подход предварительной генерации на скользящее окно дат.

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

Запуск линтера

golangci-lint run

Нагрузочное тестирование (k6)

В проекте настроен сценарий нагрузочного тестирования, эмулирующий плавный разгон до 100 одновременных виртуальных пользователей для проверки эндпоинта получения слотов.

Запуск теста (предварительно будет установлена утилита k6):

go install go.k6.io/k6@latest
k6 run load_tests/slots_test.js

Результаты тестов под пиковой нагрузкой:

  • RPS (Запросов в секунду): ~490/s

  • Медианное время ответа: < 1ms

  • 95-й процентиль времени ответа (p95): ~1.76ms

  • Процент ошибок (http_req_failed): 0.00% (все запросы выполнены успешно)

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages