старший инженер программист, Бэкэнд разрабочик, Турция, г. Алания
ВОСТРЕБОВАННЫЕ BACK-END-ТЕХНОЛОГИИ ДЛЯ РАЗРАБОТКИ ПРОГРАММНОГО ПРОДУКТА
АННОТАЦИЯ
интернет стал бы куда менее захватывающим местом, не будь серверной разработки. Под интерфейсной разработкой подразумевается то, что пользователь видит и использует на веб-сайтах. В свою очередь, серверная разработка вступает, когда веб-сайт является чем-то более сложным, чем просто внешний вид. Back-end, или серверная разработка, работает в тени, делая внутренние механизмы веб-сайта или приложения невидимыми для пользователя. Это включает в себя сервер, базу данных и само приложение.
Back-end — это неотъемлемый навык, обеспечивающий непрерывную работу в онлайн-мире. И она делает это незаметно, без лишнего внимания, позволяя людям наслаждаться просмотром своих любимых веб-сайтов, не вникая в детали работы, которую проделывает бэкенд-разработчик или целая команда специалистов.
Целью статьи стало изучение востребованных back-end-технологий для разработки программного продукта. Чтобы достичь поставленной цели автором статьи были изучены научные труды, специализированная литература и просмотрены мнения экспертов в данной отрасли.
ABSTRACT
The Internet would be a much less exciting place if there were no server development. Interface development refers to what the user sees and uses on websites. In turn, server-side development comes in when a website is nothing more complex than just the appearance. Back-end, or server-side development, works in the shadows, making the internal mechanisms of a website or application invisible to the user. This includes the server, the database, and the application itself.
Back-end — side development, is an essential skill that ensures continuous work in the online world. And she does it unnoticeably, without too much attention, allowing people to enjoy browsing their favorite websites without delving into the details of the work done by a backend developer or a whole team of specialists.
The purpose of the article was to study the popular back-end technologies for software product development. In order to achieve this goal, the author of the article studied scientific works, specialized literature and reviewed the opinions of experts in this industry.
Ключевые слова: back-end-технологии, ПО, IT, цифровизация, сайты, разработка сайтов.
Keywords: back-end technologies, software, IT, digitalization, websites, website development.
Введение
Термин "back-end development" означает создание серверной логики, управляющей веб-приложениями с серверной стороны. Серверная разработка ориентирована на предоставление внутренних сервисов, вместо создания интерфейсов. Серверные разработчики создают программное обеспечение, которое позволяет взаимодействовать базе данных и веб-приложению, обеспечивая их совместную работу [1].
Рисунок 1. Структура сайта
Рисунок 2. Передача данных
Специалисты по серверной разработке управляют и поддерживают серверную часть веб-сайта, включая базы данных, сервера и приложения. Они также принимают решения, которые невидимы для обычного пользователя. Серверная разработка включает в себя ключевые этапы, такие как создание кода, аутентификация пользователей, проектирование архитектуры серверной части и интеграция баз данных. Еще одним важным аспектом является связывание интерфейсных и серверных компонентов таким образом, чтобы система функционировала гармонично. Множество компаний, специализирующихся на программном обеспечении, предоставляют услуги по серверной разработке, создавая высоко интерактивные и отзывчивые онлайн-решения для бизнеса. На практике это означает:
- Обеспечение быстрого и удобного доступа для конечных пользователей.
- Экономию времени и усилий благодаря автоматизации многих рутинных задач.
- Создание высоконагруженных отказоустойчивых решений [2].
Особенности серверной разработки делают ее ключевым элементом в веб-разработке и создании программного обеспечения. Этот аспект включает в себя создание и обслуживание серверной части приложений, решая широкий спектр задач, включая обработку запросов клиентов, управление данными и обеспечение бесперебойной работы системы. Существует ряд важных аспектов серверной разработки, среди которых:
- Масштабируемость. В данном случае увеличение функциональных возможностей веб-приложения осуществляется через расширение его функциональной базы, что позволяет проекту справляться с возросшим объемом задач [3].
- Безопасность. Если говорить об обеспечении безопасности сайта, то следует обратить внимание ко всем сторонам использования платформы. Основная цель веб-безопасности заключается в предотвращении кибератак. Для обеспечения эффективной защиты веб-сайта необходимо уделять особое внимание всем аспектам разработки: веб-приложению, конфигурации веб-сервера, политикам создания и обновления паролей, а также клиентскому коду [4].
- Производительность веб приложения описывает, насколько эффективно функционирует веб-приложение, включая его скорость, отзывчивость и пользовательский интерфейс. Факторы, влияющие на производительность веб-приложения, включают задержку в сети (при передаче данных), время отклика веб-сервера, эффективность кода, кэширование и доставку контента [5,6].
- Надежность. В данном контексте ключевой аспект, так как она определяет устойчивость к отказам различных компонентов серверных систем [7].
- Дизайн API — это процесс принятия решений, касающихся того, как API будет предоставлять данные и функциональность своим потребителям, а также о том, как он будет использоваться для взаимодействия между различными компонентами системы. Успешный дизайн API описывает конечные точки, методы и ресурсы API в стандартизированном формате спецификации. Процесс разработки API приносит пользу как потребителям, так и производителям, гарантируя, что API поддерживают бизнес-цели, оставаясь при этом простыми в использовании, адаптируемыми, тестируемыми и хорошо документированными [8].
- Управление базами данных. Данный процесс крайне важен в силу того, что он позволяет создавать, объединять и удалять информацию в базах данных, а также предоставлять доступ к ним определенным пользователям и обеспечивать защиту от несанкционированного доступа. Применение правильно организованной базы данных значительно упрощает масштабирование приложений, открытие новых филиалов, создание новых приложений без потери данных и значительно повышает эффективность работы бизнеса [9,10].
1. Типы серверов
Рисунок 3. Типы серверов
Из рисунка 3 можно увидеть деление веб серверов на: статический и динамический. В соответствии с информацией от MDN, статический веб-сервер или стек состоит из компьютера (аппаратного обеспечения), на котором работает HTTP-сервер (программное обеспечение). Его называют "статическим", потому что сервер просто отправляет файлы так, как они есть, в ваш браузер. Это так называемый статический контент в рамках ИТ-ответа/сервера.
Динамический веб-сервер, с другой стороны, включает в себя статический веб-сервер и дополнительное программное обеспечение, чаще всего - сервер приложений и базу данных. Он называется "динамическим", потому что сервер приложений обновляет файлы перед отправкой их в ваш браузер через HTTP-сервер. Проще говоря, динамический сервер обслуживает динамическое содержимое.
Когда речь заходит о протоколе связи (HTTP), он включает в себя формальное описание правил и форматов цифровых сообщений, обеспечивая эффективное общение между сервером и клиентским устройством.
Кроме того, в серверной части приложения часто используют базы данных, обеспечивая сохранность данных. Эти базы данных предоставляют интерфейс для постоянного хранения данных в памяти. Существует разнообразие типов баз данных, таких как MySQL, SQLite, MongoDB, PostgreSQL и другие, каждый со своими уникальными характеристиками и возможностями [11].
2. Языки программирования
Размер файла, производительность, совместимость и даже количество необходимых строк кода – все эти параметры разнятся в зависимости от выбранного серверного языка программирования. Метод программирования, известный как объектно-ориентированное программирование, где характеристики и функции объединяются в объекты, широко используется в различных серверных скриптовых языках. Существует деление языков программирования на компилируемые и интерпретируемые. К первой группе можно отнести: С++, C#, Java, Rust, Go, Kotlin. К интерпретируемым: Python, JavaScript, Ruby, PHP.
Компилируемый язык программирования — это язык, в котором программа перед выполнением преобразуется в машинный код. Процесс компиляции преобразует исходный код программы в исполняемый файл, который может быть запущен на определенной аппаратной платформе [12].
Преимущества использования компилируемых языков программирования включают в себя несколько ключевых факторов:
- Высокая производительность, которую сложно сравнить напрямую между двумя разными языками программирования. Эта особенность особенно ярко проявляется в крупных проектах, где выбирают между разными типами языков;
- Больший контроль над аппаратными ресурсами, такими как использование памяти и нагрузка на процессор [13].
Интерпретируемые языки. Интерпретируемый язык программирования — это язык, в котором программа выполняется непосредственно интерпретатором. Преимущества использования интерпретируемых языков:
- Изменения в коде проявляются непосредственно. Это позволяет программе собираться индивидуально для каждого пользователя;
- Более гибкая работа с динамической памятью и типами данных.
Однако, процесс интерпретации может быть медленным из-за выполнения кода в реальном времени. Несмотря на попытки ускорить этот процесс, начиная с 1960-х годов, различия в скорости выполнения кода в небольших проектах размером до 100 тысяч строк практически незаметны [14].
Ниже представлены разнообразные языки программирования, которые обладают своими особенностями [15].
C++. Возможности C полностью совпадают с инструментами объектно-ориентированного программирования, включая классы в C++. Этот язык используется в качестве низкоуровневого скриптового средства для эффективного взаимодействия с аппаратным обеспечением системы, повышая ее производительность. C++ становится идеальным выбором для разработки высокопроизводительных приложений системного уровня, таких как видеоигры и крупные веб-проекты.
C#. Предпочтительным языком для серверов и сред Windows является C#. Если команда веб-разработчиков использует технологии Microsoft, например, ASP.NET, C# становится наиболее эффективным инструментом. Он гармонично интегрируется в ваш технологический стек, обеспечивая стабильность и эффективность.
Java. Java, объектно-ориентированный язык общего назначения, разработан с учетом кросс-платформенной совместимости. Программы на Java могут запускаться на любом компьютере с установленной виртуальной машиной Java (JVM), что обеспечивает универсальность и доступность.
JavaScript (Node.js) Node.js доказал, что этот универсальный объектно-ориентированный скриптовый язык, который изначально был ориентирован на интерфейсную разработку, также может успешно использоваться на сервере приложений. JavaScript, являющийся одной из ключевых веб-технологий, стал популярным выбором для полноценной разработки с использованием полного стека технологий.
Python. Python предлагает мощную библиотеку для обработки данных на универсальном скриптовом языке. Простой синтаксис Python и компактный код делают его одним из наиболее производительных языков для серверной разработки. Он отлично подходит для проектов в области искусственного интеллекта и машинного обучения, благодаря своей гибкости и мощным библиотекам.
Scala. Scala поддерживает парадигмы функционального и объектно-ориентированного программирования. Он совместим с JVM и основан на Java, что делает его удобным выбором для разработчиков, знакомых с Java, и открывает доступ к богатой экосистеме Java.
Ruby. Ruby - это динамически типизированный язык программирования общего назначения, созданный Юкихиро “Мацем” Мацумото в середине 1990-х годов. Известен своей выразительностью и удобством в использовании, что делает его предпочтительным выбором для многих программистов [16].
3. Фреймворк для веб-разработки
Django - это востребованный фреймворк для веб-разработки на языке программирования Python. С его помощью можно создавать веб-сайты любой сложности. Например, компания Google (По требованию Роскомнадзора информируем, что иностранное лицо, владеющее информационными ресурсами Google является нарушителем законодательства Российской Федерации – прим. ред.) внедрила Django в некоторые из своих сервисов. После установки Django предоставляет широкий функционал:
- Встроенный веб-сервер, устраняет необходимость в установке отдельного сервера;
- Механизмы авторизации пользователей;
- Работа с базами данных;
- Создание шаблонов для страниц и веб-интерфейсов;
- Простые методы для отображения, наполнения и автоматизации веб-страниц;
- Система встроенного кэширования, которая снижает нагрузку на сайт.
Проще говоря, Django представляет собой набор элементов, позволяющих быстро собрать сложное веб-приложение с разветвленной логикой.
Express, благодаря своей популярности в мире Node.js, стал одним из наиболее актуальных фреймворков для веб-разработки на сегодняшний день. Его используют такие компании, как Accenture, IBM, Uber, и другие. Основной его характеристикой является минимализм, скорость и безупречная интеграция с возможностями Node.js, обеспечивая надежную асинхронную производительность. Также он обладает гибкостью, поддерживая как полноценные приложения, так и REST API.
Rails представляет собой фреймворк Model-View-Controller, использующий Ruby, и пользуется популярностью у разработчиков. Такие компании, как Airbnb, GitHub, Hulu и Shopify, являются активными пользователями Rails. Кроме того, для Rails существует множество полезных "gems" - библиотечных зависимостей, расширяющих функционал вашего приложения и ускоряющих процесс разработки. Однако основными недостатками Rails являются сложности развертывания и запуска в производственной среде [17].
Java Spring Boot — это средство с открытым исходным кодом, которое упрощает использование платформ на основе Java для создания микросервисов и веб-приложений, основная задача этого проекта заключается в обеспечении возможности наиболее простого создания веб-приложений с минимальными усилиями со стороны разработчиков. Spring Boot обладает обширным функционалом, но выделяются три важные характеристики: управление зависимостями, автоматическая конфигурация и использование встроенных контейнеров сервлетов.
Если говорить про упрощение управления зависимостями, то Spring Boot нацелен на упрощение процесса управления зависимостями. Для этого он автоматически включает необходимые внешние зависимости для каждого типа приложения на основе Spring и предоставляет их разработчикам через starter-пакеты.
При автоматической настройке Spring Boot пытается сконфигурировать Spring-приложение на основе добавленных jar-зависимостей.
Встроенная поддержка сервера приложений - контейнер сервлетов. Каждое веб-приложение Spring Boot включает встроенный веб-сервер. Теперь разработчику не нужно заботиться о настройке контейнера сервлетов и развертывании приложения на нем. Приложение может быть запущено как исполняемый jar-файл с использованием встроенного сервера. Если необходимо использовать отдельный HTTP-сервер, достаточно исключить зависимости по умолчанию. Spring Boot предоставляет отдельные starter-пакеты для различных HTTP-серверов [18,19].
Laravel. Laravel — это PHP-фреймворк с открытым исходным кодом, который создан для облегчения разработки сложных веб-ресурсов и приложений. Laravel — это инструментарий, который уже содержит все необходимое для быстрой разработки веб-приложений на PHP [20,21,22].
Flask — это веб-фреймворк для языка Python, который обеспечивает минимальный набор инструментов для разработки веб-приложений. С его помощью можно создавать как простые лендинги, так и многостраничные веб-сайты с множеством плагинов и сервисов. У Flask есть несколько преимуществ, которые выделяют его среди других фреймворков:
- Простой синтаксис.
- Удобные шаблоны, позволяющие быстро создавать прототипы веб-приложений.
- Обширный инструментарий для гибкой настройки сайтов под различные потребности [23,24].
FastAPI — это высокопроизводительный фреймворк для создания веб-приложений на Python. Он разрабатывался с учетом современных функций этого языка программирования и использует стандарт ASGI для асинхронного взаимодействия с клиентами. При необходимости FastAPI также может оперировать с WSGI. Возможность использования асинхронных функций для маршрутов и конечных точек является одной из ключевых особенностей данного фреймворка. Кроме того, FastAPI предоставляет возможность быстрого и эффективного создания веб-приложений, используя чистый и современный код на Python с поддержкой подсказок типов [25,26,27].
4. Базы данных
Важную часть в back-end технологиях представляют базы данных, которые подразделяются на реляционные и нереляционные.
Реляционная структура была создана для оптимизации приложений и облегчения их обслуживания. Реляционная модель данных стала основой стандартного представления информации и выполнения запросов. Затем появился язык структурированных запросов — SQL, который значительно повысил эффективность доступа к данным в базах данных. Благодаря стандартизации и оптимизации реляционных баз данных они стали наиболее широко применяемыми и востребованными.
В свою очередь нереляционные базы данных, известные также как NoSQL (Not Only SQL), стали ответом на изменяющиеся потребности хранения информации. Перед появлением реляционных баз данных существовали нереляционные варианты, особенность которых заключалась в использовании скриптов UNIX и хранении данных в формате ASCII файлов, а не SQL [28].
Каждая таблица представляет собой двумерную структуру, содержащую определенные типы структурированных данных. Для эффективного хранения и манипуляции данными с использованием таблиц, необходимо учесть важные аспекты, такие как индексация, ACID (Atomicity, Consistency, Isolation, Durability) и использование связей между таблицами. Индексация является ключевым элементом в ускорении запроса к данным в таблицах. Она позволяет создавать оптимизированные структуры данных для быстрого поиска и фильтрации информации. При использовании индексации SQL-запросы могут значительно ускоряться, что особенно важно при работе с большими объемами данных.
ClickHouse, как система управления базами данных с открытым исходным кодом, представляет собой мощное решение для обработки и анализа больших объемов аналитических данных. Одной из ключевых особенностей ClickHouse является его основа на колоночном принципе хранения данных. [29].
Колоночное хранение данных означает, что данные в таблицах хранятся и обрабатываются не по строкам, как в традиционных реляционных базах данных, а по столбцам. Это обеспечивает значительные преимущества, особенно в тех сценариях, когда требуется вставлять большие объемы аналитических данных и редко запрашивать информацию.
Когда вы сталкиваетесь с потребностью в анализе данных, состоящих из большого количества, ClickHouse выходит на первый план благодаря его способности эффективно сжимать и обрабатывать данные в столбцах. Это позволяет значительно ускорить агрегацию, фильтрацию и анализ данных.
В некоторых случаях, когда у нас нет четкой и предварительно определенной структуры данных, а данные могут иметь разный вид и состав, документоориентированные базы данных становятся весьма полезным инструментом. Примером такой базы данных является MongoDB.
В документоориентированных базах данных доступ к данным осуществляется с использованием уникальных идентификаторов документов, которые выступают в качестве ключей для получения информации. Данные в таких базах организованы в документы, которые могут иметь разную структуру и состав полей. Это делает документоориентированные базы данных гибкими и способными работать с неструктурированными, полуструктурированными или даже структурированными данными, которые могут изменяться со временем.
Следующая система хранения данных в формате "ключ-значение" представляет собой простую и эффективную структуру, где каждому ключу соответствует определенное значение. Этот подход идеально подходит для случаев, когда требуется быстрый доступ к данным по ключу и нет необходимости в сложной структуре данных.
В таких базах данных, как Redis, данные хранятся в виде пар ключ-значение и часто используются для следующих целей:
- Кэширование: Базы данных с ключ-значение являются идеальным выбором для кэширования данных. Они позволяют хранить результаты запросов или вычислений в памяти, обеспечивая быстрый доступ к ним и снижая нагрузку на основное хранилище данных.
- Учетные записи сеансов: Веб-приложения часто используют базы данных с ключ-значение для хранения информации о сеансах пользователей. Это позволяет эффективно управлять данными о сеансах и идентифицировать пользователей.
- Хранение конфигураций: Конфигурационные данные, такие как настройки приложений или параметры системы, могут быть удобно хранить в базах данных с ключ-значение. Это облегчает доступ к конфигурационным данным и их обновление.
Хранилища данных временных рядов применяются для сохранения наборов значений, связанных с конкретными временными точками. Это обычно данные телеметрии, получаемые от датчиков или даже устройств интернета вещей.
Рисунок 4. Хранилища данных временных рядов
Хранилище объектов. Подобного типа хранилища используются для сохранения и извлечения данных большого веса, в качестве которых могут выступать видеофайлы, изображения, файлы приложений и т. д. Само хранилище обладает, как правило, также достаточно большим объёмом, что позволяет ему хранить подобное содержимое.
Рисунок 5. Хранилище объектов
Хранилище внешних индексов. Используется для индексированных данных других хранилищ, то есть подобный тип хранилища выступает в роли посредника, который ускоряет доступ к другим базам [30].
Заключение
На основании вышеизложенного следует сказать, что существуют несколько ключевых тенденций в области back-end-разработки, подтверждающих рост интереса к определенным технологиям. Например, в настоящее время происходит увеличение популярности языков программирования, таких как Python и JavaScript, для создания серверной части приложений благодаря их удобству и гибкости. Также Множество компаний, специализирующихся на программном обеспечении, предоставляют услуги по серверной разработке, создавая высоко-интерактивные и отзывчивые онлайн-решения для бизнеса. На практике это означает:
- Обеспечение быстрого и удобного доступа для конечных пользователей.
- Экономию времени и усилий благодаря автоматизации многих рутинных задач.
- Создание высоконагруженных отказоустойчивых решений.
Если же говорить о существующих фреймворках, направленных на веб-разработку, то их существует большое количество, каждый из которых обладает уникальными возможностями и применяется в конкретных ситуациях и задачах.
Список литературы:
- What Is Backend Development / [Электронный ресурс]. - Режим доступа: https://www.dezven.com/blog/what-is-backend-development (дата обращения: 28.10.2023).
- Что такое серверная веб-разработка (backend development)? / [Электронный ресурс]. - Режим доступа: https://igorosa.com/what-is-backend-development/ (дата обращения: 28.10.2023).
- Как создать высоконагруженный сайт и его архитектуру / [Электронный ресурс]. - Режим доступа: https://merehead.com/ru/blog/how-build-scalable-web-applications/ (дата обращения: 28.10.2023).
- Веб-безопасность / [Электронный ресурс]. - Режим доступа: https://developer.mozilla.org/ru/docs/Learn/Server-side/First_steps/Website_security (дата обращения: 28.10.2023).
- How to Improve Web Application Performance / [Электронный ресурс]. - Режим доступа: https://www.shopify.com/nz/enterprise/web-application-performance (дата обращения: 28.10.2023).
- Что такое производительность веб-приложений? / [Электронный ресурс]. - Режим доступа: https://habr.com/ru/companies/tinkoff/articles/489230/ (дата обращения: 28.10.2023).
- Методика разработки высоконадёжных серверов на Go / [Электронный ресурс]. - Режим доступа: https://habr.com/ru/companies/ruvds/articles/413681/ (дата обращения: 28.10.2023).
- API design / [Электронный ресурс]. - Режим доступа: https://www.postman.com/api-platform/api-design/ (дата обращения: 28.10.2023).
- Найти, сохранить и защитить: как СУБД помогают аналитикам и маркетологам / [Электронный ресурс]. - Режим доступа: https://practicum.yandex.ru/blog/chto-takoe-subd/ (дата обращения: 28.10.2023).
- Significance of back end development and its prominent features / [Электронный ресурс]. - Режим доступа: https://goonlinetools.com/blog/significance-of-back-end-development-and-its-prominent-features/ (дата обращения: 28.10.2023).
- Introduction to Backend Development / [Электронный ресурс]. - Режим доступа: https://dev.to/kaperskyguru/introduction-to-backend-development-506a (дата обращения: 28.10.2023).
- Компилируемый и интерпретируемый язык программирования: разницы, особенности и сфера применения / [Электронный ресурс]. - Режим доступа: https://pointremont.ru/kompiliruemyj-i-interpretiruemyj-jazyk-programmirovanija-raznicy-osobennosti-i-sfera-primenenija/ (дата обращения: 28.10.2023).
- Интерпретируемый vs. компилируемый языки и почему это спрашивают на собеседованиях / [Электронный ресурс]. - Режим доступа: https://tproger.ru/articles/interpretiruemyj-vs-kompiliruemyj-yazyki-i-pochemu-eto-sprawivayut-na-sobesedovaniyah (дата обращения: 28.10.2023).
- Какие бывают языки программирования? / [Электронный ресурс]. - Режим доступа: https://habr.com/ru/articles/539784/ (дата обращения: 28.10.2023).
- The Future of Backend: 2024s Top Technologies / [Электронный ресурс]. - Режим доступа: https://atonce.com/blog/backend-technologies (дата обращения: 28.10.2023).
- The basics of backend development / [Электронный ресурс]. - Режим доступа: https://www.startechup.com/blog/back-end-development/ (дата обращения: 28.10.2023).
- 10 Best Web Development Frameworks to Use in 2023 / [Электронный ресурс]. - Режим доступа: https://hackr.io/blog/web-development-frameworks (дата обращения: 28.10.2023).
- Введение в Spring Boot: создание простого REST API на Java / [Электронный ресурс]. - Режим доступа: https://habr.com/ru/articles/435144/ (дата обращения: 28.10.2023).
- Запускаем первое веб-приложение на Spring Boot / [Электронный ресурс]. - Режим доступа: https://skillbox.ru/media/code/zapuskaem-pervoe-vebprilozhenie-na-spring-boot/ (дата обращения: 28.10.2023).
- Фреймворк Laravel: как работает и зачем нужен / [Электронный ресурс]. - Режим доступа: https://skillbox.ru/media/code/freymvork-laravel-kak-rabotaet-i-zachem-nuzhen/ (дата обращения: 28.10.2023).
- The PHP Framework for Web Artisans / [Электронный ресурс]. - Режим доступа: https://laravel.com/ (дата обращения: 28.10.2023).
- Laravel — экосистема, а не просто PHP-фреймворк / [Электронный ресурс]. - Режим доступа: https://habr.com/ru/articles/334776/ (дата обращения: 28.10.2023).
- Фреймворк Flask: как он работает и зачем нужен / [Электронный ресурс]. - Режим доступа: https://skillbox.ru/media/code/freymvork-flask-kak-on-rabotaet-i-zachem-nuzhen/ (дата обращения: 28.10.2023).
- Flask : A Python based micro web framework / [Электронный ресурс]. - Режим доступа: https://biomedicalhub.github.io/python-data/flask.html (дата обращения: 28.10.2023).
- Знакомство с FastAPI / [Электронный ресурс]. - Режим доступа: https://pythonru.com/biblioteki/znakomstvo-s-fastapi (дата обращения: 28.10.2023).
- Python Requests Library & FastAPI / [Электронный ресурс]. - Режим доступа: https://pycoders-nl.gitbook.io/pycoders-handbook/web-scraping/week-14/python-requests-library-and-fastapi (дата обращения: 28.10.2023).
- Как начать работать с FastAPI на Python / [Электронный ресурс]. - Режим доступа: https://pythonist.ru/kak-nachat-rabotat-s-fastapi-na-python (дата обращения: 28.10.2023).
- Ушанов, А. Р. Реляционные и нереляционные базы данных // Молодой ученый. 2021. № 23 (365). С. 111-114. (дата обращения: 05.12.2023).
- ClickHouse: Передовой инструмент для оперативной обработки данных / [Электронный ресурс]. - Режим доступа: https://habr.com/ru/companies/otus/articles/773174/ (дата обращения 28.10.2023).
- Реляционные и нереляционные базы данных: какие выбрать? / [Электронный ресурс]. - Режим доступа: https://habr.com/ru/companies/sberbank/articles/672022/ (дата обращения: 28.10.2023).