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

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

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

Авторы: ,

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

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

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

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

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

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



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

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

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

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, микросервисная разработка, продукт, сторона клиента, СУБД.


Похожие статьи

Сравнительный анализ сред разработки и редакторов кода для web-разработчиков

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

Разработка мобильных приложений с использованием облачных баз данных

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

Грамотный выбор стратегии развёртывания микросервисного программного продукта

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

Актуальность применения микросервисной архитектуры в системах обработки данных

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

Разработка информационной системы корпоративного тестирования сотрудников со встроенным блоком графоаналитического представления результатов

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

Выбор языка программирования для разработки серверной части веб-приложения

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

Контейнеризация в системах обработки данных

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

Эволюция архитектурных стилей при разработке информационных систем: от монолитных приложений к микросервисной архитектуре

Архитектура приложения является краеугольным камнем в разработке программного обеспечения (далее ПО), определяя структуру того, как его основные компоненты взаимодействуют друг с другом. Существуют различные подходы к проектированию архитектуры прило...

Формализация требований для средств разработки и обучения нейронных сетей

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

Обзор платформ для разработки смарт-контрактов

Для того чтобы разработка смарт-контрактов была эффективной, необходимы знание и понимание разработчиками особенностей блокчейн-платформ. Целью написания статьи являлось проведение обзора текущего состояния платформ смарт-контрактов и их особенностей...

Похожие статьи

Сравнительный анализ сред разработки и редакторов кода для web-разработчиков

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

Разработка мобильных приложений с использованием облачных баз данных

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

Грамотный выбор стратегии развёртывания микросервисного программного продукта

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

Актуальность применения микросервисной архитектуры в системах обработки данных

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

Разработка информационной системы корпоративного тестирования сотрудников со встроенным блоком графоаналитического представления результатов

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

Выбор языка программирования для разработки серверной части веб-приложения

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

Контейнеризация в системах обработки данных

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

Эволюция архитектурных стилей при разработке информационных систем: от монолитных приложений к микросервисной архитектуре

Архитектура приложения является краеугольным камнем в разработке программного обеспечения (далее ПО), определяя структуру того, как его основные компоненты взаимодействуют друг с другом. Существуют различные подходы к проектированию архитектуры прило...

Формализация требований для средств разработки и обучения нейронных сетей

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

Обзор платформ для разработки смарт-контрактов

Для того чтобы разработка смарт-контрактов была эффективной, необходимы знание и понимание разработчиками особенностей блокчейн-платформ. Целью написания статьи являлось проведение обзора текущего состояния платформ смарт-контрактов и их особенностей...

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