Тип работы:
Предмет:
Язык работы:


Реализация сервиса для генерации отчетности по корпоративному обучению сотрудников

Работа №126721

Тип работы

Бакалаврская работа

Предмет

информационные системы

Объем работы31
Год сдачи2023
Стоимость4290 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
17
Не подходит работа?

Узнай цену на написание


Введение 5
1. Постановка задачи 7
2. Обзор существующего решения и технологий 8
2.1. Существующая система внутри платформы 8
2.1.1. Функциональность 8
2.1.2. Достоинства и недостатки 9
2.2. OLTP и OLAP подходы 11
2.3. CDC и реплицирование 12
2.4. Вывод 13
2.5. Использованные технологии 14
2.5.1. Greenplum 14
2.5.2. Debezium 14
2.5.3. Airflow 15
2.5.4. Golang 15
3. Требования 16
4. Архитектура 17
4.1. Взаимодействие модулей системы 17
4.2. Сценарии использования 18
4.3. Сервис генерации отчетов 20
5. Особенности реализации 22
5.1. Применение CDC-событий и реплицирование 22
5.2. Формирование агрегированных таблиц для отчетов ... 22
5.3. Оркестрация процессов в Airflow 23
5.4. Поддержка HTTP API и асинхронных запросов в Kafka24
5.5. Развертывание сервиса и мониторинг 24
6. Тестирование и апробация 26 
Заключение
Список литературы

Необходимым атрибутом любого развивающегося бизнеса является качественное обучение и повышение квалификаций сотрудников компании. В наше время эффективным способом обучать персонал с минимальными затратами является дистанционный формат и специальные системы, которые позволяют получать знания удаленно. Организация обучения на таких платформах предполагает использование готовых материалов и уроков с адаптацией под конкретную компанию при необходимости, передачу доступов сотрудникам, выставление сроков про-хождения, проверку усвоенных знаний. Это позволяет специалистам различных сфер (например, бухгалтерии, права, кадров, финансов, госзакупок) получать доступ к корпоративной базе знаний, соответствующей профстандартам, закреплять знания через тесты и проходить аттестацию, не отрываясь от рабочего процесса.
При работе с системами дистанционного обучения руководителю компании предоставляется особый доступ, на основе которого формируется учебное заведение. Руководитель может приглашать на обучение сотрудников, назначать им программы и тесты, следить за прогрессом и успеваемостью учеников. Возможность просматривать статистику по обучению является важной составляющей функциональности платформы, поскольку от ее показателей зависят дальнейшие действия руководителя - например, в случае неудовлетворительных результатов сотрудников стоит мотивировать назначение нового обучения. При этом для обеспечения удобного и надежного пользовательского опыта данные должны корректно вычисляться и отображаться на странице за приемлемое время.
У одной организации в сфере профессиональных СМИ, разрабатывающей платформу для онлайн-обучения сотрудников, возникла необходимость в создании страницы с отображением отчетности для руководителей. Планируемый раздел должен как показывать общую статистику по обучению всех сотрудников (их активность, вовлеченность, успеваемость), так и формировать детальные отчеты с описанием пройденных программ и тестов по каждому ученику. Реализация этой функциональности также осложняется большим объемом данных: в рамках одного учебного заведения может быть более 10000 пользователей и десятки тысяч назначений обучений и прохождений программ. Важно своевременно обрабатывать информацию, при этом не затрачивая много времени на загрузку раздела.
Данная работа посвящена созданию сервиса, предоставляющего необходимую информацию для отображения на странице со статистикой по обучению пользователей и генерирующего подробные отчеты, с учетом описанных выше сложностей.


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В ходе данной работы были получены следующие результаты.
• Произведен обзор существующего решения, которое перестало удовлетворять требованиям бизнеса ввиду роста объема данных. Выполнено сравнение OLTP- и OLAP-подходов, механизмов CDC и репликации; сделан вывод о том, что OLAP-хранилище вместе с CDC позволяет эффективно хранить и агрегировать данные, не нагружая источник.
• Выявлены и сформулированы требования к системе: функциональные (типы генерируемых отчетов, показателей и статистик), а также нефункциональные (способы взаимодействия с системой, частота обновления данных, время ответа).
• Спроектирована архитектура решения, включающая в себя компоненты по загрузке, агрегации и экспорту данных, а также сервис, предоставляющий интерфейс для получения данных отчетов.
• Реализована следующая функциональность:
— настроены процессы загрузки данных из источника в аналитическое хранилище Greenplum с помощью Airflow и Debezium;
— созданы таблицы с агрегированной статистикой и написан Airflow DAG для их обновления и загрузки в транзакционную базу сервиса PostgreSQL;
— реализован сервис генерации статистики по отчетам на Go, предоставляющий как синхронное HTTP API, так и асинхронно обрабатывающий очередь запросов в Kafka, покрыт модульными тестами и настроен мониторинг.
• Проведено нагрузочное и приемочное тестирование, в результате чего были исправлены дефекты и недоработки со стороны бизнес- логики и производительности системы.
Сервис был внедрен и использован для визуализации статистики по обучению сотрудников.



