ПРОЕКТИРОВАНИЕ ЭФФЕКТИВНОЙ АРХИТЕКТУРЫ ИНФОРМАЦИОННОЙ СИСТЕМЫ УПРАВЛЕНИЯ И ХРАНЕНИЯ ДАННЫХ ПОЛЬЗОВАТЕЛЕЙ
ПРОЕКТИРОВАНИЕ ЭФФЕКТИВНОЙ АРХИТЕКТУРЫ ИНФОРМАЦИОННОЙ СИСТЕМЫ УПРАВЛЕНИЯ И ХРАНЕНИЯ ДАННЫХ ПОЛЬЗОВАТЕЛЕЙ
Невский Алексей Александрович
ведущий инженер-программист, AWS Certified Architect Бакалавр, Белорусский государственный университет информатики и радиоэлектроники,
Республика Беларусь, г. Минск
EFFECTIVE ARCHITECTURE DESIGN OF INFORMATION SYSTEM FOR PROCESSING AND STORING USER DATA
Aliaksei Neuski
Lead Software Engineer, AWS Certified Architect Bachelor's degree, Belarusian State University of Informatics and Radioelectronics,
Belarus, Minsk
АННОТАЦИЯ
В данной статье представлена эффективная архитектура информационной системы управления и хранения данных пользователей для web-приложения и описан способ проектирования такой системы. Результат включает в себя высокоуровневую архитектуру компонентов такой системы и базовую реализацию на языке программирования Java. При проектировании современных систем стоит заранее учитывать особенности потоков данных внутри нее, а также взаимосвязь ее компонентов.
ABSTRACT
This article presents the effective architecture of an information system for managing and storing user data for a web-application and describes the method of designing such a system. The result includes a high-level architecture of the system components and a basic implementation in the Java programming language. When designing modern systems, it is worth considering in advance the features of data flows within it, as well as the relationship of its components.
Ключевые слова: архитектура web-приложений; информационная система; web-система; проектирование программного обеспечения; поток данных; хранилище данных; данные пользователей; кэш; база данных; инкапсуляция.
Keywords: web-application architecture; information system; web-system; software design; data flow; data store; user data; cache; data base; encapsulation.
Актуальность проблемы.
Каждый сайт в сети Интернет, который каким-либо образом взаимодействует с реальным пользователем, нуждается в надежной информационной системе [2] с эффективным хранением и обработкой данных этих пользователей. Архитектура такой системы должна быть построена с учетом современных стандартов по хранению и обработки персональных данных, вызовов и кибер-угроз, а также отказоустойчивости. Особые сложности возникают, когда доступ к данным требуется предоставить нескольким департаментам внутри одной организации либо вообще за ее пределами, так как доступ к таким личным, конфиденциальным данным, которые охраняются законом, должен быть осуществлен только санкционированно и в минимально необходимом для выполнения поставленных задач объеме.
Описание предложенного решения.
Представим, что внутри нашей организации есть 3 департамента:
- Billing department
- Customer Contact department
- Order Processing department
Billing департамент должен иметь возможность выставить Invoice своим клиентам. Invoice должен включать в себя следующие поля:
- Имя и фамилию
- Город
- Почтовый индекс
- Название улицы
- Номер дома
Customer Contact департамент должен иметь возможность контакта с пользователями в случае всевозможных проблем с заказом, оплатой, выставленным счетом и т.д. Сотрудники заинтересованы в возможности связаться с пользователем любым доступным способом.
Order Processing департамент должен иметь возможность проверить, что пользователь достиг взрослого возраста, прежде чем предоставить ему возможность заказа определенных товаров.
Помимо этого, должна быть предусмотрена возможность категоризации клиентов путем присвоения им определенных тэгов и поиска по этим тэгам.
Исходя из модели использования данных, представим реализацию компонентов проектируемой программной системы на строго типизированном языке программирования общего назначения Java [6]. В качестве шины для пересылки сообщений предложим брокер Apache Kafka [4].
Рисунок 1. Сущность данных Customer
Рисунок 2. Сущность данных Invoice
Рисунок 3. Базовая реализация компонент системы
Сокроем внутренние данные классов и особенности реализации интерфейсов используя инкапсуляцию [1]. Запрос к данным может осуществляться через мобильный или десктопный клиент с помощью правил согласно REST, для которого для сохранности данных пользователей необходимо предусмотреть использование механизма авторизации и аутентификации [5]. В качестве реляционной базы данных и поддержки CRUD операций для данных о пользователях хорошо подойдет PostgreSQL [3].
Вывод.
Предложенная архитектура и реализация информационной системы управления и хранения данных пользователей для web-приложения позволяет легко разграничить доступ к данным пользователей между различными департаментами внутри одной организации, контролировать и санкционировать доступ к данным, предоставляет механизм эффективного чтения, поиска и сохранения данных согласно поставленным перед системой задачами.
Список литературы:
- Джошуа Блох. Java. Эффективное программирование. // М.: Диалектика, 2019. – С. 109
- Мартин Клеппман. Высоконагруженные приложения. Программирование, масштабирование, поддержка. // СПб.: Питер, 2020. – С. 24
- Alex Xu. System Design Interview – An Insider's Guide. // CA, US.: Independently published, 2020. – С. 8
- Apache Kafka. Open-source distributed event streaming platform. / [Электронный ресурс]. – Режим доступа: https://kafka.apache.org/ (дата обращения: 06.01.2023)
- Heather Adkins, Betsy Beyer, Paul Blankinship, Piotr Lewandowski, Ana Oprea & Adam Stubblefield. Building Secure & Reliable Systems. // CA, US.: O’Reilly Media, 2020. – С. 78
- Java. High-level, class-based, object-oriented programming language. / [Электронный ресурс]. – Режим доступа: https://www.java.com/ (дата обращения: 06.01.2023)