Статья опубликована в рамках: Научного журнала «Студенческий» № 27(365)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал
ИСПОЛЬЗОВАНИЕ МИКРОСЕРВИСНОЙ АРХИТЕКТУРЫ ПРИ РАЗРАБОТКЕ ПРОГРАММНЫХ КОМПЛЕКСОВ
USE OF MICROSERVICE ARCHITECTURE IN SOFTWARE SYSTEMS DEVELOPMENT
Fendrikov Alexey Valerievich
Student, Department of Information Technologies and Computing Systems, Moscow State University of Technology "STANKIN",
Russia, Moscow
АННОТАЦИЯ
В статье рассматриваются принципы построения программных комплексов на основе микросервисной архитектуры. Проанализированы подходы к декомпозиции предметной области, особенности взаимодействия сервисов и типичные проблемы, возникающие при переходе от монолитной архитектуры к микросервисной.
ABSTRACT
The article discusses the principles of building software systems based on microservice architecture. Approaches to domain decomposition, features of service interaction, and typical problems arising when transitioning from monolithic to microservice architecture are analyzed.
Ключевые слова: микросервисная архитектура; декомпозиция; распределенные транзакции; масштабируемость; разработка программного обеспечения.
Keywords: microservice architecture; decomposition; distributed transactions; scalability; software development.
Увеличение сложности программных комплексов и рост требований к скорости внедрения новых функциональных возможностей привели к постепенному отказу от монолитной архитектуры в пользу микросервисного подхода, предполагающего разделение приложения на набор небольших независимых сервисов, каждый из которых реализует ограниченную предметную функцию и может разрабатываться, тестироваться и разворачиваться независимо от остальных компонентов системы.
В основе микросервисной архитектуры лежит принцип единственной ответственности, согласно которому каждый сервис отвечает за реализацию строго ограниченного набора бизнес-функций. Границы сервисов определяются на основе декомпозиции предметной области с использованием подходов доменно-ориентированного проектирования, позволяющих выделить логически завершенные контексты, минимально зависящие друг от друга [1, с. 33].
Взаимодействие между микросервисами осуществляется посредством сетевых протоколов, что порождает ряд специфических проблем, отсутствующих в монолитных приложениях. В частности, обеспечение целостности данных при выполнении операций, затрагивающих несколько сервисов, требует применения паттерна распределенных транзакций Saga, предполагающего последовательное выполнение локальных транзакций с возможностью компенсации в случае возникновения ошибки на одном из этапов [2, с. 98].
Практика внедрения микросервисной архитектуры выявляет также ряд организационных и технических сложностей: увеличение сетевых задержек вследствие межсервисного взаимодействия, усложнение процессов мониторинга и трассировки запросов, проходящих через несколько сервисов, а также необходимость обеспечения согласованности версий программных интерфейсов сервисов [3, с. 61]. Указанные проблемы решаются за счет внедрения инфраструктуры сервисной сетки, централизованного логирования и распределенной трассировки.
Несмотря на дополнительную сложность эксплуатации, микросервисная архитектура предоставляет существенные преимущества с точки зрения организации процесса разработки: независимые команды получают возможность разрабатывать и развертывать свои сервисы без необходимости координации с другими командами, что сокращает время вывода новых функций и позволяет использовать различные технологии для реализации отдельных сервисов.
Таким образом, применение микросервисной архитектуры целесообразно при разработке крупных программных комплексов, характеризующихся высокими требованиями к масштабируемости и скорости внесения изменений. Вместе с тем переход к данной архитектуре требует тщательного анализа предметной области и готовности организации к решению дополнительных задач, связанных с эксплуатацией распределенной системы.
Список литературы:
- Ричардсон К. Микросервисы. Паттерны разработки и рефакторинга. — М.: ДМК Пресс, 2019. — 544 с.
- Ньюмен С. Создание микросервисов. — СПб.: Питер, 2016. — 304 с.
- Фаулер М. Архитектура корпоративных программных приложений. — М.: Вильямс, 2004. — 544 с.

