skip to main content
10.1145/3282308.3282316acmotherconferencesArticle/Chapter ViewAbstractPublication PageseuroplopConference Proceedingsconference-collections
research-article

Engineering Software for the Cloud: External Monitoring and Failure Injection

Published: 04 July 2018 Publication History

Abstract

Cloud software continues to expand globally, highly motivated by how widespread the Internet is and the possibilities it unlocks with cloud computing. Still, cloud development has some intrinsic properties to it, making it complex to unexperienced developers.
This research is capturing those intricacies in the form of a pattern language, gathering ten patterns for engineering software for the cloud. This paper elaborates on that research by contributing with two new patterns: EXTERNAL MONITORING, which continuously monitors the system as a black box, validating its status and FAILURE INJECTION, which continuously verifies system reliability by injecting failures into the cloud environment and confirming that the system recovers from it.
The described patterns are useful for anyone designing software for the cloud, either to bootstrap or to validate their design decisions with the end goal of enabling them to create better software for the cloud.

References

[1]
Giuseppe Aceto, Alessio Botta, Walter De Donato, and Antonio Pescapè. 2013. Cloud monitoring: A survey. Computer Networks 57, 9 (2013), 2093--2115.
[2]
Tiago Boldt Sousa, Ademar Aguiar, Filipe Figueiredo Correia, and Hugo Sereno Ferreira. 2016. Engineering Software for the Cloud - Patterns and Sequences. In Latin American Conf. on Pattern Lang. of Prog. 11. 8.
[3]
Tiago Boldt Sousa, Filipe Figueiredo Correia, and Hugo Sereno Ferreira. 2015. Patterns for Software Orchestration on the Cloud. In Proceedings of the 2015 Conference on Pattern Languages of Programs.
[4]
Tiago Boldt Sousa, Hugo Sereno Ferreira, Filipe Figueiredo Correia, and Ademar Aguiar. 2017. Engineering Software for the Cloud: Messaging Systems and Logging. Proceedings of the 22Nd European Conference on Pattern Languages of Programs (2017).
[5]
Jonas Bonér, Martin Thompson, Dave Farley, and Roland Kuhn. 2014. The Reactive Manifesto v2.0. (2014). http://www.reactivemanifesto.org
[6]
Frank Buschmann, Kevlin Henney, and Douglas Schmidt. 2007. Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing. 639 pages.
[7]
Chaos Community. 2017. Principles of Chaos Engineering. http://principlesofchaos.org/
[8]
Robert N. Charette. 2005. Why Software Fails. http://spectrum.ieee.org/computing/software/why-software-fails
[9]
Ward Cunningham. 2014. Let It Crash. http://wiki.c2.com/?LetItCrash
[10]
Thomas Erl, Robert Cope, and Amin Naserpour. 2015. Cloud Computing Design Patterns. 552 pages. informit.com/phLibrary
[11]
Gitlab. 2017. Postmortem of database outage of January 31. https://about.gitlab.com/2017/02/10/postmortem-of-database-outage-of-january-31/
[12]
Robert Hof. 2016. Meet Project Storm, Facebook's SWAT team for disaster-proofing data centers.
[13]
Gregor Hohpe and Bobby Woolf. 2003. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Enterprise integration patterns designing building and deploying messaging solution (2003), 736.
[14]
Internetlivestats.com. 2016. Number of Internet users in the world. http://www.internetlivestats.com/internet-users/
[15]
Nelson G M Leme, Eliane Martins, and Cecília Rubira. 2001. A Software Fault Injection Pattern System (1) II. Architectural Pattern: Fault Injector. In Pattern Languages of Programs. https://hillside.net/plop/plop2001/accepted_submissions/PLoP2001/ngmleme3/PLoP2001_ngmleme3_3.pdf
[16]
Y.K. Malaiya, M.N. Li, J.M. Bieman, and R. Karcich. 2002. Software reliability growth with test coverage. IEEE Transactions on Reliability 51, 4 (2002), 420--426.
[17]
Microsoft. 2017. Health Endpoint Monitoring pattern. https://docs.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring
[18]
Netflix. 2011. The Netflix Simian Army. (2011).
[19]
Netflix. 2017. Chaos Monkey. https://github.com/Netflix/chaosmonkey
[20]
Pingdom. 2017. Pingdom. https://www.pingdom.com/
[21]
Eduardo Pinheiro, WD Weber, and LA Barroso. 2007. Failure trends in a large disk drive population. In Proceedings of the 5th USENIX Conference on File and Storage Technologies (FAST 2007), Vol. 7. 17--29.
[22]
New Relic. 2017. New Relic. https://newrelic.com/
[23]
Dc Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann, and J Wiley. 2000. Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects, Volume 2. Vol. 2. 1--482 pages.
[24]
Statuscake. 2017. StatusCake. https://www.statuscake.com/
[25]
Darryl Taft. 2015. How the Skills Gap Is Threatening the Growth of App Economy. http://www.eweek.com/developer/slideshows/how-the-skills-gap-is-threatening-the-growth-of-app-economy.html
[26]
E O Winstedt. 1899. A Bodleian MS. of Juvenal. The Classical Review 13, 4 (1899), 201--205. http://www.jstor.org/stable/694154
[27]
Viveca Woods and Rob Meulen. 2016. Gartner Says Worldwide Public Cloud Services Market Is Forecast to Reach $204 Billion in 2016. http://www.gartner.com/newsroom/id/3188817

Cited By

View all

Index Terms

  1. Engineering Software for the Cloud: External Monitoring and Failure Injection

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Other conferences
    EuroPLoP '18: Proceedings of the 23rd European Conference on Pattern Languages of Programs
    July 2018
    322 pages
    ISBN:9781450363877
    DOI:10.1145/3282308
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

    In-Cooperation

    • Hillside Europe: Hillside Europe

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 04 July 2018

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Cloud Computing
    2. Design Patterns
    3. Software Engineering

    Qualifiers

    • Research-article
    • Research
    • Refereed limited

    Conference

    EuroPLoP '18

    Acceptance Rates

    EuroPLoP '18 Paper Acceptance Rate 35 of 53 submissions, 66%;
    Overall Acceptance Rate 216 of 354 submissions, 61%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)32
    • Downloads (Last 6 weeks)3
    Reflects downloads up to 10 Nov 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Research Landscape of Patterns in Software Engineering: Taxonomy, State-of-the-Art, and Future DirectionsSN Computer Science10.1007/s42979-024-02767-85:4Online publication date: 8-Apr-2024
    • (2024)Patterns of multi-container composition for service orchestration with Docker ComposeEmpirical Software Engineering10.1007/s10664-024-10462-829:3Online publication date: 3-May-2024
    • (2023)Dependability Patterns: A SurveyComputers10.3390/computers1210021412:10(214)Online publication date: 21-Oct-2023
    • (2023)Deployment Tracking and Exception Tracking: monitoring design patterns for cloud-native applicationsProceedings of the 28th European Conference on Pattern Languages of Programs10.1145/3628034.3628038(1-10)Online publication date: 5-Jul-2023
    • (2022)Foundational DevOps PatternsProceedings of the 29th Conference on Pattern Languages of Programs10.5555/3631672.3631696(1-12)Online publication date: 24-Oct-2022
    • (2022)Service Mesh PatternsProceedings of the 27th European Conference on Pattern Languages of Programs10.1145/3551902.3551962(1-12)Online publication date: 6-Jul-2022
    • (2022)Proactive monitoring design patterns for cloud-native applicationsProceedings of the 27th European Conference on Pattern Languages of Programs10.1145/3551902.3551961(1-13)Online publication date: 6-Jul-2022
    • (2022)Evaluation of IoT self-healing mechanisms using fault-injection in message brokersProceedings of the 4th International Workshop on Software Engineering Research and Practice for the IoT10.1145/3528227.3528567(9-16)Online publication date: 19-May-2022
    • (2022)A Survey on the Adoption of Patterns for Engineering Software for the CloudIEEE Transactions on Software Engineering10.1109/TSE.2021.305217748:6(2128-2140)Online publication date: 1-Jun-2022
    • (2022)Designing Microservice Systems Using Patterns: An Empirical Study on Quality Trade-Offs2022 IEEE 19th International Conference on Software Architecture (ICSA)10.1109/ICSA53651.2022.00015(69-79)Online publication date: Mar-2022
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media