Введение 3
Постановка задачи 4
Обзор литературы 6
Глава 1. Описание продукта 8
1.1. Описание сервиса 8
1.2. Преимущества и существующие аналоги 11
Глава 2. Построение архитектуры 14
2.1. Требования к продукту 14
2.2. Модули приложения 15
2.3. Зависимости между модулями 17
2.4. Архитектура серверной части 18
Глава 3. Реализация проекта 21
3.1. Инфраструктура сервиса 21
3.2. Используемые технологии 24
3.3. Методы тестирования 27
3.4. Полученные результаты 29
Выводы 33
Заключение 34
Список используемой литературы 35
Успех любой компании зависит от того, насколько профессиональны ее сотрудники. Программы обучения не только предоставляют возможность сотрудникам улучшить свои профессиональные навыки, но и позволяют компаниям повысить производительность труда и, как следствие, увеличить прибыль.
Также они помогают снизить текучесть кадров, что, согласно исследованию Work Institute 2020 года, важно для чистой прибыли компании. Согласно отчету, добровольная текучесть кадров обходится американским предприятиям более чем в 630 миллиардов долларов в год. Сотрудники, у которых есть регулярные возможности учиться, развиваться и продвигаться по службе, с большей вероятностью останутся в компании [1].
Правильная организация обучения сотрудников в итоге позволяет получить экономическую выгоду для предприятия. Для сотрудников же повышение квалификации дает уверенность в своей компетентности, сохранении рабочего места и высокий профессиональный статус, который также положительно влияет на развитие предприятия.
Постановка задачи
Целью данной работы является разработка серверной части программного обеспечения (далее по тексту ПО) для задач найма и обучения сотрудников, предназначенной для применения компаниями с целью обеспечения эффективного роста навыков сотрудников и удобства работы HR-специалистов (human resources или человеческие ресурсы - далее по тексту HR).
Рост компетенций сотрудника реализуется с помощью построения индивидуального плана развития, содержащего навыки, необходимые для изучения на определенном уровне. В связи с этим необходимо спроектировать гибкую систему с набором материалов для обучения определенным навыкам. Под материалом понимается документ, содержащий в себе источники информации.
Так как помимо пользователей, их индивидуальных планов развития и системы навыков в сервисе подразумевается ряд другой функциональности (выдача мероприятий, вакансий и кандидатов на должность компании), не имеющей сильной зависимости от уже описанной, необходимо выбрать такую архитектуру ПО, чтобы она была высоко масштабируемой и расширяемой.
Таким образом, приложение должно иметь многомодульную архитектуру, структура которой позволяла бы добиться возможности имплементации новых компонентов системы с уникальной бизнес-логикой, не вызывая изменений в других компонентах и имея возможность быстрой интеграции с ними. Вместе с этим, нефункциональные требования к системе подразумевают низкую трудозатратность в разработке и содержании сервиса, что в свою очередь предполагает необходимость в использовании монолитной архитектуры [2]. Однако в данной работе необходимо предусмотреть шаги для масштабирования сервиса в высоконагруженной среде с минимальными трудозатратами. В этом случае монолитная архитектура не является подходящим решением, так как не подразумевает возможности горизонтального масштабирования, при использовании которого используется несколько баз данных, и данные распределяются между ними.
В рамках работы разработан полноценный HR-инструмент, который может успешно использоваться для решения поставленных задач. Архитектура серверной части удовлетворяет требованиям к высоким показателям расширяемости приложения. Так как система может быть запущена с использованием как монолитного запуска, так и распределенного, она справится с растущим числом пользователей с помощью горизонтального и вертикального масштабирования.
В настоящий момент разработанное решение связано с HR нуждами, однако спроектированная архитектура позволяет добавлять новые модули, не связанные с HR, выращивая единую экосистему компании, чего в полной мере не могут дать конкуренты.