Научная статья на тему 'РАСПРЕДЕЛЕННАЯ ОТКАЗОУСТОЙЧИВАЯ МИКРОСЕРВИСНАЯ АРХИТЕКТУРА ПЛАТФОРМЫ ПО СТРИМИНГУ МУЗЫКИ'

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

CC BY
93
28
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СТРИМИНГ МУЗЫКИ / АРХИТЕКТУРА WEB-ПРИЛОЖЕНИЙ / РАСПРЕДЕЛЕННАЯ WEB-СИСТЕМА / ОТКАЗОУСТОЙЧИВАЯ WEBСИСТЕМА / ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ / АСИНХРОННАЯ ОБРАБОТКА ДАННЫХ / ОЧЕРЕДЬ СООБЩЕНИЙ / ХРАНИЛИЩЕ ДАННЫХ / МИКРОСЕРВИС / БАЛАНСИРОВЩИК НАГРУЗКИ / КЭШ / БАЗА ДАННЫХ / РЕПЛИКАЦИЯ

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

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

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

DESTRIBUTED RESILENT MICROSERVICE AFCHITECTURE OF MUSIC STREAMING PLATFORM

This article presents the microservice architecture of a streaming music platform on the Internet and describes a method for designing a reliable and fault-tolerant web-system. The result includes a high-level architecture of the components of such a system and proposals for the specific implementation of its individual components. The key feature of the modern systems design is pre-calculated scenarios for using the system, as well as a fault-tolerant layout of its individual components and services.

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

УДК 004.021

Невский А.А.

Ведущий инженер-программист, AWS Certified Architect Бакалавр, Белорусский государственный университет информатики и радиоэлектроники

Республика Беларусь, г. Минск

РАСПРЕДЕЛЕННАЯ ОТКАЗОУСТОЙЧИВАЯ МИКРОСЕРВИСНАЯ АРХИТЕКТУРА ПЛАТФОРМЫ ПО СТРИМИНГУ МУЗЫКИ

Аннотация

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

Ключевые слова

Стриминг музыки; архитектура web-приложений; распределенная web-система; отказоустойчивая web-

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

Neuski A.

Lead Software Engineer, AWS Certified Architect Bachelor's degree, Belarusian State University of Informatics and Radioelectronics

Republic of Belarus, Minsk

DESTRIBUTED RESILENT MICROSERVICE AFCHITECTURE OF MUSIC STREAMING PLATFORM

Abstract

This article presents the microservice architecture of a streaming music platform on the Internet and describes a method for designing a reliable and fault-tolerant web-system. The result includes a high-level architecture of the components of such a system and proposals for the specific implementation of its individual components. The key feature of the modern systems design is pre-calculated scenarios for using the system, as well as a fault-tolerant layout of its individual components and services.

Keywords

Music streaming; web-application architecture; distributed web-system; fault-tolerant web-system; software design; asynchronous data processing; message queue; data store; microservice; load-balancer;

cache; data base; replication.

Актуальность проблемы.

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

функционирования является критически важной задачей [9], в решении которой на помощь приходят современные методы проектирования web-платформ согласно микросервисной архитектуры [3].

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

Описание предложенного решения.

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

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

Рисунок 1 - Высокоуровневая архитектура платформы по стримингу музыки

Проблему коммуникации между сервисами призвана решить шина доставки сообщений - Message Bus - реализовать которую можно с помощью Apache Kafka [2]. Для контроля и управлением нагрузкой между нашими компонентами необходимо предусмотреть балансировщик нагрузки - Load Balancer. Так

как пользователи системы находятся в различных уголках планеты, чтобы обеспечить быструю загрузку и уменьшить объемы пересылаемого сетевого траффика, необходимо предусмотреть наличие сети доставки контента - Content Delivery Network (CDN) [1]. Также необходимо предоставить возможность поиска контента на проектируемой платформе и предусмотреть кэширование данных для увеличения отклика работы и нагрузки на критически важные компоненты системы такие как база данных [6].

Таким образом, выделим в нашей системе 3 актора:

• User (пользователь стримингового сервиса);