[1] ACID.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://en.wikipedia.org/wiki/ACID.
[2] ASP.NET Web APIs.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://dotnet.microsoft.com/en-us/apps/aspnet/apis.
[3] Apache Airflow.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://airflow.apache.org/.
[4] Apache Hadoop. — [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://hadoop.apache.org/.
[5] Apache Kafka.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://kafka.apache.org/.
[6] Apache Sqoop. — [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://sqoop.apache.org/.
[7] ClickHouse. — [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://clickhouse.com/docs/ru.
[8] Debezium.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://debezium.io/.
[9] Dockerfile reference.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://docs.docker.com/engine/reference/builder/.
[10] The ELK Stack: From the Creators of Elasticsearch | Elastic. — [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://www.elastic.co/what-is/elk-stack.
[11] Fastest cpu secs Go versus Java. — [Электронный ресурс]. — (дата обращения: 01.05.2023). URL: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/go.html.
[12] GORM - The fantastic ORM library for Golang. — [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://gorm.io/.
[13] The Go programming language.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://go.dev/.
[14] Goroutines. — [Электронный ресурс].— (дата обращения:
01.05.2023). URL: https://go.dev/doc/effective_go#
goroutines.
[15] Grafana: The open observability platform | Grafana Labs.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://grafana.com/.
[16] Greenplum.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://greenplum.org/.
[17] Greenplum Platform Extension Framework (PXF).— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://greenplum.docs.pivotal.io/6-7/pxf/overview_pxf.html.
[18] Kafka Connect.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://docs.confluent.io/platform/current/connect/index.html.
[19] Kleppmann Martin. Designing Data-Intensive Applications.—
Beijing : O’Reilly, 2017.- ISBN:978-1-4493-7332-0.-
URL: https://www.safaribooksonline.com/library/view/
designing-data-intensive-applications/9781491903063/.
[20] Kubernetes Documentation. — [Электронный ресурс]. — (дата обращения: 01.05.2023). URL: https://kubernetes.io/docs/home/.
[21] Massive Parallel Processing.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://en.wikipedia.org/wiki/Massively_parallel.
[22] Online analytical processing. — [Электронный ресурс]. — (дата обращения: 01.05.2023). URL: https://en.wikipedia.org/wiki/Online_analytical_processing.
[23] Online transaction processing. — [Электронный ресурс]. — (дата обращения: 01.05.2023). URL: https://en.wikipedia.org/wiki/Online_transaction_processing.
[24] PostgreSQL: The world’s most advanced open source database.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://www.postgresql.org/.
[25] Prometheus - Monitoring system time series database. — [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://prometheus.io/.
[26] Representational state transfer. — [Электронный ресурс]. — (дата обращения: 01.05.2023). URL: https://en.wikipedia.org/wiki/Representational_state_transfer.
[27] Sarama is a Go library for Apache Kafka. — [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://github.com/Shopify/sarama.
[28] Understanding Change Data Capture (CDC): Definition,
Methods and Benefits.— [Электронный ресурс].— (дата
обращения: 01.05.2023). URL: https://airbyte.com/blog/
change-data-capture-definition-methods-and-benefits.
[29] Vertica. — [Электронный ресурс]. — (дата обращения: 01.05.2023). URL: https://en.wikipedia.org/wiki/Vertica.
[30] What is change data capture (CDC)?— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://learn.microsoft.com/en-us/sql/relational-databases/track-changes/about-change-data-capture-sql-server.
[31] fasthttp. — [Электронный ресурс]. — (дата обращения: 01.05.2023). URL: https://github.com/valyala/fasthttp.
[32] A reflection based dependency injection toolkit for Go. — [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://github.com/uber-go/dig.
[33] werf: Эффективный и консистентный CI/CD с Kubernetes.— [Электронный ресурс].— (дата обращения: 01.05.2023). URL: https://ru.werf.io/.


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