Skip to content

Latest commit

 

History

History
32 lines (27 loc) · 3.6 KB

REPORT.md

File metadata and controls

32 lines (27 loc) · 3.6 KB

Использование CI

В качестве CI мы пользовались Github actions.
Наш CI состоит из следующих компонентов:

  • Запуск линтеров с проверкой синтаксиса. В качестве линтеров использовался cpplint
  • Сборка проекта
  • Запуск тестов для проверки работоспособности основных функций
  • Запуск valgrind для проверки утечек памяти

В течении семестра для паралельной работы мы использовали отдельные ветки для своей работы.Работающий продукт мы старались держать в ветке development и для обеспечения работоспособности проекта в ветке develpment в нее и был внедрен CI и всякий при слиянии веток запускали все вышеперечисленные программы и проверяли проект на работоспособность, соответствие code-style'у, отсуствие утечек памяти

Использование асинхронной и многопоточной работы системы

В нашем проекте подразумевается большое количество пользователей и по мере роста числа клиентов и увеличения количества запросов на наш сервер ложится очень большая нагрузка. Для ускорения работы сервера было принято решение использовать асинхронный многопоточный сервер на основе библиотеки boost asio. В результате внедрения наше серверное решение подходит для решения проблемы 10000 клиентов и способно использоваться в крупном продакшине. Посколько оптимизация баз данных не было целью нашего проекта, было принято решение для тестирования внести небольшие правки в наш сервер и использовать его в качестве eho-сервера потому, что при работе с БД именно она могла стать узким горлышком в скорости работы. В резултате мы произвели измерение, в котором считали среднее время ожидания пользователем ответа при разном количестве одновременно подключившихся пользователей и получили следующий результат:

Среднее время ожидания:
  • 10 юзеров: 0.000471601 с
  • 50 юзеров: 0.000480991 с
  • 100 юзеров: 0.000487994 с
  • 300 юзеров: 0.000545999 с

Большее количество пользователей, к сожалению, нам не позволяют запустить мощности наших машин, но в будущем возможно проведение более масштабных измерений на удаленных серверах и, возможно, произведение некоторых оптимизаций на их основе.