В статье рассматривается проблема поэтапной миграции монолитного backend-приложения на микросервисную архитектуру. Актуальность исследования обусловлена характерными для монолитной архитектуры ограничениями, возникающими по мере роста корпоративных информационных систем: высокой связанностью компонентов, необходимостью масштабирования системы в целом, ограниченными возможностями независимого развертывания отдельных компонентов и зависимостью основных бизнес-сценариев от внешних сервисов. Цель исследования заключается в анализе архитектурных паттернов поэтапной миграции с монолитной на микросервисную архитектуру и разработке методики оценки эффективности миграции на примере интеграции монолита на PHP/Yii2 с выделяемым сервисом, разработанным на языке Go. В исследовании применялись методы архитектурного и сравнительного анализа, проектирования экспериментального стенда и нагрузочного тестирования. В качестве стратегии миграции выбран подход Strangler Fig, предложено его сочетание с паттернами API Gateway/Reverse Proxy, Anti-Corruption Layer, Outbox, Circuit Breaker и обеспечением идемпотентности. На первом этапе рассматривается выделение модуля отправки уведомлений в отдельный Go-сервис. Создание заказа и запись события в таблицу Outbox выполняются в рамках одной локальной транзакции, после чего фактическая доставка уведомления осуществляется асинхронно. Для сравнения монолитной и целевой конфигураций разработаны экспериментальный стенд на базе Docker и методика нагрузочного тестирования с использованием k6. В качестве критериев оценки определены процентильные показатели времени ответа p50, p95 и p99, пропускная способность, доля ошибочных ответов и устойчивость системы при отказе зависимого компонента. Результаты исследования формируют методическую основу для организации поэтапной миграции как альтернативы полной переработке системы. Полномасштабный нагрузочный эксперимент и его статистический анализ будут проведены на следующем этапе исследования.
ТИМОШЕНКО Р.А.
Магистрант, Карагандинский технический университет имени Абылкаса Сагинова, г. Караганда, Казахстан.
E-mail: rombik2004r@gmail.com, https://orcid.org/0009-0004-4099-8220
БИГАЛИЕВА А.З.
PhD, ассоциированный профессор (доцент), Карагандинский технический университет имени Абылкаса Сагинова, г. Караганда, Казахстан
E-mail: bigalievaalfija@gmail.com, https://orcid.org/0000-0002-0136-5402
- Newman S. Building Microservices: Designing Fine-Grained Systems. 2nd ed. Sebastopol: O'Reilly Media, 2021. 612 p.
- Taibi D., Lenarduzzi V., Pahl C. Processes, Motivations and Issues for Migrating to Microservices Architectures: An Empirical Investigation // IEEE Cloud Computing. 2017. Vol. 4, № 5. P. 22–32. DOI: 10.1109/MCC.2017.4250931.
- Richardson C. Microservices Patterns: With Examples in Java. Shelter Island: Manning Publications, 2018. 520 p.
- Faustino D., Gonçalves N., Portela M., Silva A. R. Stepwise Migration of a Monolith to a Microservice Architecture: Performance and Migration Effort Evaluation // Performance Evaluation. 2024. Vol. 164. Art. 102411. DOI: 10.1016/j.peva.2024.102411.
- Microsoft. Strangler Fig pattern [Electronic resource]. URL: Microsoft Azure Architecture Center – Strangler Fig pattern. https://learn.microsoft.com/en-us/azure/architecture/patterns/strangler-fig
- Vernon V. Implementing Domain-Driven Design. Upper Saddle River: Addison-Wesley Professional, 2013. 656 p.
- Richardson C. Pattern: Transactional Outbox [Electronic resource]. URL: https://microservices.io/patterns/data/transactional-outbox.html
- Nygard M. T. Release It!: Design and Deploy Production-Ready Software. 2nd ed. Raleigh: Pragmatic Bookshelf, 2018. 368 p.
- Grafana Labs. Grafana k6 Documentation [Electronic resource]. URL: https://grafana.com/docs/k6/latest/
- Balalaie A., Heydarnoori A., Jamshidi P. Migrating to Cloud-Native Architectures Using Microservices: An Experience Report // Advances in Service-Oriented and Cloud Computing. 2016. P. 201–215. DOI: 10.1007/978-3-319-33313-7_15.
- Abgaz Y. M., McCarren A., Elger P., Solan D., Lapuz N., Bivol M., Jackson G. M., Yilmaz M., Buckley J. F., Clarke P. M. Decomposition of Monolith Applications IntoMicroservices Architectures: A Systematic Review // IEEE Transactions on Software Engineering. 2023. Vol. 49, № 8. P. 4213–4242. DOI: 10.1109/TSE.2023.3287297.
