Система управления игровыми компьютерными клубами
Бизнес составляющая проекта
Мощная компьютерная техника и быстрый интернет — это еще не все составляющие успешного компьютерного клуба. Очень важно грамотно организовать систему управления, не ограничивая пользователям доступ к необходимым ресурсам, и при этом обезопасить информацию и установленное программное обеспечение. Перед нашей компанией стояла задача создать комплексное решение, которое будет учитывать все особенности такой системы.
Данное решение является масштабируемым и в состоянии поддержать обслуживание как одного клуба, так и сети компьютерных клубов.
Краткое описание проекта
Система управления игровыми компьютерными клубами, разработанная нашей компанией, включает в себя следующие компоненты:
- серверную часть, которая хранит данные пользователей, тарифы, историю сессий, отвечает за авторизацию;
- приложение кассира, которое представлено в виде web-приложения и позволяет администратору клуба управлять учетными данными посетителей, пополнять баланс, удаленно управлять блокировкой рабочих станций;
- оболочку для клиентских машин, которая отвечает за управление оплаченным сеансом работы клиента клуба и блокировку станции по истечению оплаченного времени;
- Windows-службу, написанную на Java, которая отлавливает и пресекает попытки недобросовестных пользователей несанкционированно завершить процесс оболочки;
- инсталлятор: оболочка и Windows-служба передаются в виде исполняемого файла, который производит установку на пользовательскую машину необходимого программного обеспечения и дополнительную настройку системы. Установщик реализован с помощью инструмента Inno Setup.
Техническое описание проекта
Оболочка представляет собой desktop-приложение и реализована при помощи фреймворка Electron. Клиентская оболочка и Windows-служба работают в тесной связке и образуют в паре “приложение клиента”. Служба следит за процессом оболочки и перезапускает его каждый раз, когда он аварийно завершается либо несанкционированно закрыт через диспетчер задач. Также в службе реализовано слежение за продолжительностью сеанса. Когда оплаченное время пользователя заканчивается, служба сообщает оболочке, что нужно заблокировать доступ пользователя к Windows.
Служба устанавливается автоматически, во время инсталляции оболочки. Одновременно в системе Windows создается пользователь с ограниченными правами, который устанавливается в качестве “пользователя по умолчанию”. В качестве shell для новой учетной записи прописывается оболочка.
Для сохранения возможности проведения профилактических или других администраторских работ созданная Windows-служба будет пытаться восстановить процесс оболочки только в созданной во время установки учетной записи.
Связь между компонентами кассира, клиента и серверной части реализована в архитектуре REST.
Оператор клуба со своего рабочего места может заблокировать любую пользовательскую машину. Для этого приложение кассира пошлет запрос о блокировке на сервер, а сервер по webSocket передаст сообщение приложению клиента.
Компьютеры в приложении кассира идентифицируются по ip-адресу и идентификационному номеру, который формируется путем хэширования mac-адреса компьютера.
Данные о всех сессиях пользователей хранятся в базе данных MySQL и отображаются в приложении кассира.
Технологии
Stack:Apache Maven, Apache Tomcat, Tyrus, ReactJS, Redux, JNA
Programming languages: Java 11, JavaScript, Node.js
Frameworks: Electron, Spring Boot, Spring Data, Spring Security
Infrastructure: Gerrit, IntelliJ IDEA, Jira, Inno Setup, VM VirtualBox, JetBrains WebStorm
DB: MySQL
Test libraries: Junit, DBunit.
Other libraries: Lombok, JsonWebToken, Log4j2.
Protocols: WebSocket, REST.
Скриншоты
Особенности проекта
- разработка системы с нуля: от бизнес анализа до тестирования решения;
- четкое разделение работ на этапы, начиная с исследования имеющегося решения у заказчика до разработки прототипа и его тестирования;
- системное программирование: разработка Windows-службы на java;
- слежение и управление процессами операционной системы Windows;
- разработка desktop-приложения в “режиме киоска”. То есть приложение должно занимать всю площадь экрана, закрывая панель задач, в том числе, иметь максимальный приоритет перед другими приложениями. Приложение нельзя закрыть, свернуть, подвинуть;
- минимальная потребность в участии персонала клуба для установки и настройки приложения для пользовательских машин;
- еженедельные поставки заказчику промежуточных версий прототипа на протяжении всего времени разработки для проведения тестирования,
каждую неделю продукт демонстрировался заказчику, что позволяло ему быть в курсе хода работ и видеть, как на его глазах создается система.
Результат проекта
За три месяца был выполнен большой объем работ и решение передано заказчику:
- создано техническое задание на систему управления компьютерным клубом;
- спроектирована архитектура и подготовлено описание всего будущего решения;
- подготовлено описание прототипа — минимального набора работающих компонентов, демонстрирующего возможность решения;
- разработаны прототипы всех компонентов системы и инсталлятор десктопного приложения для клиентских машин;
- написан и внедрен в работу тест план с более 100 тест кейсами;
разработан и и полностью протестирован прототип.
Достижения компании на проекте
- успешно был решен ряд нетривиальных задач, связанных с Windows-службой;
- выполнялось сопровождение проекта на всех этапах работ: исследование имеющегося решения у заказчика, выявление потребностей, проведение бизнес анализа, написание технического задания, проектирование архитектурного решения, прототипирование будущей системы, непосредственная разработка прототипа, тестирование;
- поступающие к нам требования и комментарии заказчика, возникающие в процессе ознакомления с промежуточной версией прототипа или демонстрацией, быстро обрабатывались, обсуждались и, при необходимости, внедрялись.
Что делали на проекте, наши обязанности
В ходе работы над приложением команда выполняла следующие работы:
- исследование имеющегося решения у заказчика, выявление его потребностей, их обработка, анализ и фиксация;
- составление технического задания по обработанным требованиям;
- исследование существующих решений;
- проработка архитектуры и описание решения;
- разработка всех компонентов;
- разработка инсталлятора системы на машинах в клубах;
- интеграция компонентов;
- написание подробного тест плана, более чем 100 кейсов обработаны и внесены в план, для их прогона на постоянной основе;
- непрерывный процесс тестирования, в том числе на оборудовании заказчика,
- еженедельная демонстрация работ заказчикам;
- еженедельные поставки решения заказчику.
Свяжитесь с нами, чтобы обсудить Ваш IT-проект