Spring framework в высоконагруженных приложениях
fO
es о es
in
о ш m
X
<
m О X X
Филисов Денис Александрович
разработчик программного обеспечения, ВТБ, eggshrinker1 @yandex.ru
В современных условиях интенсивного развития информационных технологий вопрос создания надежных и эффективных высоконагруженных приложений становится особенно актуальным. Один из ключевых аспектов решения этой задачи - выбор подходящего фреймворка, способного обеспечить высокую производительность и надежность приложения. В данном исследовании основное внимание уделяется использованию Spring Framework в высоконагруженных приложениях. Spring Framework - один из наиболее популярных и широко используемых фреймворков в мире Java. Его модульность, гибкость и мощные функции делают его привлекательным решением для разработки сложных приложений. Целью данной работы является исследование возможностей и особенностей применения Spring Framework в высоконагруженных приложениях. В рамках работы будет рассмотрен ряд ключевых аспектов, таких как неблокирующая обработка запросов с использованием Spring WebFlux, конфигурация и оптимизация подключения к базам данных, а также стратегии управления и масштабирования потоков выполнения. В результате ожидается получить обоснованное представление о преимуществах и недостатках использования Spring Framework в условиях высоких нагрузок, а также сформулировать рекомендации по его оптимальному использованию в таких сценариях.
Ключевые слова: Spring framework, исследование, высоконагружен-ная среда, приложения.
Spring Framework — популярный фреймворк на основе Java, упрощающий и ускоряющий разработку корпоративных приложений [1]. Он состоит из множества мини-сервисов, библиотек и инструментов, которые можно использовать для создания масштабируемых и высокопроизводительных приложений [2]. Spring Framework предоставляет комплексную платформу для разработки Java-приложений, включая поддержку веб-приложений, сервисов RESTful и микросервисов [2]. Он широко используется в промышленности благодаря своей гибкости, модульности и простоте использования [3].
Одной из ключевых особенностей Spring Framework является использование шаблона Dependency Injection (DI), который упрощает управление зависимостями и компонентами в крупномасштабном приложении [4]. Этот шаблон позволяет разработчикам писать слабосвязанный код, который легко поддерживать и тестировать. Spring Framework также обеспечивает поддержку аспектно-ориентированного программирования, что позволяет разработчикам отделить сквозные задачи, такие как ведение журнала, безопасность и кэширование, от основной бизнес-логики [5].
Spring Framework имеет много преимуществ для приложений с высокой нагрузкой. Во-первых, он обеспечивает основу для создания масштабируемых и высокопроизводительных приложений, способных обрабатывать большие объемы трафика [6]. Во-вторых, он имеет встроенную поддержку кэширования, что позволяет повысить производительность приложений, требующих частого доступа к данным [5]. Наконец, Spring Framework предоставляет исчерпывающий набор инструментов для мониторинга и управления производительностью приложений, которые могут помочь разработчикам быстро выявлять и устранять проблемы с производительностью [7]. В целом, Spring Framework — отличный выбор для создания высокопроизводительных и масштабируемых приложений.
Spring Framework — популярный выбор для создания приложений с высокой нагрузкой из-за его модульной конструкции и надежных функций. Одним из ключевых модулей Spring Framework является модуль Spring Boot, который обеспечивает упрощенный подход к созданию автономных приложений производственного уровня, способных обрабатывать большие нагрузки трафика. Модуль Spring Boot предлагает ряд функций, включая встроенные серверы, автоматическую настройку и метрики, что делает его идеальным для создания высокопроизводительных приложений [8]. Еще одним важным модулем Spring Framework для высоконагруженных приложений является модуль Spring Data. Этот модуль предоставляет согласованную модель программирования для взаимодействия с различными источниками данных, включая реляционные базы данных, базы данных NoSQL и хранилища данных в памяти. Spring Data предлагает такие функции, как кэширование, управление транзакциями и оптимизация запросов, которые могут помочь повысить производительность приложений с высокой нагрузкой [8].
Помимо модулей Spring Boot и Spring Data, модуль Spring Cloud также полезен для создания высоконагруженных приложений, работающих в облачных средах. Модуль Spring Cloud предоставляет ряд инструментов и сред для создания и развертывания облачных приложений, включая обнаружение сер-
висов, управление конфигурацией и автоматические выключатели. Используя модуль Spring Cloud, разработчики могут создавать высоконадежные, масштабируемые и отказоустойчивые приложения, способные справляться с высокими нагрузками трафика в облачных средах [8].
Spring Framework широко используется для создания масштабируемых и высокопроизводительных приложений. Одной из основных причин его популярности является простота и широкое использование на рынке ИТ-услуг [9]. Spring Framework предоставляет различные функции, помогающие балансировать нагрузку и масштабировать приложения. Балансировка нагрузки может быть достигнута с помощью Spring Cloud Load Balancer, балансировщика нагрузки на стороне клиента, который обеспечивает простой и гибкий способ распределения трафика между несколькими экземплярами службы [10]. Кроме того, Spring Boot, созданный на основе Spring Framework, предоставляет платформу для создания микросервисов и веб-приложений, которые можно легко масштабировать по горизонтали [11 ]. Таким образом, Spring Framework предлагает ряд инструментов для создания и масштабирования высоконагру-женных приложений.
Spring Framework обладает несколькими функциями, которые могут быть полезными при работе с высоконагруженными приложениями. Ниже приведен пример кода с использованием Spring WebFlux, который представляет собой неблокирующий веб-стек, разработанный для поддержки параллельного выполнения большого числа запросов.
'"java
// Импорт необходимых библиотек
import org.springframework.web.bind.annotation.GetMapping;
import
org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Flux;
@RestController
public class HighLoadController {
// Сервис обработки данных, здесь он упрощен для демонстрации
private final DataProcessingService dataProcessingService;
public HighLoadController(DataProcessingService
dataProcessingService) {
this.dataProcessingService = dataProcessingService; }
// Неблокирующий контроллер, который возвращает поток данных
@GetMapping("/highLoadEndpoint") public Flux<Data> getHighLoadData() { // Метод process() возвращает Flux<Data>, который обрабатывается неблокирующим образом
return dataProcessingService.process(); }
}'
В этом примере 'DataProcessingService' - это сервис, который обрабатывает данные и возвращает их в виде 'Flux<Data>'. 'Flux<T>' - это основной тип данных в проекте Reactor (на котором основан Spring WebFlux), который представляет собой поток 0 или более элементов.
Метод 'process()' должен быть реализован так, чтобы он обрабатывал данные асинхронно и неблокирующим образом. Это может быть достигнуто, например, с помощью операторов
Reactor, таких как 'flatMapO', 'concatMapO', 'transformo', и других.
Этот подход позволяет обрабатывать большое количество одновременных запросов, поскольку потоки обрабатываются неблокирующим образом и не занимают потоки обработки в то время, как они ожидают получения данных или выполнения других асинхронных операций. Это может быть особенно полезно в высоконагруженных приложениях, где необходимо обрабатывать большое количество одновременных запросов.
Кэширование — еще одна важная функция Spring Framework, позволяющая значительно повысить производительность высоконагруженных приложений. Spring Cache предоставляет простой способ подключить кэширование к приложению и настроить диспетчер кэширования [12]. Включение кэширования bean-компонентов Spring может быть выполнено с помощью аннотации @Cacheable, которая кэширует результат вызова метода на основе его параметров [13]. Spring Boot также предоставляет простой механизм кэширования данных, который можно легко включить, настроив свойства кэша в файле application.properties. Таким образом, Spring Framework предлагает ряд вариантов кэширования, которые можно использовать для повышения производительности вы-соконагруженных приложений.
Асинхронная обработка — еще одна ключевая функция Spring Framework, позволяющая повысить производительность приложений с высокой нагрузкой. Spring предоставляет планировщик задач, который может управлять выполнением задач асинхронно. Это позволяет выполнять длительные задачи в фоновом режиме, не блокируя основной поток, что может повысить скорость отклика приложения. Spring Framework также поддерживает сопрограммы при разработке на стороне сервера, что упрощает написание асинхронного кода. Таким образом, Spring Framework предоставляет набор инструментов для асинхронной обработки, которые можно использовать для повышения производительности высоконагруженных приложений.
Spring Framework является популярным выбором для разработки высоконагруженных приложений благодаря своей способности интегрироваться с различными технологиями. Одной из ключевых областей, в которых Spring превосходит другие, является его интеграция с системами обмена сообщениями. Spring обеспечивает поддержку различных технологий обмена сообщениями, таких как RabbitMQ, Kafka и ActiveMQ, что обеспечивает эффективную связь между службами [7]. Эта функция особенно важна в приложениях с высокой нагрузкой, где множеству служб требуется быстрая и надежная связь друг с другом. Таким образом, интеграция Spring Framework с системами обмена сообщениями делает его идеальным выбором для разработки приложений с высокой нагрузкой.
Еще одна область, в которой Spring Framework выделяется, — это интеграция с базами данных NoSQL. Spring обеспечивает поддержку различных баз данных NoSQL, таких как Cassandra и Hazelcast, которые обычно используются в приложениях с высокой нагрузкой. Эта интеграция позволяет эффективно хранить и извлекать данные, что важно в приложениях с высокой нагрузкой, где критична скорость доступа к данным [8]. Кроме того, интеграция Spring как с реляционными, так и с нереляционными базами данных делает его универсальным выбором для разработчиков [9]. Таким образом, интеграция Spring Framework с базами данных NoSQL делает его идеальным выбором для разработки приложений с высокой нагрузкой.
Spring Framework также хорошо интегрируется с облачными платформами, что становится все более важным в вы-соконагруженных приложениях. Spring обеспечивает поддержку различных облачных платформ, таких как AWS, Azure
X X
о
го А с.
X
го m
о
2 О M
со
fO CS
о
CS
in
О Ш
m
X
<
m О X X
и Google Cloud, что позволяет легко развертывать и масштабировать приложения [10]. Кроме того, интеграция Spring с другими технологиями Java, такими как Hibernate и Apache Solr, делает его универсальным выбором для разработчиков, работающих с приложениями с высокой нагрузкой, требующими больших данных и возможностей машинного обучения. Таким образом, интеграция Spring Framework с облачными платформами делает его идеальным выбором для разработки приложений с высокой нагрузкой.
Spring Framework — одна из самых популярных сред для создания веб-приложений Java [3]. Когда дело доходит до приложений с высокой нагрузкой, правильная конфигурация и настройка имеют решающее значение. Это включает в себя настройку класса конфигурации контекста приложения, который помечен @Configuration, и настройку встроенного сервера [5]. Spring Boot, инструмент с открытым исходным кодом, упрощающий использование платформ на основе Java для создания микросервисов и веб-приложений, в последние годы становится все более популярным [11]. С помощью Spring Boot можно автоматически создавать и настраивать базу данных для приложения, а также изменять настройки для оптимизации производительности. Изучение того, как правильно настраивать и настраивать Spring Framework, необходимо для создания приложений с высокой нагрузкой, способных обрабатывать большие объемы трафика и данных.
Еще одним важным аспектом создания высоконагруженных приложений с помощью Spring Framework является эффективное кэширование. Кэширование особенно полезно в больших, высоконагруженных проектах с десятками тысяч запросов в минуту [12]. Кэшируя часто используемые данные, приложение может снизить нагрузку на базу данных и повысить общую производительность. Разработчики Expedia активно используют Spring Framework, и начиная с версии 5.2 он поддерживает совместимость между WebFlux и сопрограммами. Поэтому важно научиться эффективно использовать кэширование с помощью Spring Framework, чтобы оптимизировать производительность приложения.
В дополнение к кэшированию эффективный доступ к базам данных важен для создания высоконагруженных приложений с помощью Spring Framework. Фреймворк предоставляет модуль для взаимодействия с системами управления базами данных, что позволяет разработчикам легко подключать логику поверх источников данных [3]. Глубокие знания Spring Framework и опыт работы с базами данных и хранилищами данных необходимы для создания эффективных и мощных приложений. Также важно учитывать оптимизацию на стороне клиента и создавать приложения с учетом масштабируемости. Следуя рекомендациям и эффективно используя Spring Framework, разработчики могут создавать высоконагруженные приложения, которые являются эффективными, масштабируемыми и производительными.
Мониторинг производительности высоконагруженных приложений, созданных с использованием Spring Framework, имеет решающее значение для обеспечения их бесперебойной работы. Это включает в себя отслеживание различных показателей производительности, таких как использование ЦП, потребление памяти, время отклика и пропускная способность [8]. Отслеживая эти показатели, разработчики могут выявить потенциальные узкие места и принять необходимые меры для оптимизации производительности приложения. Доступны различные инструменты, такие как агент Java AppDynamics и Pinba + Graphite, которые можно использовать для мониторинга производительности [9]. Кроме того, сама Spring Framework предоставляет такие функции, как Spring Cloud, которые могут помочь регулировать производительность приложений в сети [10].
Общие проблемы, возникающие в приложениях с высокой нагрузкой, созданных с использованием Spring Framework, включают утечки памяти, проблемы с синхронизацией потоков и проблемы с производительностью из-за сборщика мусора [11]. Эти проблемы можно решить, следуя рекомендациям, таким как использование пула соединений, оптимизация запросов к базе данных и минимизация создания объектов. Кроме того, разработчики могут использовать такие инструменты, как JProfiler и VisualVM, для выявления и устранения этих проблем. Решая эти распространенные проблемы, разработчики могут обеспечить оптимальную работу своих приложений с высокой нагрузкой и удобство работы пользователей.
При отладке приложений Spring разработчики могут использовать различные методы, такие как ведение журнала, отладка и профилирование [13]. Spring Framework также предоставляет такие функции, как Spring Social, которые позволяют интегрироваться с приложениями «программное обеспечение как услуга» (SaaS) [11]. Используя эти функции, разработчики могут легко отлаживать и устранять проблемы в своих приложениях Spring. Важно регулярно отслеживать и отлаживать высоконагруженные приложения, чтобы обеспечить их бесперебойную работу и предотвратить возникновение потенциальных проблем.
При разработке высоконагруженных приложений с использованием Spring Framework безопасность становится критическим фактором. Аутентификация и авторизация являются важными компонентами безопасности, гарантируя, что только авторизованные пользователи могут получить доступ к конфиденциальным данным и выполнять определенные действия. Spring Security предоставляет надежную основу для реализации аутентификации и авторизации в приложениях Spring. Используя Spring Security, разработчики могут легко настраивать механизмы аутентификации и авторизации, такие как хеширование паролей, аутентификация на основе токенов и управление доступом на основе ролей. Это помогает обеспечить безопасность и защиту от несанкционированного доступа высоко-нагруженных приложений, созданных на основе Spring Framework.
Помимо проверки подлинности и авторизации, защита API и служб также имеет решающее значение для приложений с высокой нагрузкой. Spring Cloud Gateway — популярный инструмент для настройки маршрутизации и защиты API в приложениях Spring-Boot [5]. Используя Spring Cloud Gateway, разработчики могут легко настраивать правила маршрутизации, применять политики безопасности и отслеживать трафик, чтобы обеспечить безопасность и эффективность работы API и служб. Это помогает гарантировать, что приложения с высокой нагрузкой, созданные на основе Spring Framework, смогут обрабатывать большие объемы трафика и оставаться в безопасности. Еще одним важным аспектом безопасности в приложениях с высокой нагрузкой является защита конфиденциальных данных. Сюда входят конфиденциальные пользовательские данные, такие как пароли и личная информация, а также бизнес-данные, такие как финансовые отчеты и коммерческая тайна. Spring Framework предоставляет несколько инструментов для защиты данных, включая шифрование, хеширование и безопасные механизмы хранения [7]. Используя эти инструменты, разработчики могут гарантировать, что конфиденциальные данные защищены от несанкционированного доступа и останутся в безопасности даже в высоконагруженных приложениях.
С большим количеством высоконагруженных приложений, новых приложений и технологий, которые включают в себя ресурсы для будущего Spring Framework в этой области. Spring Framework является платформой для разработки предприятий
на многих уровнях, основанной на инверсии зависимостей контейнера. Для высокой производительности приложений требуется использование новых решений и технологий, которые повышают производительность проекта. Например, использование Spring Framework Cloud, Boot, AOP, Security, Hibernate может повысить производительность приложений. Таким образом, будущее Spring Framework в высоконагруженных приложениях зависит от использования новых технологий и решений.
Дорожная карта Spring Framework также важна для использования этой платформы в высоконагруженных приложениях. Версии Spring Framework регулярно обновляются, чтобы повысить производительность и добиться соответствия с улучшенными технологиями и решениями. Например, Spring Framework 6.0.7 содержит 28 исправлений и документацию [10]. Кроме того, разработчики Spring Framework следят за развитием событий на дорожной карте, чтобы сообщество могло наблюдать за этой платформой и использовать новые возможности [9]. Таким образом, дорожная карта Spring Framework особенно важна для улучшения производительности и поддержки новых технологий.
Поддержка сообщества и вклады также являются важными факторами для будущего использования Spring Framework в высоконагруженных приложениях. Spring Framework имеет активное участие в сообществах, которые обмениваются опытом и исследуют новые технологии и решения. Кроме того, сообщество вносит свой вклад в развитие Spring Framework, затрагивая новые функции и исправляя ошибки. Таким образом, поддержка сообщества и важные факторы являются важными факторами для улучшения производительности и поддержки новых технологий в Spring Framework.
В рамках проведенного исследования были изучены возможности и особенности использования Spring Framework в высоконагруженных приложениях. Особое внимание было уделено аспектам, таким как неблокирующая обработка запросов с использованием Spring WebFlux, конфигурация и оптимизация подключения к базам данных, а также стратегии управления и масштабирования потоков выполнения.
Основываясь на полученных данных, можно заключить, что Spring Framework представляет собой мощный и гибкий инструмент, способный эффективно решать задачи, связанные с разработкой и поддержкой высоконагруженных приложений. Однако следует учитывать, что успешная реализация таких проектов требует глубокого понимания особенностей данного фреймворка, а также умения правильно использовать его возможности и избегать потенциальных проблем.
В целом, данное исследование может служить полезным источником информации для специалистов, занимающихся разработкой высоконагруженных приложений на базе Spring Framework, и способствовать повышению эффективности и качества их работы.
Литература
1. Ali I., Mughal N, Khan Z, Ahmed J., Mujta-ba G. Resume classification system using natural language processing and machine learning techniques // Mehran University Research Journal of Engineering & Technology. 2022. Vol. 41. No. 1, pp. 6579. DOI: 10.22581 /muet1982.2201.07
2. Dafydd Stuttard, Marcus Pinto- The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws 2nd Edition (PET-CON 2009.1). - Wiley; 2nd edition (дата обращения 27. 09. 2011).
3. Ruiz-Martinez, A. A survey on solutions and main free tools for privacy enhancing Web communications [Text] / A Ruiz-Martinez // Journal of Network and Computer Applications. - 2012. - Vol. 35, iss. 5. - P. 1473-1492.
4. Балеев И.А., Земцов А.Н., Астахов Д.А. Методы обработки и визуализации данных в веб-интерфейсе с помощью библиотеки Dimensional Charting // Инженерный вестник Дона, 2021, №6. URL: ivdon.ru/ru/magazine/archive/n6y2021/7029.
5. Батура Т.В. Математическая лингвистика и автоматическая обработка текстов на естественном языке. Новосибирск : РИЦ НГУ, 2016. 166 с. ISBN 978-5-4437-0548-4.
6. Бенгфорт Б., Билбро Р., Охеда Т. Прикладной анализ текстовых данных на Python. Машинное обучение и создание приложений обработки естественного языка. СПб. : Питер, 2019. 368 с. ISBN 978-5-4461-1153-4
7. Глод О.Д., Чекулаев A.A. Разработка веб-приложения с использованием Spring Framework и jQuery // Инженерный вестник Дона, 2018, №4. URL: ivdon.ru/ru/magazine/archive/n4y2018/5453.
8. Дедов С.В., Кирсанов О.Д., Тимошевская О.Ю. Анализ преимуществ наиболее востребованных современных языков программирования // Актуальные вопросы современной науки : сборник статей по материалам XVII международной научно-практической конференции, Томск, 19 декабря 2018 года. -
2018. - С. 63-72.,
9. Дергачев А. М. Проблемы эффективного использования сетевых сервисов / Научно-технический вестник СПбГУ ИТМО. 2011. № 1 (71). С. 8387
10. Ксендзовский И. Д., Калюжный И.Д., Зариковская Н.В. Разработка серверной части приложений и систем: технологии и языки программирования // European reserch: Сб. статей XXVII Международной научно-практической конференции. В 2-х ч. Пенза, 07 июня 2020 года. - 2020. - С. 30-32.
11. Куликова Н.Н., Маширов О.А., Соломыков А.Д., Яковлев А.С. Основы back-end разработки на spring // Фундаментальные и прикладные научные исследования: актуальные вопросы, достижения и инновации: Сб. статей XXXVI Международной научно-практической конференции: в 2 ч., Пенза, 27 июля 2020 года. - 2020. - С. 158-160.
12. Макосий А. И., Макосий Р. Современная облачная инфраструктура: бессерверные вычисления // Вестник Хакасского государственного университета им. Н.Ф. Катанова. -
2019. - № 2 (28). - С. 13-16.
13. Париняк А. Ю. Сравнительный анализ поставщиков облачных услуг для разработки backend-составляющей мобильного приложения // Научные труды магистрантов и аспирантов: Сб. научных трудов. - 2020. - С. 183-186.
14. Прощаева А.А., Синелобова С.В. Обзор программного обеспечения для построения распределенных вебсистем // Инженерный вестник Дона, 2017, № 4. URL: ivdon.ru/uploads/article/pdf/
IVD_130_proshchaeva_sinelobova.pdf_75c41b8172.pdf.
Spring framework in high-load applications Filisov D.A.
VTB
JEL classification: C10, C50, C60, C61, C80, C87, C90_
In modern conditions of intensive development of information technologies, the issue of creating reliable and efficient high-load applications is becoming especially relevant. One of the key aspects of solving this problem is choosing a suitable framework that can provide high performance and reliability of the application. This study focuses on the use of the Spring Framework in high-load applications. Spring Framework is one of the most popular and widely used frameworks in the Java world. Its modularity, flexibility and powerful features make it an attractive solution for developing complex applications. The purpose of this work is to study the possibilities and features of using the Spring Framework in high-load applications. As part of the work, a number of key aspects will be considered, such as non-blocking query processing using Spring WebFlux, configuration and optimization of database connections, as well as strategies for managing and scaling execution flows. As a result, it is expected to gain an informed understanding of the advantages and disadvantages of using the Spring Framework under high loads, as well as formulate recommendations for its optimal use in such scenarios.
X X О го А С.
X
го m
о
2 О M
со
Keywords: Spring framework, research, high-load environment, applications. References
1. Ali I., Mughal N, Khan Z, Ahmed J., Mujta-ba G. Resume classification system using
natural language processing and machine learning techniques // Mehran University Research Journal of Engineering & Technology. 2022 Vol. 41. No. 1, pp. 65-79. DOI: 10.22581/muet1982.2201.07
2. Dafydd Stuttard, Marcus Pinto - The Web Application Hacker's Handbook: Finding
and Exploiting Security Flaws 2nd Edition (PET-CON 2009.1). - Wiley; 2nd edition (accessed 27 September 2011).
3. Ruiz-Martinez, A. A survey on solutions and main free tools for privacy enhancing
Web communications [Text] / A Ruiz-Martinez // Journal of Network and Computer Applications. - 2012. - Vol. 35, iss. 5. - P. 1473-1492.
4. Baleev I.A., Zemtsov A.N., Astakhov D.A. Data processing and visualization
methods in the web interface using the Dimensional Charting library // Engineering Bulletin of the Don, 2021, No. 6. URL: ivdon.ru/ru/magazine/archive/n6y2021/7029.
5. Batura T.V. Mathematical linguistics and automatic processing of natural language
texts. Novosibirsk: RIC NSU, 2016. 166 p. ISBN 978-5-4437-0548-4.
6. Bengfort B., Bilbro R., Ojeda T. Applied text data analysis in Python. Machine
learning and building natural language processing applications. SPb. : Peter, 2019. 368 p. ISBN 978-5-4461-1153-4
7. Glod O.D., Chekulaev A.A. Development of a web application using the Spring
Framework and jQuery // Dona Engineering Bulletin, 2018, No. 4. URL: ivdon.ru/ru/magazine/archive/n4y2018/5453.
8. Dedov S.V., Kirsanov O.D., Timoshevskaya O.Yu. Analysis of the advantages of
the most popular modern programming languages // Topical issues of modern science: a collection of articles based on the materials of the XVII International Scientific and Practical Conference, Tomsk, December 19, 2018. - 2018. - S. 6372.,
9. Dergachev A. M. Problems of effective use of network services / Scientific and
technical bulletin of St. Petersburg State University ITMO. 2011. No. 1 (71). S. 8387
10. Ksendzovsky I.D., Kalyuzhny I.D., Zarikovskaya N.V. Development of the server
part of applications and systems: technologies and programming languages // European research: Sat. articles of the XXVII International Scientific and Practical Conference. At 2 a.m. Penza, June 07, 2020. - 2020. - S. 30-32.
11. Kulikova N.N., Mashirov O.A., Solomykov A.D., Yakovlev A.S. Fundamentals of
back-end development in spring // Fundamental and applied scientific research: topical issues, achievements and innovations: Sat. articles of the XXXVI International Scientific and Practical Conference: at 2 pm, Penza, July 27, 2020. - 2020. - S. 158-160.
12. Makosy A. I., Makosy R. Modern cloud infrastructure: serverless computing //
Bulletin of the Khakass State University. N.F. Katanov. - 2019. - No. 2 (28). - S. 13-16.
13. Parinyak A. Yu. Comparative analysis of cloud service providers for the development of the backend component of a mobile application // Scientific works of undergraduates and graduate students: Sat. scientific works. - 2020. - S. 183186.
14. Proshchaeva A.A., Sinelobova S.V. Overview of software for building distributed
web systems // Engineering Bulletin of the Don, 2017, No. 4. URL: ivdon.ru/uploads/article/pdf/
IVD_130_proshchaeva_sinelobova.pdf_75c41b8172.pdf.
CO CS
o
CS
in
O HI
m
X
<
m o x
X