Научная статья на тему 'РАЗРАБОТКА АРХИТЕКТУРНЫХ РЕШЕНИЙ ДЛЯ СОЗДАНИЯ ВЕБ-СЕРВИСА ПО СОПРОВОЖДЕНИЮ И ПУБЛИКАЦИИ НАУЧНЫХ ПРОЕКТОВ'

РАЗРАБОТКА АРХИТЕКТУРНЫХ РЕШЕНИЙ ДЛЯ СОЗДАНИЯ ВЕБ-СЕРВИСА ПО СОПРОВОЖДЕНИЮ И ПУБЛИКАЦИИ НАУЧНЫХ ПРОЕКТОВ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
25
1
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
подходы к разработке / веб-разработка / архитектура приложений / approaches to development / web development / application architecture

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — А Д. Рахманин

В рамках выполненного исследования определены ключевые архитектурные подходы, которые обеспечат эффективное взаимодействие между пользователями, упростят управление проектами на всех этапах их жизненного цикла и позволят удобно публиковать результаты научных исследований. В результате проведенного исследования сформулированы ключевые концепции для решения поставленной задачи, определён стек технологий, а также разработана архитектурная модель веб-сервиса, которая обеспечивает оптимальное и эффективное использование ресурсов, доступных в рамках реализации данного веб-приложения.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — А Д. Рахманин

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DEVELOPMENT OF ARCHITECTURAL SOLUTIONS FOR THE CREATION OF A WEB SERVICE FOR THE MAINTENANCE AND PUBLICATION OF SCIENTIFIC PROJECTS

As part of the completed research, key architectural approaches have been identified that will ensure effective interaction between users, simplify project management at all stages of their life cycle and make it convenient to publish the results of scientific research. As a result of the conducted research, key concepts for solving the task were formulated, a technology stack was defined, and an architectural model of a web service was developed that ensures optimal and efficient use of resources available within the framework of the implementation of this web application.

Текст научной работы на тему «РАЗРАБОТКА АРХИТЕКТУРНЫХ РЕШЕНИЙ ДЛЯ СОЗДАНИЯ ВЕБ-СЕРВИСА ПО СОПРОВОЖДЕНИЮ И ПУБЛИКАЦИИ НАУЧНЫХ ПРОЕКТОВ»

РАЗРАБОТКА АРХИТЕКТУРНЫХ РЕШЕНИЙ ДЛЯ СОЗДАНИЯ ВЕБ-СЕРВИСА ПО СОПРОВОЖДЕНИЮ И ПУБЛИКАЦИИ НАУЧНЫХ ПРОЕКТОВ

А.Д. Рахманин, студент Московский авиационный институт (Россия, г. Москва)

DOI:10.24412/2500-1000-2024-9-5-39-45

Аннотация. В рамках выполненного исследования определены ключевые архитектурные подходы, которые обеспечат эффективное взаимодействие между пользователями, упростят управление проектами на всех этапах их жизненного цикла и позволят удобно публиковать результаты научных исследований. В результате проведенного исследования сформулированы ключевые концепции для решения поставленной задачи, определён стек технологий, а также разработана архитектурная модель веб-сервиса, которая обеспечивает оптимальное и эффективное использование ресурсов, доступных в рамках реализации данного веб-приложения.

Ключевые слова: подходы к разработке; веб-разработка; архитектура приложений.

Ежедневно в нашем мире множество людей стремятся развиваться в научной сфере, совершать открытия и делиться своими достижениями. Научное сообщество регулярно пополняется различными статьями, докладами и исследованиями. В связи с этим, актуальным будет создание общего сервиса для размещения и сопровождения публикаций и проектов в научной тематике.

Актуальность, разрабатываемого интернет-сервиса объясняется несколькими важными факторами:

1) Рост научной активности.

В современном мире наблюдается увеличение научной активности как в академической среде, так и в корпоративном секторе. Больше исследований и проектов создают необходимость в эффективном учете и управлении ими.

2) Необходимость в эффективной управленческой деятельности.

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

3) Прозрачность и отчетность.

В научной среде важно иметь прозрачные механизмы отчетности и учета результатов исследований для научных организаций, университетов, грантодателей и государственных органов.

4) Содействие инновациям.

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

5) Академическая конкуренция.

В условиях жесткой конкуренции в научном мире, эффективное управление проектами и научными достижениями становится неотъемлемой частью успеха ученых и научных организаций.

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

Сервис должен обладать следующим набором функционала:

- возможность публикации научных работ и их дальнейшее отслеживание;

