Описание системы


История изменений

Техническое описание системы

I. Наименование системы

1stOpus

II. Цель и миссия:

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

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

III. Архитектура системы

architecture

1. Пользовательский интерфейс

Мобильное приложение для смартфонов

2. Шлюз(API gateway)

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

3. Авторизационный сервис(auth-service)

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

4. Сервис администрирования(manager-service)

Сервис предоставляющий для администраторов управление различного контента,
создания push-уведомлений(новостных например), историй, новостей, вопросов-ответов,
управление менеджерами системы и т.д
Предоставляется web-интерфейс для администраторов системы с возможностью ролевой модели,
и закрепления за определенной ролью привилегий.

5. Сервис уведомлений(notification-service)

Сервис рассылки push уведомлений через firebase на мобильные устройства пользователей.

6. Банковский сервис(bank-service)

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

7. Сервис пользовательского контента(content-service)

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

8. Сервис устройств(device-service)

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

9. Внешний сервис(external-service)

Сервис, предоставляющий API для callback вызовов от банка по всем финансовым операциям.

10. Биллинговая система(killbill)

Сервис управления подписками пользователей

11. Сервис эмуляции банковского API(bank-stub)

Предоставляет API банковских сервисов с тестовыми данными

12. Сервис модерации контента(WebPurify)

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

13. Почтовый сервис рассылки уведомлений

В данный момент использует аккаунт gmail для отправки email уведомлений.
В дальнейшем необходимо изменить определенный почтовый сервис.

14. Сервис рассылки push уведомлений(firebase)

Firebase Cloud Messaging (FCM) - это бесплатный сервис рассылки push-уведомлений от Google, который позволяет
отправлять сообщения на устройства клиентов, выполняющие работу в приложениях Android, iOS и в веб-приложениях.

15. База данных

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

16. Системы безопасности

Меры защиты и транзакций, включая шифрование и механизмы аутентификации

17. Брокер сообщений

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

18. Система кэширования

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

19. Система мониторинга производительности системы

Мониторинг производительности - отслеживает различные аспекты производительности приложения, включая время отклика,
использование ресурсов (памяти, ЦПУ), пропускную способность сети и другие параметры.
Предоставляет инструменты для выявления и анализа проблем в приложении, такие как медленные запросы, утечки памяти, ошибки выполнения и другие.
Предоставление информации о производительности приложения в удобном и наглядном формате, как правило, с использованием графиков и диаграмм.

20. Система аудита событий(audit service)

Сервис, который обрабатывает события возникаемые в разных сервисах по действиям пользователя

21. Система агентов(амбасадоров)

Сервис, который работает с агентами(абмасаддорами), позволяет менеджеру создавать агентов,
настраивать персональные ссылки для дальнейшей монетизации.

22. Система real-time синхроинзации данных

Комплексное решение на базе kafka, kafka-connect(debezium), для “онлайн” синхронизации данных.
Имеется DWH, в которое реплицируются данные со всех БД.

IV. Характеристики системы

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

NOTE: Определяется ожидаемая производительность системы в терминах скорости, времени отклика и пропускной способности. Например, система должна обрабатывать не менее 1000 запросов в секунду с временем отклика менее 100 миллисекунд.

TODO

  • Надежность

NOTE: Определяются требования к надежности системы, включая уровень доступности (например, система должна быть доступна 99,99% времени) и способность к восстановлению после сбоев.
TODO

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

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

  • Безопасность

NOTE: Описываются меры безопасности, включая методы аутентификации, авторизации и шифрования данных, а также требования к защите от внешних атак.
TODO

  • Соответствие стандартам и законодательству

NOTE: Устанавливаются требования к соответствию системы отраслевым стандартам и законодательству (например, GDPR, HIPAA, PCI DSS).
TODO

  • Интеграция

NOTE: Определяются требования к интеграции системы с другими приложениями и сервисами, включая сторонние API и протоколы.
// TODO

  • Производительность базы данных

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

  • Масштабируемость базы данных

NOTE: Определяется способность базы данных масштабироваться для обработки роста данных и запросов.
// TODO

  • Требования к интерфейсу пользователя

NOTE: Устанавливаются требования к пользовательскому интерфейсу, включая поддержку разных типов устройств (десктопы, мобильные устройства), языков и доступность.
// TODO

  • Поддержка

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

  • Сроки и бюджет

NOTE: Определяются сроки разработки и бюджет на проект, а также ожидаемые этапы достижения целей.
// TODO

  • Требования к тестированию

NOTE: Устанавливаются требования к тестированию системы, включая методы, критерии успешности и план тестирования.
// TODO

  • Резервное копирование и восстановление

