Przewidywanie zmian wydajności aplikacji rozproszonych

Wojtek Rząsa

Wszyscy tworzymy systemy rozproszone, nawet jeśli to „tylko proste aplikacje www”. Z aplikacją rozproszoną mamy do czynienia już wtedy, gdy biblioteka frontendowa przechowuje stan kontrolek, który musi być zsynchronizowany z backendem. Innym przykładem jest uruchomienie aplikacji w środowisku produkcyjnym bazującym na rozproszonej infrastrukturze cloudowej. Oczywistym przykładem jest też korzystanie z zewnętrznych API. Środowisko rozproszone jest z natury zmienne i trudno przewidywalne. Czy zastanawialiście się kiedyś jaki wpływ na wydajność Waszej aplikacji będą miały zmiany tego środowiska? Jak się zmieni wydajność aplikacji gdy wydłuży się czas odpowiedzi jednego z zewnętrznych serwisów? A jeśli load balancer nierówno rozłoży obciążenie na poszczególne serwery aplikacji, albo jeśli zmienicie wydajność i liczbę maszyn które obsługują aplikację? Można to oczywiście przetestować, ale wymaga to na ogół sporo wysiłku i poniesienia niemałego kosztu (wliczając w to cenny czas pracy). Można to jednak zrobić łatwiej, szybciej i taniej. Zaprezentuję dwa konkretne przykłady w których przewiduję zmiany wydajności rzeczywistych aplikacji z mniejszym wysiłkiem i w krótszym czasie niż można to zrobić za pomocą testów. W swojej pracy używam symulacji, która pozwala analizować zachowanie systemu opisanego wygodnym, przejrzystym językiem dziedzinowym (DSL). Metoda została opisana w pracach naukowych [1, 2, 3, 4] i przedstawiona na międzynarodowych konferencjach. Nie zamierzam jednak dyskutować o części naukowej, ale o możliwości wykorzystania w praktyce. Na obecnym etapie szukam kolejnych praktycznych zastosowań tego podejścia, więc bardzo chętnie przedyskutuję praktyczne problemy i wykonam większość pracy potrzebnej, żeby je przeanalizować i dostarczyć potrzebnych odpowiedzi.

[1] Rząsa W.: Simulation-Based Analysis of a Platform as a Service Infrastructure Performance from a User Perspective, P. Gaj et al. (Eds.): CN 2015, CCIS 522, pp. 182–192, 2015 ISBN: 978-3-319-19418-9.

[2] Rząsa W., Rzońca D.: Event-Driven Approach to Modeling and Performance Estimation of a Distributed Control System, in: Gaj P., Kwiecień A., and Stera P. (Eds.): Computer Networks 2016, Communications in Computer and Information Science 608, Springer International Publishing 2016, pp. 168-179.

[3] Rząsa, W.: Predicting Performance in a PaaS Environment: a Case Study for a Web Application. Computer Science, [S.l.], v. 18, n. 1, p. 21, mar. 2017. ISSN 2300-7036. Available at: . Date accessed: 05 Sep. 2017. doi:http://dx.doi.org/10.7494/csci.2017.18.1.21.

[4] Rząsa W., Jamro M., Rzonca D. (2017) Improving Accuracy of a Network Model Basing on the Case Study of a Distributed System with a Mobile Application and an API. In: Gaj P., Kwiecień A., Sawicki M. (eds) Computer Networks. CN 2017. Communications in Computer and Information Science, vol 718. Springer, Cham.