- возможность формировать отчеты в удобных форматах данных на основе публикаций;

- социальное взаимодействие между пользователями: участники могут объединяться друг с другом, добавляя в научные сообщества и указывая других пользователей в качестве соавторов;

- сервис должен иметь фидбек-систему: пользователи могут оставлять отзывы и комментарии на работы других людей;

- сервис должен предоставлять проработанную систему публикации и отправки работ на различные научные мероприятия.

Для обеспечения сервиса необходимой функциональностью будут рассмотрены различные варианты архитектурных решений и технологий разработки. При выборе того или иного метода проектирования будут учитываться следующие критерии:

1. Масштабируемость.

Система должна легко адаптироваться к увеличению нагрузки, как по количеству пользователей, так и по объему данных, обеспечивая стабильную работу при росте требований.

2. Производительность.

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

3. Безопасность.

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

4. Надежность и отказоустойчивость.

Сервис должен быть спроектирован с

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

5. Модульность и гибкость.

Архитектурное решение должно поддерживать возможность лёгкой модификации и расширения функциональности сервиса без значительных изменений основной структуры.

6. Удобство разработки и сопровождения.

Выбор технологий должен учитывать доступность документации, поддерживае-мость, а также наличие сообщества разработчиков, что облегчит разработку, сопровождение и обновление сервиса.

Первоначальной задачей стоит исследование различных архитектурных подходов для дальнейшего выбора наиболее опти-

мального для разработки. Будут рассмотрены несколько наиболее известных.

1. Монолитная архитектура

Монолитная архитектура представляет

собой единую, неразделённую систему, в которой все компоненты веб-приложения, включая пользовательский интерфейс, бизнес-логику и доступ к данным, объединены в одном программном модуле. В этом подходе все функциональные элементы взаимодействуют напрямую внутри одной кодовой базы, что упрощает разработку и тестирование на ранних этапах, но создаёт сложности при масштабировании и поддержке. Монолитные приложения развёртываются как единое целое, что может привести к тому, что даже небольшие изменения в одном из компонентов требуют повторного развертывания всей системы. Этот тип архитектуры обычно менее гибок и чувствителен к росту нагрузки, так как любой сбой в одном из компонентов может привести к недоступности всего приложения.

2. Микросервисная архитектура

Микросервисная архитектура представляет собой децентрализованную архитектурную модель, в которой приложение разделено на множество независимых сервисов, каждый из которых отвечает за выполнение одной конкретной задачи или функции. Эти микросервисы взаимодействуют друг с другом через чётко определённые интерфейсы, такие как API, что обеспечивает низкую связность между компонентами и возможность их автономного развертывания и масштабирования. Каждый микросервис может использовать разные технологии и подходы к хранению данных, что увеличивает гибкость системы. Микросервисная архитектура улучшает отказоустойчивость, поскольку сбои в одном сервисе не влияют на работу других компонентов, но усложняет управление распределёнными системами, требуя развитых механизмов для координации, мониторинга и обеспечения согласованности данных.

3. Serverless-архитектура (бессерверная архитектура)

Serverless архитектура (бессерверная архитектура) представляет собой облач-

ную модель разработки, при которой серверная часть приложения управляется облачным провайдером, а разработчики сосредотачиваются исключительно на написании бизнес-логики в виде функций, запускаемых по требованию. В этом подходе ресурсы автоматически масштабируются в зависимости от нагрузки, а оплата взимается только за фактическое использование вычислительных мощностей, что делает его экономически эффективным и гибким решением. Отсутствие необходимости управлять инфраструктурой снижает операционные затраты и упрощает развертывание приложений, однако может ограничивать возможности для настройки серверной части и создавать задержки при первом запуске функций (cold starts). Serverless архитектура особенно подходит для приложений с нерегулярной нагрузкой, событийно-ориентированных систем и приложений, требующих высокой гибкости и масштабируемости.

4. Event-driven архитектура (событийно-ориентированная архитектура)

Event-driven архитектура (событийно-ориентированная архитектура) основана на асинхронной обработке событий, где отдельные компоненты системы реагируют на события, происходящие в приложении, и взаимодействуют через обмен сообщениями. В этой модели события генерируются при изменении состояния системы или по инициативе пользователя, а далее передаются в соответствующие обработчики, которые выполняют заданные действия. Такая архитектура способствует снижению связанности между компонентами, улучшает масштабируемость и отказоустойчивость системы, так как каждый компонент работает независимо и обрабатывает события в своей области ответственности. Event-driven подход особенно эффективен в приложениях с высокими требованиями к скорости обработки данных и динамическому изменению нагрузки, однако сложность управления последовательностью событий и согласованностью данных может увеличить требования к инфраструктуре и мониторингу.