NOTE: Определяются стратегии резервного копирования данных и планы восстановления системы в случае сбоев.
// TODO

  • Сетевые требования

NOTE: Устанавливаются требования к сетевой архитектуре, пропускной способности и безопасности сети.
// TODO

==== V. Функциональность
- Банковские операции

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

  • Управление картами

Пользователи могут управлять своими банковскими картами, установки лимитов, активации/деактивация и т.д.

  • Получение информации о финансовых операциях

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

  • Удобный и интегрированный доступ

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

  • Мобильное приложение

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

  • Уведомления и оповещения

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

  • Безопасность и конфиденциальность

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

  • Поддержка и обслуживание

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

VI. Интерфейсы

  • Мобильное приложение

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

  • Уведомления по электронной почте и SMS

Система отправляет уведомления и оповещения клиентам посредством электронной почты и SMS,
включая уведомления о состоянии счета, подтверждении транзакций и текущих акциях.

  • Интерфейс администратора

Администраторы системы могут получать доступ к интерфейсу управления для управления пользователями,
контентом системы(новости, вопросы-ответы, акции, мероприятия и тд), настройками и мониторинга производительности системы.

  • Интерфейс службы поддержки

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

VII. Аппаратное и программное обеспечение

Аппаратное обеспечение
  1. Серверы

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

  2. Хранилище данных

    Для хранения данных, таких как информация о клиентах, транзакциях и истории операций,
    используются сетевые хранилища данных (SAN) или RAID-массивы для обеспечения
    отказоустойчивости и высокой производительности.

  3. Сетевое оборудование

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

  4. Мобильные устройства

    Мобильные клиенты системы могут использовать собственные смартфоны и планшеты для доступа к системе, поэтому они также считаются частью аппаратного обеспечения.
    Система поддерживает различные мобильные операционные системы, такие как iOS и Android.

Программное обеспечение
  1. Операционные системы

    Серверы, используемые для PostgreSQL и кластера Kubernetes,
    работают под управлением Linux-дистрибутивов, таких как Ubuntu.

  2. Серверное программное обеспечение

    Кластер Kubernetes(TODO) управляет контейнеризированными приложениями,
    обеспечивает автомасштабирование и управление ресурсами.

    Система использует серверное программное обеспечение, включая веб-серверы (Nginx 1.25.3),
    СУБД (PostgreSQL 15, Redis 7), Контейнер приложений java(Tomcat 9, Jetty 10),
    программный брокер сообщений(RabbitMQ).

    Приложения системы разрабатываются с использованием языка программирования Java версий 11 и 17.
    Это позволяет создавать надежные и высокопроизводительные приложения.

  3. Клиентское программное обеспечение

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

  4. Системы безопасности и аутентификации:

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

  5. ПО для мониторинга и аналитики

    Для отслеживания производительности и анализа данных система использует
    специализированное программное обеспечение для мониторинга и аналитики - APM(Application Performance Monitoring).

  6. Разработческие инструменты

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

VIII. Сетевая архитектура

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

  1. Облачный Центр обработки данных (ЦОД)

    Система развернута в облачном ЦОДе Prime Cloud
    ЦОД предоставляет вычислительные ресурсы, хранилище и сетевую инфраструктуру.

  2. Сеть ЦОДа

    Сеть в ЦОДе обеспечивает связь между серверами и компонентами системы.
    Это включает в себя виртуальные сети, подсети и сетевые правила для безопасности

  3. Firewalls и сетевые правила

    Для обеспечения безопасности сети в ЦОДе используются брандмауэры и сетевые правила.
    Они контролируют доступ к ресурсам и обеспечивают сегментацию сети.

  4. Интеграция с API банка

    Для взаимодействия с API банка, система использует сеть,
    через защищенное соединение (например, VPN или протокол HTTPS).
    Это позволяет системе отправлять запросы и получать данные от банка.

IX. Управление и мониторинг системы

Управление системой
  1. Автоматизация операций

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

  2. Управление версиями приложений

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

  3. Управление доступом

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

  4. Мониторинг состояния системы

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

  5. Аварийное восстановление

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

  6. Планирование ресурсов

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

Мониторинг системы
  1. Сбор и анализ метрик

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

  2. Оповещения и алерты

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

  3. Сбор и анализ журналов

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

  4. Графические интерфейсы мониторинга

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

  5. Журнал событий

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

X. Безопасность системы

