| Literature DB >> 35035268 |
Matteo Camilli1, Barbara Russo1.
Abstract
CONTEXT: The microservices architectural style is gaining momentum in the IT industry. This style does not guarantee that a target system can continuously meet acceptable performance levels. The ability to study the violations of performance requirements and eventually predict them would help practitioners to tune techniques like dynamic load balancing or horizontal scaling to achieve the resilience property.Entities:
Keywords: Growth theory; Microservices systems; Performance requirement; Point processes; Time series analysis
Year: 2022 PMID: 35035268 PMCID: PMC8749120 DOI: 10.1007/s10664-021-10088-0
Source DB: PubMed Journal: Empir Softw Eng ISSN: 1382-3256 Impact factor: 3.762
Fig. 1Overview of the main stages of our methodology
Finite Growth Models
| Model and type | Equation | Description |
|---|---|---|
| Goel-Okumoto (GO); Goel and Okumoto ( | ||
| GO S-shaped (GOS); Yamada et al. ( | ||
| Gompertz (Gomp); Virene ( |
| |
| 0 < | ||
| Hossain and Dahiya ( | ||
| Logistic (L); Kececioglu ( | ||
| Weibull (W); Goel ( |
| |
| Weibull more S-shaped (WS); Iannino and Musa ( |
| |
| Yamada Exponential (YE); Yamada et al. ( |
| |
| ( | ||
| Yamada Raleigh (YR); Yamada et al. ( |
| |
Operations exposed by microservices of Sock Shop
| Label | Path (relative) | Method |
|---|---|---|
| addToCart | /cart | POST |
| basket | /basket.htm | GET |
| catalogue | /category.html | GET |
| cataloguePage | /catalogue?page = {}&size = {} | GET |
| catalogueSize | /catalogue/size?size= {} | GET |
| createOrder | /orders | POST |
| getAddress | /address | GET |
| getCard | /card | GET |
| getCart | /cart | GET |
| getCatalogue | /catalogue | GET |
| getCustomer | /customers/{} | GET |
| getItem | /catalogue/{} | GET |
| getOrders | /orders | GET |
| getRelated | /catalogue?sort = {}&size = {}&tags = {} | GET |
| home | /index.html | GET |
| login | /login | GET |
| showDetails | /detail.html?id = {} | GET |
| tags | /tags | GET |
| viewOrdersPage | /customer-orders.html | GET |
Fig. 2Example of usage profile defined through the workload specification model, a number of behavior models, and the behavior mix
Fig. 3Infrastructure used to automate the in-vitro experiments
Fig. 4timeline
Fig. 5In-production infrastructure of the Telecommunication System
Fig. 6Example of concave and S-shaped models
Fig. 7GO model for (blue line) calibrated from observations (red line)
Measures of Accuracy (Rossi et al. 2010)
| Measure | Formula | Description and value range |
|---|---|---|
| Goodness of fit ( | Coefficient of Determination. How good is the model to approach the observed data w.r.t. the mean of the observed data | |
| Relative precision of fit (RPF) |
| Size of the 95% Confidence Interval (CI) of the fitted curve normalized with the size of the interval of time service delivered; complementary to CoF; minimum ≥ 0 |
| Coverage of fit (CoF) | Percentage of data captured by the 95% CI; complementary to RPF; maximum in (0%,100%) | |
| Predictive ability (PA) | Portion of time needed by the model to approach the total final number of observed failures, A; complementary to AFP; minimum in (0,1) | |
| Accuracy of final point (AFP) | Portion of remaining failures (defect slippage). A and |
Fig. 8Performance violations of microservice operations collected during Test2
Fitted parameters a, b, and c (when available) of the models reported in Table 10 per operation. Empty cells indicate no significant fitting, boldface indicates negative parameter values
| service | GO | GOS | Gomp | HD | L | W | WS | YE | YR | |
|---|---|---|---|---|---|---|---|---|---|---|
| a | 8.78e + 09 | 1.21e + 02 | 1.38e + 02 | 2.37e + 02 | 1.12e + 02 | 1.59e + 10 | 1.54e + 08 | 1.65e + 08 | 1.40e + 09 | |
| addToCart | b | 6.49e-12 | 1.67e-03 | 4.66e-02 | 7.01e-04 | 1.21e + 01 | 2.05e-12 | 2.04e-05 | 6.98e-08 | |
| c | 9.99e-01 | 2.49e + 00 | 2.39e-03 | 1.07e + 00 | 5.37e-01 | 1.76e-06 | ||||
| a | 9.43e + 01 | 5.87e + 01 | 6.10e + 01 | 6.45e + 01 | 5.61e + 01 | 7.14e + 01 | 2.16e + 12 | 4.01e + 09 | 7.95e + 08 | |
| basket | b | 5.32e-04 | 2.45e-03 | 5.66e-02 | 1.66e-03 | 9.44e + 00 | 2.51e-04 | 4.62e-06 | 2.35e-08 | 6.63e-08 |
| c | 9.98e-01 | 1.63e + 00 | 3.25e-03 | 1.17e + 00 | 2.10e-02 | 5.32e-04 | 3.38e-06 | |||
| a | 2.35e + 10 | 6.03e + 01 | 7.45e + 01 | 5.41e + 01 | 1.66e + 12 | 3.65e + 08 | 3.12e + 09 | |||
| catalogue | b | 9.94e-13 | 1.34e-03 | 3.93e-02 | 1.36e + 01 | 1.50e-08 | ||||
| c | 9.99e-01 | 2.14e-03 | 4.87e-03 | 1.26e-06 | ||||||
| a | 2.95e + 10 | 8.68e + 01 | 7.19e + 01 | 6.07e + 01 | 5.09e + 01 | 1.26e + 02 | 1.72e + 12 | 1.77e + 08 | 6.67e + 08 | |
| cataloguePage | b | 7.60e-13 | 9.31e-04 | 1.84e-02 | 1.83e-03 | 2.09e + 01 | 5.87e-06 | 8.09e-08 | ||
| c | 9.99e-01 | 9.39e + 00 | 2.60e-03 | 1.49e + 00 | 4.82e-03 | 9.60e-07 | ||||
| a | 1.50e + 11 | 2.04e + 02 | 2.18e + 02 | 4.33e + 02 | 1.74e + 02 | 1.15e + 08 | 1.32e + 08 | 1.30e + 08 | 4.90e + 09 | |
| catalogueSize | b | 5.57e-13 | 1.42e-03 | 3.71e-02 | 6.12e-04 | 1.27e + 01 | 4.01e-10 | 2.64e-05 | 3.21e-08 | |
| c | 9.99e-01 | 2.65e + 00 | 2.41e-03 | 1.08e + 00 | 5.41e-01 | 1.57e-06 | ||||
| a | 5.43e + 01 | 3.85e + 01 | 4.66e + 01 | 8.38e + 01 | 4.19e + 01 | 6.64e + 08 | 1.14e + 12 | 7.22e + 08 | 1.35e + 09 | |
| createOrder | b | 7.00e-04 | 2.71e-03 | 1.00e-01 | 6.27e + 00 | 3.18e-10 | 7.53e-08 | 2.66e-08 | ||
| c | 9.99e-01 | 2.41e-03 | 7.00e-01 | 4.66e-02 | 7.01e-04 | 3.61e-06 | ||||
| a | 1.94e + 10 | 1.13e + 02 | 1.22e + 02 | 9.70e + 01 | 4.47e + 09 | 2.04e + 12 | 2.07e + 08 | 2.47e + 09 | ||
| getAddress | b | 2.24e-12 | 1.33e-03 | 3.50e-02 | 1.29e + 01 | 4.00e-12 | 5.84e-06 | 3.42e-08 | ||
| c | 9.99e-01 | 2.24e-03 | 1.12e + 00 | 1.75e-02 | 1.46e-06 | |||||
| a | 6.85e + 02 | 1.37e + 02 | 1.68e + 02 | 1.29e + 03 | 1.40e + 02 | 2.24e + 08 | 1.17e + 13 | 3.44e + 08 | 5.95e + 08 | |
| getCard | b | 1.09e-04 | 1.84e-03 | 5.68e-02 | 9.42e + 00 | 4.78e-10 | 1.66e-06 | 2.00e-06 | 1.95e-07 | |
| c | 9.99e-01 | 2.22e-03 | 9.39e-01 | 1.10e-01 | 1.09e-04 | 2.16e-06 | ||||
| a | 1.27e + 02 | 1.12e + 02 | 1.13e + 02 | 1.15e + 02 | 1.10e + 02 | 5.51e + 08 | 1.55e + 13 | 8.21e + 09 | 2.44e + 09 | |
| getCart | b | 1.61e-03 | 4.55e-03 | 5.31e-02 | 3.55e-03 | 9.35e + 00 | 3.58e-09 | 1.77e-06 | 1.54e-08 | 4.38e-08 |
| c | 9.96e-01 | 1.88e + 00 | 5.85e-03 | 5.61e-01 | 8.29e-02 | 1.61e-03 | 1.04e-05 | |||
| a | 9.70e + 01 | 2.42e + 01 | 3.13e + 01 | 1.80e + 02 | 2.46e + 01 | 4.08e + 08 | 8.15e + 09 | 6.11e + 08 | 2.34e + 08 | |
| getCatalogue | b | 1.34e-04 | 1.77e-03 | 6.24e-02 | 8.98e + 00 | 5.50e-11 | 5.31e-05 | 1.58e-07 | 8.77e-08 | |
| c | 9.99e-01 | 2.13e-03 | 9.11e-01 | 1.34e-04 | 1.95e-06 | |||||
| a | 1.26e + 10 | 1.34e + 02 | 1.38e + 02 | 1.55e + 02 | 1.14e + 02 | 1.08e + 08 | 1.01e + 08 | 9.39e + 08 | 1.33e + 09 | |
| getCustomer | b | 4.54e-12 | 1.49e-03 | 3.60e-02 | 1.26e-03 | 1.29e + 01 | 3.36e-10 | 2.68e-05 | 4.75e-06 | 7.91e-08 |
| c | 9.99e-01 | 3.32e + 00 | 2.53e-03 | 1.06e + 00 | 5.32e-01 | 1.29e-05 | 1.66e-06 | |||
| a | 9.05e + 10 | 1.46e + 02 | 1.62e + 02 | 2.82e + 02 | 1.27e + 02 | 3.65e + 08 | 2.22e + 09 | 1.17e + 08 | 1.18e + 09 | |
| getItem | b | 6.51e-13 | 1.40e-03 | 3.86e-02 | 7.20e-04 | 1.24e + 01 | 8.92e-11 | 2.16e-04 | 9.50e-08 | |
| c | 9.99e-01 | 3.36e + 00 | 2.29e-03 | 1.08e + 00 | 6.23e-03 | 1.42e-06 | ||||
| a | 3.85e + 01 | 3.18e + 01 | 3.66e + 01 | 5.44e + 01 | 3.41e + 01 | 1.34e + 08 | 5.67e + 09 | 1.18e + 09 | 1.41e + 09 | |
| getOrders | b | 1.08e-03 | 3.34e-03 | 1.27e-01 | 5.17e + 00 | 3.38e-09 | 7.28e-05 | 3.27e-08 | 2.13e-08 | |
| c | 9.98e-01 | 2.71e-03 | 5.77e-01 | 2.16e-02 | 1.08e-03 | 5.45e-06 | ||||
| a | 9.02e + 01 | 5.97e + 01 | 7.55e + 01 | 1.42e + 02 | 6.94e + 01 | 2.11e + 08 | 1.15e + 12 | 2.24e + 09 | 9.78e + 08 | |
| getRelated | b | 6.12e-04 | 2.72e-03 | 9.81e-02 | 6.17e + 00 | 1.23e-09 | 6.86e-06 | 4.02e-08 | 5.59e-08 | |
| c | 9.99e-01 | 2.08e-03 | 7.29e-01 | 2.09e-02 | 6.12e-04 | 4.29e-06 | ||||
| a | 8.20e + 09 | 8.81e + 01 | 1.01e + 02 | 5.74e + 01 | 1.79e + 09 | 1.18e + 09 | 2.23e + 08 | |||
| home | b | 2.11e-12 | 7.33e-04 | 1.74e-02 | 2.02e + 01 | 4.63e-13 | 1.80e-04 | 2.70e-08 | 2.18e-07 | |
| c | 9.99e-01 | 1.88e-03 | 1.42e + 00 | 7.11e-07 | ||||||
| a | 1.39e + 02 | 1.10e + 02 | 1.15e + 02 | 2.10e + 02 | 1.10e + 02 | 6.95e + 08 | 7.35e + 08 | |||
| login | b | 1.05e-03 | 3.60e-03 | 7.35e-02 | 7.23e + 00 | 5.13e-05 | 1.39e-07 | |||
| c | 9.97e-01 | 3.90e-03 | 3.29e-01 | 7.19e-06 | ||||||
| a | 1.06e + 02 | 3.75e + 01 | 4.88e + 01 | 1.90e + 02 | 4.01e + 01 | 5.89e + 09 | 5.71e + 09 | 1.22e + 08 | 1.24e + 09 | |
| showDetails | b | 2.14e-04 | 1.93e-03 | 6.72e-02 | 8.46e + 00 | 8.00e-12 | 8.02e-05 | 8.67e-07 | 2.62e-08 | |
| c | 9.99e-01 | 2.10e-03 | 8.78e-01 | 5.08e-04 | 2.15e-04 | 2.20e-06 | ||||
| a | 3.86e + 11 | 2.51e + 02 | 2.85e + 02 | 5.37e + 02 | 2.20e + 02 | 1.24e + 08 | 6.97e + 12 | 1.48e + 09 | 4.59e + 08 | |
| tags | b | 2.73e-13 | 1.46e-03 | 4.03e-02 | 5.98e-04 | 1.24e + 01 | 5.50e-10 | 4.94e-06 | 1.10e-05 | 4.25e-07 |
| c | 9.99e-01 | 2.42e + 00 | 2.38e-03 | 1.06e + 00 | 1.14e-02 | 6.46e-06 | 1.60e-06 | |||
| a | 6.61e + 09 | 5.24e + 01 | 7.30e + 01 | 5.71e + 01 | 3.27e + 08 | 5.95e + 11 | 2.95e + 08 | 3.72e + 08 | ||
| viewOrdersPage | b | 3.69e-12 | 1.65e-03 | 4.84e-02 | 1.06e + 01 | 6.51e-11 | 3.72e-06 | 1.14e-07 | ||
| c | 9.99e-01 | 1.98e-03 | 1.02e + 00 | 1.49e-02 | 2.25e-05 | 1.91e-06 |
Fitting execution time within the in-vitro experiments using Sock Shop (time less than 1 second is ignored)
| model | GO | GOS | Gomp | HD* | L | W* | WS | YE* | YR |
|---|---|---|---|---|---|---|---|---|---|
| total time | 0:37:49 | 0:00:00 | 0:04:31 | 0:09:20 | 0:00:01 | 0:42:51 | 0:01:02 | 1:08:43 | 0:24:35 |
| average time | 0:01:59 | 0:00:00 | 0:00:14 | 0:00:29 | 0:00:00 | 0:02:15 | 0:00:03 | 0:03:37 | 0:01:18 |
∗ Non-converging fitting process for at least one operation.
Fig. 9Number of top non-linear models per accuracy measure
Top models per operation according to the rankings defined by d and d (E-model and P-model, respectively)
| service | E-model | RPF | CoF | P-model | AFP | PA |
|---|---|---|---|---|---|---|
| addToCart | GO | 2.93 | 52 | GOS | 0.15 | 0.93 |
| basket | L | 2.50 | 52 | GOS | 0.01 | 0.84 |
| catalogue | L | 6.72 | 74 | L | 0.18 | 0.96 |
| cataloguePage | L | 3.79 | 67 | L | 0.18 | 0.90 |
| catalogueSize | L | 8.78 | 68 | L | 0.09 | 0.92 |
| createOrder | L | 5.19 | 60 | L | 0.00 | 0.96 |
| getAddress | GOS | 9.38 | 79 | L | 0.13 | 0.95 |
| getCard | GOS | 11.51 | 60 | L | 0.09 | 0.94 |
| getCart | GOS | 3.65 | 53 | HD | 0.06 | 0.67 |
| getCatalogue | L | 4.51 | 77 | L | 0.12 | 0.93 |
| getCustomer | L | 5.53 | 57 | L | 0.08 | 0.89 |
| getItem | GOS | 10.19 | 76 | GOS | 0.28 | 0.95 |
| getOrders | L | 3.87 | 53 | Gomp | 0.02 | 0.90 |
| getRelated | L | 12.11 | 57 | Gomp | 0.11 | 0.00 |
| home | NA | NA | NA | L | 0.55 | 0.96 |
| login | GO | 6.98 | 58 | L | 0.12 | 0.00 |
| showDetails | L | 6.48 | 69 | L | 0.11 | 0.91 |
| tags | L | 8.14 | 64 | L | 0.13 | 0.88 |
| viewOrdersPage | GOS | 8.78 | 83 | L | 0.24 | 0.93 |
Fig. 10Visualization of GOS and L models for
Accuracy of the linear models
| RPF | CoF | PA | ||
|---|---|---|---|---|
| addToCart | 0.99 | 2.80 | 20 | 0.96 |
| basket | 1.00 | 2.82 | 36 | 0.86 |
| catalogue | 0.99 | 2.21 | 58.33 | - |
| cataloguePage | 0.93 | 10.99 | 32 | - |
| catalogueSize | 0.97 | 5.02 | 51 | 0.82 |
| createOrder | 0.98 | 4.68 | 50 | - |
| getAddress | 0.97 | 4.02 | 61 | - |
| getCard | 1.00 | 2.43 | 57 | 0.89 |
| getCart | 1.00 | 2.35 | 51 | 0.85 |
| getCatalogue | 0.99 | 1.76 | 77 | - |
| getCustomer | 0.83 | 17.67 | 25 | - |
| getItem | 1.00 | 3.20 | 32 | 0.95 |
| getOrders | 0.99 | 3.08 | 43 | 0.87 |
| getRelated | 0.98 | 3.23 | 74 | - |
| home | 1.00 | 2.41 | 30 | 0.87 |
| login | 0.98 | 4.01 | 74 | 0.72 |
| showDetails | 0.99 | 2.18 | 70 | 0.91 |
| tags | 0.97 | 5.28 | 55 | 0.96 |
| viewOrdersPage | 1.00 | 2.88 | 54 | 0.90 |
Fig. 11Number of operations for which non-linear models outperform the linear one in terms of RPF, CoF, and PA measures
Fig. 12Linear or non-linear top model per microservice operation
Values used for the fitting process of the model L
| operation | x | ( | |
|---|---|---|---|
| addToCart, catologuePage | (1:1000) | 1 | (1,4) |
| getCart | (1:1000) | 10 | (1,2) |
| Remaining operations | (1:1000) | 1 | (1,2) |
Fitted models with non negative parameters and R2 ≥ 0.95 per microservice
| label | #violations | models |
|---|---|---|
| Adjustment | 156 | Linear and GOS, Gomp, L, W, YE |
| Control | 1102 | All non-linear models except WS |
| DBDataManagement | 82 | - |
| Enquiry | 634 | GO, GOS, Gomp |
| InternalCommunication | 1125 | All non-linear models except GOS, HD, WS, YR |
| Interrogation | 2281 | GO, Gomp |
| Offline | 347 | Linear |
| Online | 685 | Linear |
| Recompose | 623 | Gomp |
| ResourceRead | 0 | - |
| ResourceUpdate | 0 | - |
| StatusUpdate | 66 | Linear |
Fig. 13Types of trend of the performance violations observed by monitoring the microservices of the Telecommunication system. Each plot shows violations (red dots), a selected fitted model (blue line), and the corresponding CI (black lines)
Top models and their break down on the estimation/prediction measures
| microservice | E-model | RPF | CoF | P-model | AFP | PA |
|---|---|---|---|---|---|---|
| Adjustment | GOS | 13.43 | 66.20 | Gomp | 0.23 | 0.89 |
| Control | GOS | 33.40 | 57.46 | HD | 0.05 | 0.46 |
| DBDataManagement | - | - | - | - | - | - |
| Enquiry | GOS | 20.50 | 54.76 | GO | 0.02 | 0.33 |
| InternalCommunication | GO | 122.01 | 77.51 | Gomp | 0.18 | 0.87 |
| Interrogation | GO | 227.12 | 78.86 | GO | 0.30 | 0.92 |
| Offline | - | - | - | - | - | - |
| Online | - | - | - | - | - | - |
| Recompose | Gomp | 9.12 | 22.30 | Gomp | 0.05 | 0.38 |
| StatusUpdates | Linear | 3.60 | 47.44 | linear | - | 0.98 |
Qualitative comparison among recent approaches able to detect performance violations
| work | scope | approach | granularity | performance threshold | SUT |
|---|---|---|---|---|---|
| our approach | Study performance violations over time under unexpected workload conditions. | Chebyshev inequality, Growth theory | service level, individual requests | response time >T, T baseline requirement | Sock shop, Telecom system |
| Avritzer et al. ( | Study the scalability of different deployment configurations. | Chebyshev inequality, Domain-based metric | service level, aggregated requests | mean(response time) >T, T baseline requirement | Sock Shop |
| Avritzer et al. ( | Study the scalability of different deployment configurations and the performance of the system under DoS attacks. | Chebyshev inequality, Domain-based metric | service level, aggregated requests | mean(response time) >T, T baseline requirement | Sock Shop |
| Camilli et al. ( | Study the performance of alternative architectures during the migration from a monolith to microservices. | Chebyshev inequality, Domain-based metric | service level, aggregated requests | mean(response time) >T, T baseline requirement | Smart mobility |
| Wert ( | Study the response time to detect performance issues and possibly map the issues to software performance antipatterns. | Parametric heuristics | service level, aggregated requests | P(response time >T) >p T, p given thresholds | Online Banking |
| Avritzer et al. ( | Study the response time to detect performance issues and possibly map the issues to software performance antipatterns. | Queuing systems, heuristics | service level, aggregated requests | max response time >T, T baseline requirement | Telecom system |