Микросервисная архитектура была выбрана для разработки веб-сервиса, предна-

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

После того как были рассмотрены различные архитектурные решения и выбран наиболее подходящий в рамках текущей работы вариант, будут исследованы конкретные технологии разработки, которые будут применены при создании сервиса.

В качестве языка программирования для разработки серверной части сервиса был выбран Golang. Golang представляет собой язык программирования, разработанный Google и впервые представленный в 2009 году, который выделяется своей высокой производительностью, простотой и эффективностью для создания масштабируемых и надежных программных решений. Go предлагает встроенную поддержку конкурентного программирования через механизмы горутин и каналов, что делает его особенно подходящим для разработки высоконагруженных распределенных систем и микросервисов. Язык характеризуется минималистичным синтаксисом, статической типизацией и автоматическим управлением памятью, что способствует быстрому компилированию и упрощению разработки. Его стандартная библиотека предоставляет широкие возможности для работы с сетевыми протоколами и HTTP-сервисами, что способствует созданию производительных и устойчивых приложений.

1. Высокая производительность.

Go обеспечивает компиляцию в машинный код, что гарантирует отличную производительность и низкие накладные расходы на выполнение. Это особенно важно для микросервисов, которые должны эф-

фективно обрабатывать высокие нагрузки и обеспечивать быструю обработку запросов.

2. Поддержка конкурентности.

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

3. Простота и лаконичность.

Язык предлагает минималистичный и понятный синтаксис, что снижает сложность кода и облегчает его поддержку. Это позволяет разработчикам быстрее разрабатывать и внедрять новые микросервисы, а также упрощает работу в команде.

4. Эффективное управление памятью.

Go включает автоматическое управление памятью с помощью сборщика мусора, что снижает вероятность утечек памяти и упрощает разработку. Это важно для обеспечения стабильности и надежности микросервисов, работающих в условиях интенсивных нагрузок.

5. Скорость компиляции.

Go известен своей быстрой компиляцией, что ускоряет процесс разработки и тестирования. Быстрая обратная связь позволяет разработчикам оперативно вносить изменения и быстро развертывать новые версии микросервисов.

Далее будут рассмотрены несколько существующих фреймворков на Golang для разработки микросервисных веб-приложений.

1. Gin

Gin - это высокопроизводительный веб-фреймворк для Go, известный своей простотой и скоростью. Он предоставляет ми-нималистичный интерфейс для создания HTTP-сервисов и поддерживает маршрутизацию, middleware и обработку ошибок.

Преимущества: Высокая производительность, простой синтаксис, поддержка маршрутизации и middleware, отличная документация.

2. Echo

Echo - это фреймворк для создания веб-приложений и микросервисов, который

акцентирует внимание на высокой производительности и простоте использования. Он включает в себя функции для маршрутизации, обработки запросов и middleware.

Преимущества: Высокая скорость обработки запросов, поддержка различных middleware, гибкость и расширяемость.

3. Revel

Revel - это полный фреймворк для веб-разработки на Go, который включает в себя всё необходимое для создания сложных приложений, включая маршрутизацию, обработку запросов и работу с шаблонами.

Преимущества: Встроенная поддержка множества функций, таких как маршрутизация и работа с шаблонами, поддержка модульного подхода к разработке.

4. Go-kit

Go-kit - это набор инструментов и библиотек для построения микросервисной архитектуры, который ориентирован на создание надежных и масштабируемых сервисов. Он включает в себя поддержку для распределённых систем, инструментов мониторинга и средств для работы с коммуникацией.

Преимущества: Высокий уровень абстракции для построения микросервисов, поддержка интеграции с инструментами для мониторинга и трассировки.

5. Micro

Micro - это фреймворк и платформа для разработки микросервисов, включающая в себя инструменты для создания, развертывания и управления микросервисами. Он поддерживает создание API, сервисные сетевые запросы и управление конфигурацией.

Преимущества: Полный набор инструментов для работы с микросервисами, поддержка для создания и управления сервисами, встроенные функции для работы с конфигурацией и маршрутизацией.

6. Gorilla

Gorilla - это набор инструментов и библиотек для работы с HTTP в Go. Он включает в себя такие модули, как маршрутизатор Gorilla Mux и WebSocket Gorilla WebSocket, которые полезны для создания микросервисов.

Преимущества: Гибкая маршрутизация, поддержка WebSocket, расширяемость и гибкость.