• Artist (артист, который загружает и предоставляет контент для платформы);

• Admin (администратор стриминговой платформы).

Ключевыми сервисами в проектируемой системе будут являться:

• Auth Service Manager (сервис авторизация / аутентификации);

• Search Service (сервис поиска контента по заданным критериям);

• Streaming Service (сервис управления стримингом контента);

• CDN - Content Delivery Network (сеть доставки контента);

• Subscription Service (сервис подписки на платформу);

• User Management Service (сервис управления пользователями);

• Payment Service (платежный сервис);

• Content Management Service (сервис управление контентом);

• Content Storage File System (файловая система для хранения контента);

• Content Upload Service (сервис загрузки контента);

• Content Processing Service (сервис обработки загруженного контента);

• Metrics Service (сервис статистики);

• Message Bus (шина доставки и пересылки сообщений);

• Database (база данных).

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

Для хранения мета-информации о контенте удобно использовать NoSQL документно-ориентированную базу данных MongoDB [4], для хранения самого контента любое физическое файловое хранилище (желательно на основе быстрых SSD дисков), а в качестве БД для записей пользователей -реляционную БД PostgeSQL [5]. Для придания системе свойств отказоустойчивости и повышенной надежности - асинхронную коммуникацию на основе шины сообщений, репликацию базы данных и наличие как минимум нескольких инстансов каждого сервиса [7].

Вывод.

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

Список использованной литературы:

1. Alex Xu. System Design Interview - An Insider's Guide. // CA, US.: Independently published, 2020. - С. 223

2. Apache Kafka. Open-source distributed event streaming platform. / [Электронный ресурс]. - Режим доступа: https://kafka.apache.org/ (дата обращения: 07.01.2023).

3. Heather Adkins, Betsy Beyer, Paul Blankinship, Piotr Lewandowski, Ana Oprea & Adam Stubblefield. Building Secure & Reliable Systems. // CA, US.: O'Reilly Media, 2020. - С. 125

4. MongoDB. Distributed database with flexible document data model. [Электронный ресурс]. Режим доступа: mongodb.com

5. PostgreSQL. Object-relational database system. / [Электронный ресурс]. - Режим доступа: https://www.postgresql.org/ (дата обращения: 07.01.2023).

6. Redis. In-memory data store. / [Электронный ресурс]. Режим доступа: redis.io (дата обращения: 07.01.2023).

7. Мартин Клеппман. Высоконагруженные приложения. Программирование, масштабирование, поддержка. // СПб.: Питер, 2020. - С. 185

8. Мартин Фаулер. Шаблоны корпоративных приложений. // М.: Вильямс, 2016. - С. 111.

9. Роберт Мартин. Чистая архитектура. Искусство разработки программного обеспечения. // СПб.: Питер, 2022. - С. 164

© Невский А.А., 2023

УДК 614.841

Савенкова В.А.

Магистрант ТГУ, г. Тольятти, Самарская обл., РФ

СОВРЕМЕННЫЕ ТЕНДЕНЦИИ И ПРИНЦИПЫ РАЗВИТИЯ ФУНКЦИОНИРОВАНИЯ СПАСАТЕЛЬНЫХ ВОИНСКИХ ФОРМИРОВАНИЙ ПОСТОЯННОЙ ГОТОВНОСТИ В МИРНОЕ ВРЕМЯ, В ПЕРИОД НЕПОСРЕДСТВЕННОЙ УГРОЗЫ АГРЕССИИ И В ВОЕННОЕ ВРЕМЯ

Аннотация

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

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

Ключевые слова

Деятельность спасательных воинских формирований постоянной готовности, эффективности деятельности спасательных воинских формирований постоянной готовности.

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

Также это современные тенденции и принципы развития группировки спасательных сил МЧС России, предназначенных для ликвидации чрезвычайных ситуаций различного характера. Кроме того, это методы развития формирований ГО и сил МЧС России [6]. Далее реорганизация формирований, где основной упор сделан на разграничение выполняемых задач, а также оптимизации численности воинских формирований, сил ГО и личного состава ПО МЧС России [1].

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