Abstract
Service-oriented architecture (SOA) is a popular architectural style centered around services, loose coupling, and interoperability. A recurring problem in SOA development is the Button Problem; how to ensure that whenever a “button is pressed” on some service—no matter what—the performance of other key services remains unaffected? The Button Problem is especially complex to solve in systems that have devolved into hardly comprehensible spaghettis of service dependencies.
In a collaborative effort with industry partner First8, we present the first formal framework to help SOA developers solve the Button Problem, enabling automated reasoning about service sensitivities and candidate refactorings. Our formalization provides a rigorous foundation for a tool that was already successfully evaluated in industrial case studies, and it is built against two unique requirements: “whiteboard level of abstraction” and non-quantitative analysis.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
In terms of the Osi transport layer, Tcp/Ip packets involved in a push are acknowledged (as part of the Tcp/Ip protocol), but this is at a lower level of abstraction.
- 2.
Individual services in \(\hat{S}\) may contribute only partially to the simulation (see also Example 2). This is where our definition of simulation differs significantly from the classical one in concurrency theory (e.g., [17]). It is also why \(s \mathrel {R} \hat{s}\) appears as a conjunct on the right-hand side of the implication instead of on the left-hand side.
- 3.
More precisely, the only services that create additional services or calls are \(\textit{Split} \), \(\textit{AddQueue} \), and \(\textit{AddCache} \). The number of times a service can be split is bound by the number of types, while the services and calls added through \(\textit{AddQueue} \) and \(\textit{AddCache} \) carry annotations that inform Elmo to not refactor them any further.
- 4.
Elmo may find designs that solve the specified insensitivity goals, but that are still unacceptable to SOA developers due to external constraints (e.g., the number of machines exceeds the budget; some services should not be merged because it requires reorganization of development teams). Instead of letting Elmo first explore the entire design space and then filtering the unacceptable solutions, SOA developers can specify additional model annotations upfront to constrain which refactorings Elmo will try to apply; corners of unacceptable solutions in the design space are skipped.
Specifically, in the initial deployment model, users can indicate that a service must remain intact (i.e., it cannot be split, merged, or modified); that some services cannot be merged; that some sets of types cannot be split; that a call must remain intact (i.e., it cannot be flipped or replaced by a queue/cache); that some sets of services must be collocated; that the number of machines must not exceed some limit.
References
Akamai Technologies Inc.: Akamai Online Retail Performance Report \(|\) Akamai (2017). Accessed 28 June 2019. https://www.akamai.com/uk/en/about/news/press/2017-press/akamai-releases-spring-2017-state-of-online-retail-performance-report.jsp
AppDynamics LLC: Application Performance Monitoring and Management \(|\) AppDynamics (nd). Accessed 28 June 2019. https://www.appdynamics.com
Bertoli, M., Casale, G., Serazzi, G.: JMT: performance engineering tools for system modeling. SIGMETRICS Perform. Eval. Rev. 36(4), 10–15 (2009)
Bischofberger, W., Kühl, J., Löffler, S.: Sotograph – a pragmatic approach to source code architecture conformance checking. In: Oquendo, F., Warboys, B.C., Morrison, R. (eds.) EWSA 2004. LNCS, vol. 3047, pp. 1–9. Springer, Heidelberg (2004). https://doi.org/10.1007/978-3-540-24769-2_1
Brebner, P.: Real-world performance modelling of enterprise service oriented architectures: delivering business value with complexity and constraints (abstracts only). SIGMETRICS Perform. Eval. Rev. 39(3), 12 (2011)
Caracciolo, A., Lungu, M.F., Nierstrasz, O.: A unified approach to architecture conformance checking. In: WICSA, pp. 41–50. IEEE Computer Society (2015)
Datadog Inc.: Modern monitoring and analytics \(|\) Datadog (nd). Accessed 28 June 2019. https://www.datadoghq.com
Dynatrace LLC: Software intelligence for the enterprise cloud \(|\) Dynatrace (nd). Accessed 28 June 2019. https://www.dynatrace.com
van Eekelen, M., Jongmans, S.S., Lamers, A.: Non-Quantitative Modeling of Service-Oriented Architectures, Refactorings, and Performance. Technical Report TR-OU-INF-2017-02, Open University of the Netherlands (2017)
Elmo Demo (2018). Accessed 28 June 2019. https://youtu.be/Oi9kxqh_GBs
Headway Software Technologies Ltd.: Structure101 Home – Structure101 (nd). Accessed 28 June 2019. https://structure101.com
Johnsen, E.B., Pun, K.I., Tapia Tarifa, S.L.: A formal model of cloud-deployed software and its application to workflow processing. In: SoftCOM, pp. 1–6. IEEE (2017)
Juan Ferrer, A., et al.: OPTIMIS: a holistic approach to cloud service provisioning. Future Gener. Comp. Syst. 28(1), 66–77 (2012)
Kobryn, C.: Modeling components and frameworks with UML. Commun. ACM 43(10), 31–38 (2000)
Kounev, S.: Performance modeling and evaluation of distributed component-based systems using queueing petri nets. IEEE Trans. Softw.Eng. 32(7), 486–502 (2006)
Lamers, A., van Eekelen, M., Jongmans, S.-S.: Improved architectures/deployments with elmo. In: Liu, X., et al. (eds.) ICSOC 2018. LNCS, vol. 11434, pp. 419–424. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-17642-6_36
Milner, R.: Communication and concurrency. PHI Series in computer science. Prentice Hall, New Jersey (1989)
New Relic Inc.: New Relic \(|\) Deliver more perfect software (nd). Accessed 28 June 2019. https://www.newrelic.com
Pautasso, C., Zimmermann, O., Amundsen, M., Lewis, J., Josuttis, N.M.: Microservices in practice, part 1: reality check and service design. IEEE Software 34(1), 91–98 (2017)
Peled, D.: Partial-order reduction. In: Clarke, E., Henzinger, T., Veith, H., Bloem, R. (eds.) Handbook of Model Checking, pp. 173–190. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-10575-8_6
SonarSource SA: Continuous Inspection \(|\) SonarQube (nd). Accessed 28 June 2019. https://www.sonarqube.org
Zhu, L., Liu, Y., Bui, N.B., Gorton, I.: Revel8or: model driven capacity planning tool suite. In: ICSE, pp. 797–800. IEEE Computer Society (2007)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this paper
Cite this paper
Jongmans, SS., Lamers, A., van Eekelen, M. (2019). SOA and the Button Problem. In: ter Beek, M., McIver, A., Oliveira, J. (eds) Formal Methods – The Next 30 Years. FM 2019. Lecture Notes in Computer Science(), vol 11800. Springer, Cham. https://doi.org/10.1007/978-3-030-30942-8_40
Download citation
DOI: https://doi.org/10.1007/978-3-030-30942-8_40
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-30941-1
Online ISBN: 978-3-030-30942-8
eBook Packages: Computer ScienceComputer Science (R0)