7. Chi

Chi - это лёгкий и модульный маршрутизатор для Go, который оптимизирован для работы с микросервисами и поддерживает middleware, а также простую маршрутизацию.

Преимущества: Лёгкий и быстрый маршрутизатор, поддержка middleware, простота использования.

В качестве фреймворка для разработки микросервисного веб-приложения был выбран Gin благодаря его выдающимся характеристикам, которые способствуют созданию высокопроизводительных и эффективных сервисов. Gin предоставляет минималистичный интерфейс с высокой скоростью обработки HTTP-запросов, что критично для обеспечения производительности в условиях микросервисной архитектуры. Его продвинутая поддержка маршрутизации, middleware и обработки ошибок позволяет легко интегрировать и масштабировать отдельные микросервисы, обеспечивая гибкость и удобство разработки. Кроме того, богатая документация и активное сообщество способствуют ускоренному процессу разработки и обеспечению поддержки, что делает Gin оптимальным выбором для реализации надежных и масштабируемых микросервисных решений.

В качестве базы данных, используемой в разработке была выбрана реляционная база данных PostgreSQL. PostgreSQL предоставляет ряд ключевых преимуществ для использования в микросервисном веб-приложении. Она обеспечивает высокую производительность и гибкость благодаря поддержке сложных SQL-запросов, расширяемости и множеству встроенных функций, таких как поддержка транзакций, индексов и сложных типов данных. Благодаря возможности масштабирования с помощью расширений, таких как Citus, PostgreSQL подходит для работы с большими объемами данных и сложными запросами в распределённых системах. Её надежность и активное сообщество обеспечивают стабильную работу и поддерж-

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

Для реализации кэширования был выбран Redis. Redis представляет собой нереляционную базы данных и является оптимальным вариантом в контексте текущей научной работы благодаря своей высокой производительности, простоте использования и поддержке различных структур данных, таких как строки, списки, множества и хэши. Эта база данных в памяти обеспечивает исключительную скорость обработки запросов, что делает её идеальной для кэширования данных, управления сессиями и реализации очередей задач в реальном времени. Redis также предлагает механизмы для репликации, устойчивости к сбоям и управления данными, что позволяет эффективно масштабировать приложения и поддерживать их высокую доступность. Эти характеристики делают Redis подходящим выбором для приложений, требующих быстрой и надежной обработки данных в распределённых системах.

Также в технологический стек для разработки веб-сервиса был добавлен docker для контейнеризации сервисов. Docker -это платформа для автоматизации развертывания, масштабирования и управления приложениями в контейнерах, которая позволяет упаковывать приложения и их зависимости в изолированные контейнеры, обеспечивая их консистентное и повторяемое выполнение в любых средах. Основные преимущества Docker включают возможность быстро развертывать и переносить приложения между различными средами, уменьшение проблем с зависимостями и совместимостью, а также упрощение процесса масштабирования и управления конфигурацией. Docker был выбран для разработки микросервисного веб-приложения из-за своей способности обеспечить изоляцию и независимость каждого микросервиса, что упрощает их развертывание, обновление и масштабирование, а также повышает гибкость и эф-

фективность разработки и эксплуатации приложения.

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

Основные фреймворки для разработки клиентских веб-сервисов предоставляют набор инструментов и библиотек, упрощающих создание интерактивных и динамичных пользовательских интерфейсов. Вот некоторые из наиболее популярных и широко используемых фреймворков:

1. React

Разработанный Facebook, React является библиотекой для создания пользовательских интерфейсов. Он использует компонентный подход и виртуальный DOM для эффективного обновления UI.

Преимущества: Высокая производительность, поддержка одностраничных приложений (SPA), богатая экосистема, поддержка серверного рендеринга.

2. Angular

Angular - это полный фреймворк, разработанный Google, который предоставляет целостное решение для создания сложных веб-приложений. Он включает в себя систему шаблонов, двухстороннюю привязку данных и встроенные инструменты для тестирования и маршрутизации.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Преимущества: Полноценный фреймворк с богатым набором встроенных функций, поддержка TypeScript, высокая масштабируемость и поддержка сложных приложений.

3. Vue.js

Vue.js - это прогрессивный фреймворк для создания пользовательских интерфейсов, который можно использовать как для создания одностраничных приложений, так и для интеграции в существующие проекты.

Преимущества: Простота интеграции, гибкость, понятный синтаксис, поддержка

реактивного программирования и компонентного подхода.

4. Svelte

