Описание системы
История изменений
Техническое описание системы
I. Наименование системы
1stOpus
II. Цель и миссия:
1st OPUS предназначен для быстрого масштабирования, предлагая вознаграждения, бонусы и преимущества,
соответствующие целевой аудитории, поддерживаемые и продвигаемые промоутерами 1st OPUS.
Поддержка артистов, доступ к платформе для развития талантов, маркетинговая поддержка и развитие
индустрии развлечений создают уникальную привлекательность бренда, которая способствует быстрому внедрению.
Обеспечить легкий доступ к развлечениям, к образу жизни музыкантов/артистов, через современную цифровую
платформу, с возможностью проведения денежных операций (оплата услуг, пополнение/списание с карты) через
приложения Apple, Android и веб-приложения, создав творческое сообщество единомышленников.
III. Архитектура системы
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. Аппаратное и программное обеспечение
Аппаратное обеспечение
-
Серверы
Для обеспечения высокой производительности и надежности системы используются выделенные
серверы в Prime Cloyd, на которых размещаются приложения и базы данных. -
Хранилище данных
Для хранения данных, таких как информация о клиентах, транзакциях и истории операций,
используются сетевые хранилища данных (SAN) или RAID-массивы для обеспечения
отказоустойчивости и высокой производительности. -
Сетевое оборудование
Для обеспечения связи между серверами и клиентскими устройствами системы используется сетевое оборудование, включая маршрутизаторы, коммутаторы и брандмауэры.
-
Мобильные устройства
Мобильные клиенты системы могут использовать собственные смартфоны и планшеты для доступа к системе, поэтому они также считаются частью аппаратного обеспечения.
Система поддерживает различные мобильные операционные системы, такие как iOS и Android.
Программное обеспечение
-
Операционные системы
Серверы, используемые для PostgreSQL и кластера Kubernetes,
работают под управлением Linux-дистрибутивов, таких как Ubuntu. -
Серверное программное обеспечение
Кластер Kubernetes(TODO) управляет контейнеризированными приложениями,
обеспечивает автомасштабирование и управление ресурсами.Система использует серверное программное обеспечение, включая веб-серверы (Nginx 1.25.3),
СУБД (PostgreSQL 15, Redis 7), Контейнер приложений java(Tomcat 9, Jetty 10),
программный брокер сообщений(RabbitMQ).Приложения системы разрабатываются с использованием языка программирования Java версий 11 и 17.
Это позволяет создавать надежные и высокопроизводительные приложения. -
Клиентское программное обеспечение
Для мобильных устройств используется клиентское программное обеспечение,
разработанное под разные операционные системы.
Это мобильные приложения, обеспечивающие доступ к системе. -
Системы безопасности и аутентификации:
Для обеспечения безопасности и защиты данных система использует программное
обеспечение для аутентификации пользователя(авторизационный сервис) и взаимодействие
с API банка по защищенным каналам. -
ПО для мониторинга и аналитики
Для отслеживания производительности и анализа данных система использует
специализированное программное обеспечение для мониторинга и аналитики - APM(Application Performance Monitoring). -
Разработческие инструменты
Для разработки, тестирования и поддержки системы используются разработческие инструменты и среды разработки.
VIII. Сетевая архитектура
NOTE: Сетевая архитектура обеспечивает связность, безопасность и высокую производительность системы, гарантируя, что взаимодействие с API банка и управление контейнеризированными приложениями в Kubernetes кластере происходит эффективно и надежно.
-
Облачный Центр обработки данных (ЦОД)
Система развернута в облачном ЦОДе Prime Cloud
ЦОД предоставляет вычислительные ресурсы, хранилище и сетевую инфраструктуру. -
Сеть ЦОДа
Сеть в ЦОДе обеспечивает связь между серверами и компонентами системы.
Это включает в себя виртуальные сети, подсети и сетевые правила для безопасности -
Firewalls и сетевые правила
Для обеспечения безопасности сети в ЦОДе используются брандмауэры и сетевые правила.
Они контролируют доступ к ресурсам и обеспечивают сегментацию сети. -
Интеграция с API банка
Для взаимодействия с API банка, система использует сеть,
через защищенное соединение (например, VPN или протокол HTTPS).
Это позволяет системе отправлять запросы и получать данные от банка.
IX. Управление и мониторинг системы
Управление системой
-
Автоматизация операций
Для обеспечения эффективной управляемости системы используются средства автоматизации, такие как сценарии
развертывания, конфигурации. Это позволяет быстро реагировать на изменения и управлять ресурсами системы. -
Управление версиями приложений
Процесс управления версиями приложений включает в себя развертывание новых версий,
откат на предыдущие версии в случае проблем и контроль обновлений -
Управление доступом
Управление доступом в системе включает в себя управление пользователями, ролями и правами доступа. Это обеспечивает безопасность данных и приложений
-
Мониторинг состояния системы
Система мониторинга следит за работой всех компонентов системы и собирает метрики производительности, состояния и доступности.
-
Аварийное восстановление
В случае сбоев или аварий система предоставляет средства для восстановления, включая возможность восстановления из резервных копий и резервных кластеров.
-
Планирование ресурсов
Система управления ресурсами позволяет оптимизировать выделение ресурсов, что особенно важно в условиях кластера Kubernetes.
Мониторинг системы
-
Сбор и анализ метрик
Система мониторинга собирает метрики производительности, такие как нагрузка на сервер, использование памяти,
сетевой трафик и другие. Анализ метрик позволяет выявлять узкие места и проблемы. -
Оповещения и алерты
При нарушении установленных пороговых значений метрик система генерирует оповещения и тревоги для администраторов. Это помогает оперативно реагировать на проблемы
-
Сбор и анализ журналов
Журналы системы, включая журналы приложений и операционной системы, собираются и анализируются для выявления ошибок, событий и отклонений
-
Графические интерфейсы мониторинга
Для удобства администрирования и мониторинга системы могут использоваться графические интерфейсы и дашборды, предоставляющие информацию в удобной форме.
-
Журнал событий
Система ведет журнал событий, включая операции пользователя, изменения в системе и другие события, что помогает отслеживать действия и аудит безопасности.
X. Безопасность системы
Методы аутентификации
-
Система предоставляет аутентификацию по SMS-коду
Для нефинансовой части система предоставляет долгосрочный токен на основе подтверждения
ОТП кода полученного через СМС. -
Логинь и пароль
При выполении финансовых операций - пользователь устаналивает логинь/пароль,
с помощью которого он будет выполнять все банковские операций -
Использование биометрических данных
Для дополнительной безопасности могут использоваться биометрические данные,
такие как сканеры отпечатков пальцев(touchId) или распознавание лица(faceId). Данная опция будет
опциональная, и будет привязываться к финансовым операциям.
Методы авторизации
- Ролевая авторизация
Система использует ролевую модель авторизации, где каждому пользователю или группе назначаются
определенные роли и разрешения, определяющие их доступ к различным функциям системы.
Шифрование данных
-
Шифрование в покое (данных в хранилище):
Данные, хранящиеся в базе данных PostgreSQL, шифруются с использованием сильных
алгоритмов шифрования. Это обеспечивает защиту данных даже в случае физического
доступа к хранилищу. -
Шифрование в движении (транспортное шифрование)
Все данные, передаваемые между клиентами и серверами системы,
шифруются с использованием SSL/TLS протоколов. Это обеспечивает конфиденциальность
данных во время передачи.
Защита от вторжений
- Брандмауэры и сетевые правила
Брандмауэры и сетевые правила контролируют доступ к системе и сегментируют сеть для минимизации рисков
XI. План тестирования
NOTE: Главная цель тестирования - проверить работоспособность системы и её соответствие требованиям безопасности, производительности и функциональности.
Типы тестирования
В плане тестирования указываются различные типы тестирования, такие как:
- Функциональное тестирование.
- Тестирование производительности.
- Тестирование безопасности.
- Тестирование совместимости.
- Тестирование восстановления после сбоев.
Методы тестирования
- Ручное тестирование.
- Автоматизированное тестирование.
- Тестирование в реальных условиях.
Критерии приемки
Устанавливаются критерии, которые система должна удовлетворить, чтобы быть принятой.
- Отсутствие критических уязвимостей в результатах сканирования безопасности.
- Соответствие функциональных требований и ожиданий пользователям.
Тестовые сценарии
NOTE: Описываются конкретные сценарии и сценарии использования, которые будут протестированы
- Регистрация нового пользователя.
- Проведение банковской транзакции.
- Восстановление данных после сбоя.
- и т.д
Ресурсы для тестирования
NOTE: Определяются необходимые ресурсы, включая тестовое окружение, оборудование и тестовые данные
Расписание тестирования
NOTE: Определяется временной график тестирования, включая даты начала и окончания каждого этапа тестирования
Ответственные лица
NOTE: Устанавливаются ответственные лица, включая тестировщиков, администраторов и менеджеров проекта
Процедуры тестирования
NOTE: Описываются конкретные процедуры, шаги и инструкции для проведения тестов
Ожидаемые результаты
NOTE: Определяются ожидаемые результаты для каждого тестового сценария, включая успешные и неуспешные исходы
Отчет о тестировании
NOTE: План также может включать в себя требования по документированию результатов тестирования и составлению отчетов.
XII. Резервное копирование и восстановление
NOTE: Резервное копирование и восстановление данных являются критически важными аспектами обеспечения надежности и доступности системы
Стратегии резервного копирования данных
-
Регулярные резервные копии
Система регулярно создает полные и инкрементальные резервные копии данных, включая базу
данных PostgreSQL, файлы конфигурации, и другие важные данные. Регулярность может быть установлена
в ежедневное, еженедельное и ежемесячное выполнение. -
Хранение на отдельных устройствах
Созданные резервные копии хранятся на физически отдельных устройствах или в
удаленных местах для обеспечения защиты от физических повреждений. -
Шифрование резервных копий
Все резервные копии данных шифруются для обеспечения конфиденциальности данных
даже в случае утечки физических носителей. -
Мониторинг резервного копирования
Резервное копирование данных мониторится, и администраторы получают уведомления
в случае неудачных попыток создания резервных копий -
Аудит резервного копирования
Ведется журнал событий и аудит резервного копирования для отслеживания и
анализа процессов создания резервных копий.
Методы восстановления системы
-
Полное восстановление
В случае серьезного сбоя системы или данных, производится полное восстановление с использованием последней полной резервной копии. Это может потребовать остановки системы.
-
Восстановление из инкрементальных копий
Если необходимо восстановить данные с точностью до определенного момента во времени, применяются инкрементальные копии данных.
-
Тестирование восстановления
Регулярно проводятся тесты восстановления для проверки работоспособности процедур восстановления.
Тесты могут включать восстановление на отдельных тестовых серверах. -
Процедуры восстановления данных
Документированы и утверждены процедуры восстановления данных, которые разработаны
с учетом различных сценариев восстановления, включая катастрофические ситуации. -
Система отслеживания инцидентов:
Для оперативного реагирования на инциденты и сбои восстановления внедрена
система отслеживания инцидентов. -
Обучение персонала
Персонал системы обучен и знаком с процедурами восстановления,
и может провести восстановление при необходимости -
План восстановления
Установлен документированный план восстановления системы, который включает
в себя последовательность шагов, ответственных лиц и контактные данные для
срочной связи в случае неотложных ситуаций.
XIII. План внедрения
NOTE: План внедрения системы определяет последовательность этапов, сроки и ответственных лиц, которые будут участвовать в процессе внедрения
XIV. Служба поддержки и обслуживание
NOTE: Служба технической поддержки и обслуживания системы играет важную роль в обеспечении надежной и бесперебойной работы системы, предоставляющей банковские услуги.
XV. Заключение
Выводы
-
Система предоставляет полноценные банковские услуги, что обеспечивает удобство и преимущества для клиентов.
-
Техническая инфраструктура системы (кластер Kubernetes, база данных PostgreSQL, Docker-образы Java)
обеспечивает стабильность и масштабируемость. -
Меры безопасности и защиты данных хорошо разработаны и реализованы,
что обеспечивает конфиденциальность и целостность информации.
Рекомендации
-
Регулярно обновлять и анализировать производительность системы, чтобы поддерживать
высокую доступность и производительность. -
Усилить мониторинг безопасности и системы управления инцидентами для оперативного
реагирования на угрозы и инциденты безопасности. -
Разработать и провести план восстановления после сбоев и катастрофических ситуаций,
чтобы минимизировать простои и потери данных. -
Постоянно обучать и совершенствовать навыки персонала, чтобы обеспечить качественную
техническую поддержку.
Итог
-
Система представляет собой инновационное решение, которое упрощает жизнь клиентов,
предоставляя им доступ к банковским услугам в единой платформе. -
С учетом надежности и безопасности системы, она готова к успешному внедрению и обслуживанию
в продуктивной среде. - В заключение, система готова к предоставлению клиентам удовольствия от использования и
уверенности в безопасности своих данных и финансов.