ПРОБЛЕМАТИКА МОНІТОРИНГУ МІКРОСЕРВІСНИХ ДОДАТКІВ
09.05.2023 22:23
[1. Информационные системы и технологии]
Автор: Вальчук Андрій Юрійович, аспірант, Національний університет “Львівська політехніка” м. Львів;
Дудикевич Валерій Богданович, доктор технічних наук, професор, Національний університет “Львівська політехніка” м. Львів
Ключові відмінності між моніторингом монолітів та мікросервісів
Моноліт, або монолітна архітектура — це традиційна модель програмного забезпечення, яка побудована як уніфікована одиниця, самодостатня та незалежна від інших програм. В свою чергу має такі особливості:
-єдиний код, який об'єднує всі бізнес функції;
-єдине середовище для виконання коду - додаток виконується на віртуальній або фізичній машині (сервері);
-процес оновлення вимагає рекомпіляції коду всього додатку та залученості багатьох команд, що в свою чергу вимагає додаткового часу та зусиль.
Моноліти можуть бути зручними на ранніх стадіях життя проекту для полегшення керування кодом і його розгортання. Це дозволяє розгорнути всі функції в монолітному додатку одночасно.
Мікросервіси, або мікросервісна архітектура — це архітектурний стиль, який визначає додаток(програму) як набір сервісів, які в свою чергу:
-Розгортаються автоматизовано;
-Слабко з’єднані між собою, окремий контейнер - окремий сервіс, або бізнес функція;
-Незалежно керуються окремими командами.
Мікросервісна архітектура дозволяє швидко, часто та стабільно забезпечувати оновлення та підтримку певних компонентів без необхідності оновлювати цілий додаток.
Додатки з мікросервісною архітектурою зазвичай працюють у контейнерах (наприклад, Docker), можуть масштабуватися в кількох середовищах, якими зазвичай керують контейнерні оркестратори (наприклад, Kubernetes).
Моноліти зазвичай працюють безпосередньо на серверах або віртуальних машинах, які мають визначені характеристики такі як кількість ядер процесора, обсяг оперативної пам’яті, тощо.
Особливості моніторингу мікросервісних додатків
Головним завданням моніторингу додатків з мікросервісною архітектурою є забезпечення високої продуктивності та безперебійної роботи додатку шляхом вимірювання якості функціонування та взаємодії між усіма його компонентами.
Традиційні засоби моніторингу включають в себе моніторинг інфраструктури або моніторинг конкретних програмних компонентів, чого зазвичай достатньо при організації моніторингу додатків з монолітною архітектурою. Оскільки при мікросервісному архітектурному підході окремі сервіси додатку розміщуються в окремих контейнерах виникає необхідність моніторити також взаємодію між різними контейнерами, як з точки зору виконання коду так і з точки зору інфраструктури, де він виконується.
Вимірювання можливості сервісів взаємодіяти один з одним та забезпечувати визначений час виконання коду для кінцевого користувача вимагає використання наступних підходів:
Моніторинг можливості надання сервісів кінцевому користувачу та вимірювання їх якості. Базується на оцінці якості надання сервісу для користувача а також вимірювання його продуктивності з різних платформ, таких як веб браузер, або мобільний пристрій.
Моніторинг взаємодії між різними сервісами додатку (контейнерами), що базується на вимірюванні часу, витраченого кожним компонентом для обслуговування транзакції. Це охоплює взаємодію між пристроєм кінцевого користувача та між сервісами, які залучені до виконання користувацького запиту.
Наскрізний моніторинг — основна задача якого ізолювати проблеми в середовищі мікросервісів, шляхом моніторингу транзакцій на різних етапах їх виконання, тобто вимірюванням часу необхідного на виконнання транзакції між різними сервісами.
Інша значна проблема полягає у визначенні команди, відповідальної за кожен сервіс: різні команди займаються розробкою різних компонентів і відповідальні за весь життєвий цикл окремого сервісу, тому моніторинг повинен бути частиною безперервної інтеграції та безперервної доставки (CI/CD), щоб гарантувати продуктивність оновленого коду.
Отже, при використанні підходів мікросервісної архітектури при розробці додатківб, для забезпечення їх моніторингу недостатньо використовувати класичні засоби, оскільки перш за все середовище виконання коду відрізняється від класичних монолітних додатків. Контейнери мають коротший життєвий цикл, ніж віртуальні машини, що ускладнює доступ до журналів подій та можливості збирання метрик і це повинно враховуватись при впровадження централізованої системи моніторингу.
Література
1.Microservice Architecture [Електронний ресурс] - https://microservices.io/
2.Marcello Cinque; Raffaele Della Corte; Antonio Pecchia. Advancing Monitoring in Microservices Systems. 2019 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW)
3.Takashi Shiraishi; Masaaki Noro; Reiko Kondo; Yosuke Takano; Naoki Oguchi. Real-time Monitoring System for Container Networks in the Era of Microservices. 2020 21st Asia-Pacific Network Operations and Management Symposium (APNOMS)