Felix Negoiță

and 1 more

Software architectural design is one of the most important elements impacting software systems. Successfully running systems at scale has become a primary focus in the field of software engineering and computer science, given the unprecedented levels of data and users demanded by IoT, machine learning, user generated content, and increasing software complexity. All of these changes require specific attention and particular tools and approaches, however, certain elements can be identified as common and considered state of the art in regards to architecture. This paper presents a systematic review of both academic literature and widely referenced industry publications to identify and evaluate architectural patterns and practices for scalable and resilient systems. The objective of this review is to extract key architectural components, methods, and patterns that are extensible, repeatable, and problem-agnostic while addressing challenges posed by modern demands such as IoT, machine learning, and big data. By employing a systematic review methodology, we address the following research questions: (1) What are the architectural properties essential for data-intensive systems? (2) What patterns and practices are most effective for achieving scalability and resilience? (3) How do industry guidelines and real-world implementations align with academic insights? The review results combined with the other knowledge we present provide support for recommendations for designing data-intensive systems.