Методы аутентификации
  1. Система предоставляет аутентификацию по SMS-коду

    Для нефинансовой части система предоставляет долгосрочный токен на основе подтверждения
    ОТП кода полученного через СМС.

  2. Логинь и пароль

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

  3. Использование биометрических данных

    Для дополнительной безопасности могут использоваться биометрические данные,
    такие как сканеры отпечатков пальцев(touchId) или распознавание лица(faceId). Данная опция будет
    опциональная, и будет привязываться к финансовым операциям.

Методы авторизации
  1. Ролевая авторизация

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

Шифрование данных
  1. Шифрование в покое (данных в хранилище):

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

  2. Шифрование в движении (транспортное шифрование)

    Все данные, передаваемые между клиентами и серверами системы,
    шифруются с использованием SSL/TLS протоколов. Это обеспечивает конфиденциальность
    данных во время передачи.

Защита от вторжений
  1. Брандмауэры и сетевые правила

    Брандмауэры и сетевые правила контролируют доступ к системе и сегментируют сеть для минимизации рисков

XI. План тестирования

NOTE: Главная цель тестирования - проверить работоспособность системы и её соответствие требованиям безопасности, производительности и функциональности.

Типы тестирования

В плане тестирования указываются различные типы тестирования, такие как:

  • Функциональное тестирование.
  • Тестирование производительности.
  • Тестирование безопасности.
  • Тестирование совместимости.
  • Тестирование восстановления после сбоев.
Методы тестирования
  • Ручное тестирование.
  • Автоматизированное тестирование.
  • Тестирование в реальных условиях.
Критерии приемки

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

  • Отсутствие критических уязвимостей в результатах сканирования безопасности.
  • Соответствие функциональных требований и ожиданий пользователям.
Тестовые сценарии

NOTE: Описываются конкретные сценарии и сценарии использования, которые будут протестированы

  • Регистрация нового пользователя.
  • Проведение банковской транзакции.
  • Восстановление данных после сбоя.
  • и т.д
Ресурсы для тестирования

NOTE: Определяются необходимые ресурсы, включая тестовое окружение, оборудование и тестовые данные

Расписание тестирования

NOTE: Определяется временной график тестирования, включая даты начала и окончания каждого этапа тестирования

Ответственные лица

NOTE: Устанавливаются ответственные лица, включая тестировщиков, администраторов и менеджеров проекта

Процедуры тестирования

NOTE: Описываются конкретные процедуры, шаги и инструкции для проведения тестов

Ожидаемые результаты

NOTE: Определяются ожидаемые результаты для каждого тестового сценария, включая успешные и неуспешные исходы

Отчет о тестировании

NOTE: План также может включать в себя требования по документированию результатов тестирования и составлению отчетов.

XII. Резервное копирование и восстановление

NOTE: Резервное копирование и восстановление данных являются критически важными аспектами обеспечения надежности и доступности системы

Стратегии резервного копирования данных
  1. Регулярные резервные копии

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

  2. Хранение на отдельных устройствах

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

  3. Шифрование резервных копий

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

  4. Мониторинг резервного копирования

    Резервное копирование данных мониторится, и администраторы получают уведомления
    в случае неудачных попыток создания резервных копий

  5. Аудит резервного копирования

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

Методы восстановления системы
  1. Полное восстановление

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

  2. Восстановление из инкрементальных копий

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

  3. Тестирование восстановления

    Регулярно проводятся тесты восстановления для проверки работоспособности процедур восстановления.
    Тесты могут включать восстановление на отдельных тестовых серверах.

  4. Процедуры восстановления данных

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

  5. Система отслеживания инцидентов:

    Для оперативного реагирования на инциденты и сбои восстановления внедрена
    система отслеживания инцидентов.

  6. Обучение персонала

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

  7. План восстановления

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

XIII. План внедрения

NOTE: План внедрения системы определяет последовательность этапов, сроки и ответственных лиц, которые будут участвовать в процессе внедрения

XIV. Служба поддержки и обслуживание

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

XV. Заключение

Выводы
  • Система предоставляет полноценные банковские услуги, что обеспечивает удобство и преимущества для клиентов.

  • Техническая инфраструктура системы (кластер Kubernetes, база данных PostgreSQL, Docker-образы Java)
    обеспечивает стабильность и масштабируемость.

  • Меры безопасности и защиты данных хорошо разработаны и реализованы,
    что обеспечивает конфиденциальность и целостность информации.

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

  • Усилить мониторинг безопасности и системы управления инцидентами для оперативного
    реагирования на угрозы и инциденты безопасности.

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

  • Постоянно обучать и совершенствовать навыки персонала, чтобы обеспечить качественную
    техническую поддержку.

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

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

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