ОСНОВНЫЕ АСПЕКТЫ РАЗРАБОТКИ МИКРОСЕРВИСНОГО ВЕБ-ПРИЛОЖЕНИЯ
ОСНОВНЫЕ АСПЕКТЫ РАЗРАБОТКИ МИКРОСЕРВИСНОГО ВЕБ-ПРИЛОЖЕНИЯ
Аннотация
В статье рассматриваются основные аспекты разработки веб-приложений. Отмечено, что разработка веб-приложений относится к процессу создания программных приложений, к которым можно получить доступ и использовать через веб-браузер на компьютере или мобильном устройстве. Обоснована актуальность исследования основных аспектов разработки веб-приложения на основе микросервисной архитектуры.
Приведен пример разработки двух алгоритмов: алгоритма поиска пользователей через Интернет и алгоритма добавления пользователя с помощью QR-кода, которое в рамках услуг клиентского сервиса полностью удовлетворяет все требования по функционалу. Использование микросервисной архитектуры при разработке приложений является сегодня наиболее популярным подходом. Микросервисная архитектура для каждого сервиса имеет отдельную упаковку, а на разных серверах они хранятся изолированно, при этом дублируя друг от друга при необходимости, что позволяет отдельно работать с каждым функциональным элементом.
1. Введение
В основе решения многих задач научно-технического прогресса лежит обработка информации, которая, в свою очередь, зависит от уровня информатизации общества. Обеспечение свободного доступа к информационным ресурсам формируется за счет разработки надежной и развитой сетевой инфраструктуры
. Пропускная способность и надежность в ее работе и направлении зависит от выбора оборудования, которое становится все более востребованным и необходимым. В связи с тем, что быстрое развитие технологий стимулирует производителей на разработку и создание все более разнообразных видов веб-приложений с разной конфигурацией в их характеристиках, то современные веб-приложения могут отличаться параметрами . Поэтому при выборе веб-приложений необходимо четко и ясно понимать задачи, для решения которых они будут использоваться. Они применяются в самых разных отраслях, от электронной коммерции и финансов до здравоохранения и образования, и являются неотъемлемой частью современной цифровой инфраструктуры.Веб-приложение представляет собой программное приложение, которое работает на веб-сервере и к которому можно получить доступ с помощью веб-браузера. В отличие от традиционных настольных приложений, которые устанавливаются локально на компьютер, доступ к веб-приложениям осуществляется через Интернет и не требует установки на устройство пользователя
.Для наиболее оптимального выбора веб-приложений с учетом всех их характеристик и производители, и потребители заинтересованы в постоянном обновлении и апробациях различных приложений, платформ, наиболее удовлетворяющих поставленным целям
.В настоящее время индустрия R&D (Research and Development) активно развивается, появляются новые методологии разработки ПО и разных видов архитектуры, соответственно, осложняются задачи для разработчиков. Основными требования к выбору веб-приложений становятся: возможность предоставления программного интерфейса, многофункциональность, легкомасштабиремость, гибкость, кроссплатформенность, быстрая изменяемость под задачи пользователей. В связи с этим для разработки оптимального программного обеспечения необходимо выбрать правильную архитектуру, оценить ее преимущества и недостатки, ориентируясь на требования работоспособности и функциональности ПО. Яркими примерами перехода на микросервисную архитектуру можно назвать компании Netflix, Apple, Instagram*, Pinterest и др., которые начали использовать данную архитектуру, чтобы решить проблемы обработки большого количества запросов, обеспечения высокой скорости доступа к данным, обеспечение высокой надежности отказоустойчивости и масштабируемости. Например, Netflix столкнулся со сложностью обработки информации огромного количества клиентов.
Pinterest благодаря микросервисам смог приспособиться к различным уровням трафика.
Instagram* был впервые запущен в 2010 году как простое монолитное приложение, однако сервер оказался не способен обработать большое количество запросов пользователей. Через полгода на основе микросервисной архитектуры у компании не возникало сложностей с трафиком при работе с тремя миллионами постоянных пользователей.
Когда компания Apple запустила проект Siri, микросервисы позволили расширять и адаптировать программу без перерывов в обслуживания пользователей, тем самым внедрив новый функционал.
Научная новизна исследования заключается в том, что на основе проведенного анализа работоспособности микросервисной архитектуры, ее особенностей выделены и описаны ключевые аспекты, требующие тщательной проработки перед применением микросервисного подхода при разработке веб-приложения.
*(Instagram является продуктом компании Meta, деятельность которой запрещена на территории РФ).
2. Постановка задачи и методика исследования
Постановка задачи. Для того чтобы разработчики успешно использовали технологии разработки микросервисного веб-приложения в рамках услуг клиентского сервиса, необходимы рекомендации по правильному их применению.
Методика исследования. На начальном этапе исследования применялись следующие методы: поиск, сравнение и анализ данных для определения особенностей разработки клиент – серверной архитектуры веб-приложений, для выявления их сильных и слабых сторон, а также в разработке алгоритмов поиска пользователей через Интернет и добавления пользователя с помощью QR-кода. Для этого этапа в качестве метода исследования целесообразно использовать моделирование.
3. Результаты исследования
В работах исследователей особое внимание уделяется технологии разработки программных приложений на основе микросервисной архитектуры.
Н.В. Панченко , А.В. Понизов, М.А. Серов, Т.А. Галаган к особенностям микроструктуры приложения относят:
- разделение приложения на микросервисы упрощает параллельную разработку различных компонентов, что ускоряет процесс разработки и внедрения новых функций и обновлений;
- микросервисы обычно взаимодействуют друг с другом посредством API, что облегчает интеграцию с другими системами и сервисами и упрощает добавление новых функциональных возможностей и взаимодействие с внешними системами.
И.С. Голубь придерживается аналогичной позиции, считая, что такой подход к разработке микросервисного веб-приложения в рамках услуг клиентского сервиса позволяет разбить приложение на небольшие, независимые сервисы, каждый из которых выполняет свою специфическую функцию, что обеспечивает гибкость и масштабируемость системы, поскольку каждый сервис может функционировать независимо от других .
М.С. Качков, П.А. Пахомов, И.А. Горин отмечают важность выбора инструментальных средств для разработки веб-приложения. В частности, к наиболее оптимальным авторы относят:
1. Языки программирования. В зависимости от требований и предпочтений разработчиков целесообразно использовать JavaScript, HTML, CSS, Python, Ruby и т.д. ;
2. Фреймворки, которые упрощают разработку веб-приложений, предоставляя готовые модули и инструменты, например: React, Angular, Vue.js, Django, Ruby on Rails и Laravel ;
3. Среды разработки (IDE), которые предоставляют инструменты для создания, отладки и тестирования кода, например: Visual Studio Code, WebStorm, PyCharm, Sublime Text и Atom;
4. Базы данных. К наиболее популярным относятся реляционные базы данных MySQL, PostgreSQL и SQLite. Для NoSQL баз данных можно использовать MongoDB, Firebase и другие;
5. Веб-сервер, среди которых Apache и Nginx являются наиболее распространенными;
6. API и сервисы, использование которых позволяет интегрировать сторонние сервисы и функциональность в ваше веб-приложение. Некоторые популярные API включают Google Maps API, YouTube API, Twitter API и другие;
7. Тестирование и отладка, например, Jest, Selenium, Mocha, Jasmine и другие;
8. Версионный контроль, например Git, который позволяет отслеживать изменения в коде, сотрудничать с другими разработчиками и управлять версиями приложения , .
Анализ работы С. Магомадова позволил выделить следующие принципы разработки веб-приложения (Progressive Web Application, далее PWA) :
1. Офлайн работа. PWA должно функционировать в офлайн-режиме, что позволяет пользователям продолжать использовать приложение, даже когда они не имеют доступа к Интернету. С этой целью используются технологии кэширования и локального хранения данных;
2. Адаптивный дизайн, то есть способность приложения адаптироваться к разным устройствам и размерам экранов — это обеспечивает удобство использования и оптимальное отображение интерфейса на различных платформах, включая мобильные устройства;
3. Ориентация на прогрессивное улучшение означает, что PWA предоставляет базовый функционал для всех пользователей, независимо от того, какие возможности доступны на их устройствах или браузерах. В дальнейшем пользователям можно предоставлять дополнительные функции;
4. Быстрая загрузка и отзывчивость. Производительность является важным аспектом PWA. Для быстрой загрузки и реагирования на пользовательские действия используются оптимизации, такие как кэширование ресурсов, сжатие данных и асинхронная загрузка;
5. Обеспечение безопасности данных и защиты пользователей. Для решения данной задачи используются соответствующие протоколы и механизмы шифрования для передачи и хранения данных, а также механизмы аутентификации и авторизации;
6. Возможность автоматического и/или ручного обновления с целью обеспечить актуальность функций и исправление ошибок .
Таким образом, учитывая данные принципы, можно сделать вывод о том, что создаваемые веб-приложения, основанные на данных принципах, обладают преимуществами как веб-сайтов, так и нативных приложений, способны обеспечивать достаточный пользовательский опыт и высокую функциональность. В целом, разработка микросервисного веб-приложения в рамках услуг клиентского сервиса может обеспечить более гибкую, масштабируемую и отказоустойчивую систему, способную быстро адаптироваться к изменяющимся требованиям и предоставлять более качественные услуги клиентам.
В этой связи следует подробно рассмотреть клиент-серверную архитектуру веб-приложений и примеры разработки алгоритмов.
Клиент-серверная архитектура веб-приложений – одно из важнейших их характеристик. Клиент-серверная архитектура веб-приложений – это сетевая архитектура веб-приложений, которая предполагает разделение по типу работы компьютеров, находящихся в одной сети, на серверы и клиенты.
Клиент-серверная архитектура веб-приложений также известна как модель сетевых вычислений или сеть клиент-сервер, поскольку все запросы и услуги распределяются по сети. Серверы – это выделенные процессы для управления компьютерами или дисковыми накопителями (файловые серверы), принтерами (серверы печати) или сетевым транспортом (сетевые серверы). Клиенты – это ПК или рабочие станции, на которых пользователи запускают веб-приложения.
Архитектура клиент-серверных веб-приложений, в первую очередь, разработана для сред с достаточно большим количеством компьютеров. Клиент – это компьютерная система, которая выполняет доступ к серверу на других компьютерах через сеть. Клиентские веб-приложения обычно управляют частью пользовательского интерфейса приложения, причем клиентский процесс является внешним интерфейсом программы, которую пользователь видит и с каким взаимодействием существует .
Клиентский процесс веб-приложений также управляет локальными ресурсами, которыми он обладает, такими как монитор, клавиатура, центральный процессор рабочей станции. Одним из ключевых элементов клиентской части веб-приложений является графический интерфейс пользователя (GUI).
В клиент-серверной архитектуре веб-приложений серверный процесс – это программа, выполняющая запланированные задачи в ответ на запрос клиента. Сервером могут быть и другие находящиеся в сети устройства, а также операционная система.
Двухуровневая архитектура веб-приложений эффективна, когда клиент непосредственно обращается к серверу. Обычно она используется в небольших помещениях (менее 50 пользователей). Здесь интерфейс пользователя размещается в среде рабочего стола пользователя, а службы веб-приложений – на сервере. Обработка информации разделена между средой интерфейса пользователя системы и средой сервера управления базой данных .
В трехуровневой архитектуре клиент-сервера веб-приложений используется дополнительное промежуточное программное обеспечение, в рамках которого запрос клиента проходит на сервер через данный промежуточный уровень, а ответ сервера сначала принимается промежуточным программным обеспечением, а затем клиентом.
Промежуточное программное обеспечение сохраняет всю бизнес-логику и логику доступа к данным. Если их существует несколько, то это называется n-уровневой архитектурой. Промежуточное программное обеспечение может быть файловым сервером, сервером сообщений, сервером приложений, монитором обработки транзакций и т.д. Это повышает гибкость и обеспечивает лучшую производительность.
Сегодня почти все веб-приложения и клиент-серверные приложения спроектированы в виде трехуровневой архитектуры или даже n-уровневой, что позволяет распределить нагрузку между различными серверами и увеличть их мобильность и простоту обслуживания.
Разработанное в статье веб-приложение представляет собой клиент двухзвенной клиент-серверной архитектуры (рис. 1) .
Рисунок 1 - Архитектура программы
Рисунок 2 - Архитектура IOS программы
1. Алгоритм поиска пользователей через Интернет. Данный алгоритм показывает всю бизнес-логику поиска пользователей через Интернет. В нем представлены три аспекта алгоритма – для Firebase, Backend и самого веб-приложения;
2. Алгоритм добавления пользователя с помощью QR-кода. Разработанный алгоритм показывает всю логику работы веб-приложения для обмена данными через QR-код.
Пример генерации данных через QR-код представлен на рис. 3.
Рисунок 3 - Пример отправки данных для воспроизведения звуковых сигналов после кодировки
Экран приветствия содержит три Lablel, две Button, одну секцию ScrollView, один ImageView – рис. 4.
Рисунок 4 - Экран приветствия
Экран регистрации содержит два Label, три Button и три TextField – рис. 5.
Рисунок 5 - Экран регистрации
Рисунок 6 - Экран авторизации
4. Заключение
Таким образом, разработка веб-приложения в рамках услуг клиентского сервиса полностью удовлетворяет всем требованиям по функционалу к нему. Использование микросервисной архитектуры при разработке приложений является сегодня наиболее популярным подходом. Микросервисная архитектура для каждого сервиса имеет отдельную упаковку, а на разных серверах они хранятся изолированно, при этом дублируя друг от друга при необходимости, что позволяет отдельно работать с каждым функциональным элементом.