8 CONCLUSION
We discussed our systematic method in deriving sen-
sitivity points of the Circuit Breaker and Event Sourc-
ing, patterns, independent of a particular implementa-
tion. Through experiments on Hystrix and Kafka, we
demonstrated the usefulness of our method in deriv-
ing important quality decisions of architectural pat-
terns. The repository of the formal models of the
architectural patterns helps the application designers
prepare for unacceptable system quality degradation
when a third-party implementation of the architec-
tural patterns fails to maintain its guarantees.
We extend our method to perform a conformance
check of third-party implementations against their
formal design as ongoing work.
ACKNOWLEDGMENT
This research has received funding from the Baden-
Württemberg Stiftung (Orcas project) and the German
Federal Ministry of Education and Research (Soft-
ware Campus 2.0 — Microproject: DiSpel).
REFERENCES
Davis, C. (2019). Cloud Native Patterns: Designing
Change-tolerant Software. Manning Publications.
Davis, C. (2020). Cloud-native example application. https://
github.com/cdavisafc/cloudnative-abundantsunshine.
Accessed: 2022-January.
Hakamian, A. et al. (2022). Formal models of cloud-native
patterns. https://doi.org/10.5281/zenodo.5905810.
Istio Contributors (2021). istio documentation. https://istio.
io/latest/docs/. Accessed: 2022-January.
Jagadeesan, L. J. and Mendiratta, V. B. (2020). When fail-
ure is (not) an option: Reliability models for microser-
vices architectures. In ISSRE Workshops, pages 19–
24. IEEE.
Jepsen Contributors (2022). Jepsen. https://github.com/
jepsen-io/jepsen. Accessed: 2021-January.
Junqueira, F. (2015). Disk error. https://fpj.systems/2015/
05/28/dude-wheres-my-metadata/. Accessed: 2022-
January.
Kafka Team (2021). Kafka design documentation. https://
kafka.apache.org/documentation/#design. Accessed:
2022-January.
Kazman, Rick et al. (2000). Atam: Method for architecture
evaluation. Technical report, Carnegie-Mellon Univ
Pittsburgh PA Software Engineering Inst.
Kingsbury, K. (2014). Jepsen: etcd
and consul. https://aphyr.com/posts/
316-call-me-maybe-etcd-and-consul. Accessed:
2021-January.
Kleppmann, M. (2016). Designing Data-Intensive Applica-
tions: The Big Ideas Behind Reliable, Scalable, and
Maintainable Systems. O’Reilly.
Lago, P. and van Vliet, H. (2005). Explicit assumptions en-
rich architectural models. In 27th International Con-
ference on Software Engineering (ICSE 2005), pages
206–214. ACM.
Lamport (2021). The TLA+ toolbox. https://lamport.
azurewebsites.net/tla/toolbox.html. Accessed: 2022-
January.
Lamport, L. (1994). The temporal logic of actions. ACM
Trans. Program. Lang. Syst., 16(3):872–923.
Lamport, L. (2002). Specifying Systems, The TLA+ Lan-
guage and Tools for Hardware and Software Engi-
neers. Addison-Wesley.
Lianza, T. and Snook, C. (2020). Cloudflare in-
cident report. https://blog.cloudflare.com/
a-byzantine-failure-in-the-real-world/. Accessed:
2022-January.
Lin, W., Yang, M., Zhang, L., and Zhou, L. (2008). Pacifica:
Replication in log-based distributed storage systems.
Marta Z. Kwiatkowska et al. (2011). PRISM 4.0: Veri-
fication of probabilistic real-time systems. In Com-
puter Aided Verification - 23rd International Confer-
ence, CAV 2011, pages 585–591. Springer.
Mendonça, N. C., Aderaldo, C. M., Cámara, J., and Garlan,
D. (2020). Model-based analysis of microservice re-
siliency patterns. In 2020 IEEE International Confer-
ence on Software Architecture, ICSA 2020, Salvador,
Brazil, March 16-20, 2020, pages 114–124. IEEE.
Microsoft (2022). Microsoft classification of de-
sign patterns in cloud-native application domain.
https://docs.microsoft.com/en-us/azure/architecture/
patterns/index-patterns. Accessed: 2022-January.
Newcombe, C. (2014). Why amazon chose TLA +. In Ab-
stract State Machines, Alloy, B, TLA, VDM, and Z -
4th International Conference, ABZ 2014, pages 25–
39. Springer.
Nygard, M. T. (2018). Release it!: design and deploy
production-ready software. Pragmatic Bookshelf.
Resilience4j Contributors (2021). Resilience4j documen-
tation. https://resilience4j.readme.io/docs. Accessed:
2022-January.
Richardson, C. (2021). Patterns for microservice archi-
tectural style. https://microservices.io/patterns/. Ac-
cessed: 2021-October.
Schvimer, J., Davis, A. J. J., and Hirschhorn, M. (2020).
extreme modelling in practice. Proc. VLDB Endow.,
13(9):1346–1358.
Shea, C. (2017). Gitlab incident report.
https://about.gitlab.com/blog/2017/02/10/
postmortem-of-database-outage-of-january-31/.
Accessed: 2022-January.
Vergara, S., González, L., and Ruggia, R. (2020). Towards
formalizing microservices architectural patterns with
event-b. pages 71–74. IEEE.
CLOSER 2022 - 12th International Conference on Cloud Computing and Services Science
222