Svelte - это современный фреймворк, который компилирует компоненты в высокоэффективный JavaScript-код, минимизируя необходимость в виртуальном DOM и тем самым улучшая производительность.

Преимущества: Высокая производительность, простота синтаксиса, отсутствие необходимости в виртуальном DOM, компактный и эффективный результат компиляции.

Vue.js был выбран для разработки клиентской части веб-сервиса благодаря своей простоте, гибкости и лёгкости интеграции. Этот фреймворк предоставляет интуитивно понятный синтаксис и мощные возможности для создания динамичных и отзывчивых интерфейсов, что облегчает разработку и поддержку приложения. Vue.js также позволяет эффективно управлять состоянием и взаимодействовать с данными через свою реактивную систему, обеспечивая плавный пользовательский опыт. Благодаря хорошей документации и активному сообществу, Vue.js упрощает процесс обучения и интеграции, а также предлагает богатый набор инструментов и плагинов, которые могут ускорить разработку и повысить функциональность веб-приложения.

В качестве UI-библиотеки был выбран Vuetify. Использование Vuetify предоставляет ряд значительных преимуществ для разработки веб-приложений на Vue.js, включая доступ к богатому набору компонент Material Design, что обеспечивает единообразие и современный вид интерфейсов. Vuetify упрощает процесс создания визуально привлекательных и функциональных пользовательских интерфейсов благодаря встроенным стилизациям и предустановленным компонентам, таким как формы, таблицы и диалоговые окна. Его гибкость и настраиваемость позволяют легко адаптировать элементы под специфические требования проекта, а также обеспечивают поддержку темы и адаптивного дизайна. Кроме того, библиотека предоставляет обширную документацию и активное сообщество, что облегчает реше-

ние возникающих вопросов и ускоряет чения надежного и масштабируемого вза-разработку. имодействия между пользователями. Раз-

В заключение, проведенное исследова- работанные решения способствуют упро-ние подтвердило важность выбора пра- щению управления проектами на всех эта-вильной архитектуры для создания веб- пах их жизненного цикла и обеспечивают сервиса, предназначенного для сопровож- удобную публикацию результатов науч-дения и публикации научных проектов. ных исследований. Эти архитектурные Определенные архитектурные подходы, решения позволяют создать гибкую и эф-включая микросервисную архитектуру, фективную платформу, которая может использование гибких баз данных и со- адаптироваться к меняющимся требовани-временных фреймворков, были обоснова- ям и поддерживать высокое качество раны как наиболее эффективные для обеспе- боты с научными проектами.

Библиографический список

1. Новиков А. Микросервисы на практике: Паттерны и подходы. - СПб.: БХВ, 2017. -240 с.

2. Содерберг В. Микросервисы. Как проектировать, разрабатывать и внедрять. - СПб., 2016. - 304 с.

3. Браун М. Микросервисы. Паттерны и практики построения систем. - ДМК Пресс, 2018. - 288 с.

4. Кац М. Микросервисы: Рецепты и примеры реализации. - СПб.: БХВ, 2019. - 320 с.

5. Козлов В. Микросервисы. Архитектурные подходы и реализация. - СПб.: Питер, 2020. - 272 с.

6. Ричардс К. Go. Программирование на языке Go. - СПб.: БХВ-Петербург, 2020. -328 с.

7. Норман Э. Го. Программирование на языке Go. - СПб.: Питер, 2018. - 312 с.

8. Ван С. Основы программирования на Go. - ДМК Пресс, 2019. - 304 с.

9. Линч А. Гolang. Эффективное программирование. - СПб.: БХВ-Петербург, 2021. -336 с.

10. Симон С. Мастерство программирования на Go. - СПб.: Питер, 2020. - 288 с.

11. Лонг Б. Go. Продвинутые техники и подходы. - ДМК Пресс, 2021. - 320 с.

DEVELOPMENT OF ARCHITECTURAL SOLUTIONS FOR THE CREATION OF A

WEB SERVICE FOR THE MAINTENANCE AND PUBLICATION OF SCIENTIFIC

PROJECTS

A.D. Rachmanin, Student Moscow Aviation Institute (Russia, Moscow)

Abstract. As part of the completed research, key architectural approaches have been identified that will ensure effective interaction between users, simplify project management at all stages of their life cycle and make it convenient to publish the results of scientific research. As a result of the conducted research, key concepts for solving the task were formulated, a technology stack was defined, and an architectural model of a web service was developed that ensures optimal and efficient use of resources available within the framework of the implementation of this web application.

Keywords: approaches to development; web development; application architecture.

i Надоели баннеры? Вы всегда можете отключить рекламу.