У статті розглядається проблема масштабування мікросервісів в кластері Kubernetes, розглянуто існуючі підходи масштабування мікросервісної архітектури та запропоновано підхід до масштабування шляхом міграції частини компонентів. На відміну від найбільш поширених підходів горизонтального та вертикального масштабування, в яких необхідне виділення додаткових ресурсів для їх здійснення, суть запропонованого підходу полягає в міграції частини компонентів, які не є критично важливими для кінцевого користувача системи, на інший Kubernetes кластер. Запропонований підхід дозволяє звільнити ресурси на кластері в якому збільшується навантаження без необхідності залучення додаткових ресурсів. Це, в свою чергу, зменшує вартість обслуговування системи. Також було проведено порівняння реактивного та проактивного підходу до прийняття рішення системою про масштабування. Було обрано проактивний підхід до прийняття рішення, оскільки на відміну від реактивного підходу, де масштабування відбувається як реакція на збільшення навантаження в системі, в проактивному підході рішення про масштабування приймається на основі прогнозованих даних, ще до того, як реальне навантаження на систему почне зростати, що дозволить зберегти показник якості обслуговування QOS на хорошому рівні. Для вибору найоптимальнішого способу прогнозування навантаження було розглянуто існуючі моделі прогнозування та проведено практичне порівняння моделей прогнозування ARIMA, Prophet, LSTM. В результаті порівняння було обрано ARIMA, як модель для реалізації запропонованого підходу, було реалізовано запропонований підхід у вигляді docker контейнера з python застосунком всередині. Даний застосунок отримує дані про систему з Prometheus бази даних та здійснює прогнозування, після чого змінює конфігураційні файли з описом розгортання для ArgoCD та зберігає зміни в Git репозиторії. Після того як змінені конфігураційні файли потрапляють в Git репозиторій - ArgoCD отримує оновленну конфігурацію та проводить порівняння її з поточним розгортанням, якщо оновлена конфігурація відрізняється від існуючого розгортання- ArgoCD автоматично проводить інфраструктуру до заданого стану.
[1] S. J. Taylor and B. Letham, “Forecasting at scale” in The American Statistician, vol. 72, no. 1, pp. 37-45, 2018, doi: 10.1080/00031305.2017.1380080.
[2] J. Hamilton, “Time Series Analysis” Princeton University Press, 1994, ISBN: 9780691042893.
[3] B. Billah, M. King, R. Snyder, and A. Koehler, “Exponential smoothing model selection for forecasting” International Journal of Forecasting, vol. 22, pp. 239-247, 2006, doi: 10.1016/j.ijforecast.2006.03.005.
[4] B. Billah, M. King, R. Snyder, and A. Koehler, “Forecasting time series using a methodology based on autoregressive integrated moving average and genetic programming” 2006.
[5] A. Graves, “Long Short-Term Memory” Neural Networks, vol. 32, pp. 231-247, 2012, doi: 10.1016/j.neunet.2012.02.019.
[6] C. Beneditto, A. Satrio, W. Darmawan, B. Unrica, and N. Hanafiah, “Time series analysis and forecasting of coronavirus disease in Indonesia using ARIMA model and PROPHET” 2021.
[7] R. Shumway and D. Stoffer, “ARIMA Models” Springer, 2017, doi: 10.1007/978-3-319-52452-8.
[8] F. Beetz and S. Harrer, “GitOps: The Evolution of DevOps?” 2021.
[9] 2B. Yuen, A. Matyushentsev, T. Ekenstam, and J. Suen, “GitOps and Kubernetes: Continuous Deployment with Argo CD, Jenkins X, and Flux” O'Reilly Media, 2021, ISBN: 978-1492094317.
[10]B. Yuen, A. Matyushentsev, T. Ekenstam, and J. Suen, “Forecasting Time Series Data with Facebook Prophet” Packt Publishing, 2021, ISBN: 978-1838982461.