Skip to content

george007361/VKedu-Databases-REST_backend_GO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VK Education курс по СУБД

Курсовой проект: Разработка сервера приложения, реализующего rest api

Цель задания

Нужно разработать сервер приложения, реализующий rest api из этой спецификации

Требования

  • субд - PostgreSQL, чем более новая версия, тем лучше, но только стабильные релизы;
  • язык любой;
  • фрэймворк любой;
  • драйвер для СУБД любой (если пишете на Go, рекомендую https://github.com/jackc/pgx);
  • не советую использовать orm, так как велика вероятность, что не потянете нагрузочное тестирование;
  • Важное требование Весь DDL базы: таблицы, индексы, представления, триггеры, хранимые процедуры и функции и тп должны лежать в одном файле: db/db.sql. Так как ваш проект не подразумевает инкрементального наката на сервер, а каждый раз клонируется и собирается с нуля, то и смысла делить на несколько файлов миграций нет.

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

Репозиторий с тестирующей программой - разобраться в нем, научиться компилить и запускать - тоже часть вашей задачи по разработке проекта!

Особенности проведения тестов:

  • Все проверки проходят последовательно;
  • Docker-контейнеру установлено ограничение по количеству используемой оперативной памяти в 2Gb
  • docker run -d --memory 2G --log-opt max-size=5M --log-opt max-file=3 --name park_perf -p 5000:5000 park
  • На сборку контейнера отводится не более 15-ти минут - аккуратно и внимательно настраивайте .dockerignore;
  • На заполнение базы отводится не более 15-ти минут;
  • Нагрузка идёт 10 раз в течение 1-ой минуты в 8 потоков. Учитывается лучший результат.
  • Ограничение на размер репозитория 5MB аккуратно и внимательно настраивайте .gitignore. Если закоммитите что-то большое, например, скомпиленный бинарь, то придется чистить историю, либо пересоздавать репозиторий!

Сдача

Отдельных дедлайнов для всех видов тестирования проекта нет, но сдаются они последовательно. То есть нагрузочное тестирование не будет оцениваться пока не будет пройдено функциональное тестирование.

Баллы начисляются по следующему принципу:

  • 35 rps за балл, но не более 30 баллов
  • Если результат устраивает, то нужно написать мне в телеграм: "Я студент(ка) <Фамилия Имя>, вот мой репозиторий <ссылка> баллы устраивают, хочу сдать проект". Я посмотрю содержимое файла db/db.sql, задам вопросы и после получения удовлетворительных ответов проставлю данные в ведомость.

Основные грабли:

Перед сдачей на стэнде проверьте следующее:

  • Последняя версия проекта должна успешно клонироваться командой: git clone --single-branch "<ссылка на ваш репозиторий>"
  • Проект должен успешно собираться командой: docker build --no-cache -t park
  • Репозиторий с тестирующей программой: https://github.com/mailcourses/technopark-dbms-forum
  • проверьте локально функциональное тестирование: ./technopark-dbms-forum func -u http://localhost:5000/api -r report.html
  • проверьте заполнение базы: ./technopark-dbms-forum fill --url=http://localhost:5000/api --timeout=900 Если у вас слабый компьютер, то увеличьте таймаут для локально сборки, но обязательно добейтесь хоть раз полного заполнения, чтобы ловить ошибки на стэнде!
  • проверьте нагрузочное тестирование: ./technopark-dbms-forum perf --url=http://localhost:5000/api --duration=600 --step=60

Возможные ошибки и их причины:

  • Не удалось заполнить базу - этап заполнения упал по таймауту, нужно оптимизировать заполнение базы, следите за избыточными индексами
  • Произошла ошибка во время нагрузочного тестирования - проверяйте нагрузочное тестирование локально и ищите ошибку
  • Не удалось собрать Docker-контейнер - проверяйте, что проект корректно клонируется и собирается командами описанными выше
  • Не удалось получить данные из репозитория - что-то не так со ссылкой на репозиторий или с правами доступа к нему, проверьте, что он успешно клонируется командой выше

About

Repo for db course proj 2 sem TP web

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages