Востребованные технологии для разработки микросервисов | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 13 марта, печатный экземпляр отправим 17 марта.

Опубликовать статью в журнале

Авторы: ,

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №43 (333) октябрь 2020 г.

Дата публикации: 21.10.2020

Статья просмотрена: 23 раза

Библиографическое описание:

Штефуряк, А. С. Востребованные технологии для разработки микросервисов / А. С. Штефуряк, Т. С. Яницкая. — Текст : непосредственный // Молодой ученый. — 2020. — № 43 (333). — С. 17-19. — URL: https://moluch.ru/archive/333/74358/ (дата обращения: 28.02.2021).



В данной статье производится обзор и анализ сочетания наиболее востребованных технологий, применяемых в разработке программных продуктов с микросервисной архитектурой.

Ключевые слова: микросервисы, программный продукт, разработка.

Несмотря на всю свободу выбора инструментов разработки и сред исполнения для программных продуктов на основе микросервисной архитектуры, невозможно не учитывать производственные интересы. При подборе инструментария необходимо учитывать возможность обеспечения простоты, скорости и гибкости процесса разработки, а среды исполнения должны предоставлять необходимый набор возможностей для организации непрерывной интеграции и доставки.

OpenShift является контейнерной платформой, расширяющей возможности инструментария контейнерного оркестратора Kubernetes, который в свою очередь создан для управления контейнеризированными приложениями — микросервисами [1]. По своей концепции контейнеры похожи на виртуальные машины: каждый имеет свой собственный процессор, память, файловую систему и так далее. Тот факт, что контейнеры никак не связаны с базовой инфраструктурой (а именно — инфраструктурой физического сервера, на котором они запущены), добавляет им важное свойство переносимости, в том числе и между облачными средами. Кроме предоставления виртуального контейнерного пространства и управления им, Kubernetes также выполняет важные функции для поддержания жизненного цикла контейнеров.

OpenShift, в свою очередь, не только предоставляет графический интерфейс для наглядной визуализации развёрнутых контейнеров и связей между ними, но и дополняет Kubernetes рядом компонентов, отвечающих за аутентификацию и безопасность, мониторинг и управление логами, сетевое взаимодействие контейнеров между собой и автоматизацию процессов доставки.

Цель Java-фреймворка Spring Boot — упростить создание программных продуктов на основе Spring. Среди обилия возможностей, предоставляемых Spring Boot, стоит отметить упрощённое управление зависимостями, автоматическую конфигурацию и встроенные web-серверы [2]. Упрощённый процесс управления зависимостями подразумевает, что для добавления нового функционала к разрабатываемому программному продукту достаточно указать соответствующий starter-пакет, который содержит в себе все Spring-зависимости, которые могут потребоваться для реализации задуманного. Также, после подключения starter-пакета, Spring Boot произведёт автоматическую конфигурацию всех новых зависимостей, результатом чего будет являться готовое к работе приложение со стандартной конфигурацией. Однако, автоматическую конфигурацию в любой момент можно изменить, что добавляет гибкости фреймворку. Spring Boot позволяет упростить процесс подготовки приложения к развёртыванию ввиду того, что каждое приложение содержит в своём составе подходящий для него web-сервер, если это предусмотрено конфигурацией зависимостей. Учитывая тот факт, что Spring Boot тесно интегрирован с продуктами Netflix OSS, реализующими множество паттернов микросервисной разработки, данный фреймворк является подходящим для разработки программного продукта с микросервисной архитектурой. За хранение конфигураций, например, может отвечать Spring Cloud Config — горизонтально масштабируемое хранилище. Оно поддерживает динамическое обновление конфигураций и может использовать в качестве источников конфигураций как системы контроля версий, так и обычные локальные файлы. Кроме этого, данное хранилище имеет возможность гибкой настройки поведения микросервисов в зависимости от полученных ими конфигураций. Встроенная интеграция с Netflix Eureka позволяет наиболее простым способом реализовать в программном продукте паттерн Service Discovery. Spring Cloud Security позволяет настраивать авторизацию для программного продукта под конкретные нужды, фактически являясь набором из Spring-аннотаций и автоматической конфигурации. Реализация функционала при помощи Spring Cloud Security поддерживается как со стороны авторизационного сервера, так и со стороны клиента. Для соблюдения паттерна API Gateway в Spring Boot осуществлена интеграция с Zuul-реализацией API Gateway от Netflix. Zuul включается в состав приложения добавлением соответствующей зависимости и использованием всего лишь одной аннотации. Имеет возможность детализированной настройки маршрутизации входящих запросов. Балансировку на стороне клиента осуществляет Netflix Ribbon, содержащий обширный список параметров для конфигурации. Для упрощения установки связей между микросервисами возможно использование HTTP-клиента Feign, интегрированного с Ribbon. В этом случае для реализации возможности обращения к какому-либо микросервису с помощью HTTP-запроса необходимо только определить Java-интерфейс, а всё остальное сделает Spring.

MongoDB — документоориентированная СУБД, использующая коллекции JSON-подобных документов для хранения данных. Является кроссплатформенной, сочетая в себе высокую производительность и лёгкую масштабируемость. В отличие от привычных многим реляционных СУБД, MongoDB не требует описания схемы данных для определения структуры таблиц и связей между ними, то есть документы в пределах одной коллекции могут отличаться друг друга по своей структуре [3]. Эта особенность данной СУБД позволяет сократить время вывода программного продукта в рабочий режим, а также не тратить ресурсы на разработку различного рода миграционных сценариев, необходимых при обновлении программных продуктов, использующих реляционные СУБД. Являясь NoSQL базой данных, MongoDB поддерживает запросы на языке JavaScript. Однако, MongoDB обладает также рядом возможностей, привычных для реляционных СУБД: индексация и агрегация.

Функция репликации также поддержана в MongoDB. В процессе репликации данные с нескольких серверов синхронизируются между собой, что позволяет уменьшить затраты ресурсов на определение и доступ к необходимому серверу при запросе, а также повысить доступность данных, копии которых хранятся на нескольких серверах одновременно.

Горизонтальное масштабирование в MongoDB предоставляется за счёт использования механизма шардинга. Благодаря его реализации имеется возможность подключения дополнительных серверов для хранения, записи и чтения данных, что особо важно при росте количества данных до таких объёмов, когда один сервер теряет возможность их качественно и своевременно обрабатывать.

Заканчивая обзор наиболее востребованных в реальном производстве средств разработки и сред исполнения, можно сделать вывод, что представленная комбинация технологий как нельзя лучше подходит для микросервисной разработки. Рассмотренные инструменты можно считать хорошими примерами, удовлетворяющими всем потребностям, возникающим при разработке программных продуктов с микросервисной архитектурой, а также обладающими всеми необходимыми свойствами для наиболее удобной и быстрой работы.

Литература:

  1. Маркелов А. А. Введение в технологии контейнеров и Kubernetes — М.: ДМК Пресс, 2019.
  2. Лонг Д., Бастани К. Java в облаке. Spring Boot, Spring Cloud, Cloud Foundry — СПб.: Питер, 2019.
  3. Бэнкер К. MongoDB в действии — М.: ДМК Пресс, 2017.
Основные термины (генерируются автоматически): программный продукт, API, автоматическая конфигурация, микросервисная архитектура, среда исполнения, OSS, микросервисная разработка, продукт, сторона клиента, СУБД.


Задать вопрос