В качестве 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 с
Большее количество пользователей, к сожалению, нам не позволяют запустить мощности наших машин, но в будущем возможно проведение более масштабных измерений на удаленных серверах и, возможно, произведение некоторых оптимизаций на их основе.