ISSN : 2583-2646

Event-Driven Paradigms: How to Architect Reactive and Resilient Systems

ESP Journal of Engineering & Technology Advancements
© 2022 by ESP JETA
Volume 2  Issue 3
Year of Publication : 2022
Authors : Joseph Franklin Santhosh Kumar
:10.56472/25832646/JETA-V2I3P117

Citation:

Joseph Franklin Santhosh Kumar, 2022. "Event-Driven Paradigms: How to Architect Reactive and Resilient Systems", ESP Journal of Engineering & Technology Advancements 2(3): 124-135.

Abstract:

Event-driven architecture is often an important aspect of state-of-the-art distributed systems where architectural models are transformed into event-driven models. This article explores event-driven systems, pointing out the concepts of how the systems support scalability, responsiveness, fault tolerance and adaptability. In traditional request-response architectures, there are usually troubles in handling large numbers of requests or in dynamic conditions. At the same time, event-oriented systems isolate system components and support asynchrony and non-dependency, which are well suited to handle variable loads while delivering high turnaround. In this paper, we provide a history of Event-Driven Architecture (EDAs starting from the early days of computer systems to their usage in current cloud-native paradigms. These architectures are important, especially in finance, telecommunication, e-commerce and IoT industries, where systems must be reliable and adaptive. Note that event-driven paradigms fit well with the microservices mostly used today, which work as loosely coupled, independent, and independently deployable components implementing business capabilities that symbiotically interact through asynchronous messaging. In the following work, I discuss the technical details of building such systems; the programming paradigms are reactive, the patterns are event sourcing and CQRS, and the message brokers utilized are Kafka and Rabbit MQ. Further, we give clear, real-life examples of how firms have adopted these paradigms to enhance their system robustness and generic performance. Furthermore, we present how to transition from monolithic to event-driven architectures and how it can be reduced in practice with the described challenges.

References:

[1] Michelson, B. M. (2006). Event-driven architecture overview. Patricia Seybold Group, 2(12), 10-1571.

[2] Malekzadeh, B. (2010). Event-Driven Architecture and SOA in collaboration-A study of how Event-Driven Architecture (EDA) interacts and functions within Service-Oriented Architecture (SOA) (Masters thesis).

[3] Sriraman, B., & Radhakrishnan, R. (2005). Event driven architecture augmenting service-oriented architectures. Report of Unisys and Sun Microsystems.

[4] Uday, P., & Marais, K. (2015). Designing resilient systems‐of‐systems: A survey of metrics, methods, and challenges. Systems Engineering, 18(5), 491-510.

[5] Luckham, D. C. (2002). Event Processing for Business: Organizing the Real-Time Enterprise. Wiley.

[6] Hohpe, G., & Woolf, B. (2003). Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley.

[7] Evans, E. (2011). Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley.

[8] Fowler, M. (2011). CQRS: Command Query Responsibility Segregation. Martin Fowler.

[9] Kreps, J., Narkhede, N., & Rao, J. (2011). Kafka: A Distributed Messaging System for Log Processing. Proceedings of the NetDB Conference (pp. 1-7).

[10] Hunt, G., Kreps, J., & Zink, L. (2016). Kafka: The Definitive Guide: Real-Time Data and Stream Processing at Scale. OReilly Media

[11] Ross, R., Pillitteri, V., Graubart, R., Bodeau, D., & McQuaid, R. (2019). Developing cyber resilient systems: a systems security engineering approach (No. NIST Special Publication (SP) 800-160 Vol. 2 (Draft)). National Institute of Standards and Technology.

[12] Henss, T. (2014). Using Event Sourcing and CQRS to Develop Scalable and Maintainable Applications.Journal of Software Engineering Research and Development, 2(1), 1-16.

[13] Stopford, B. (2018). Designing event-driven systems. OReilly Media, Incorporated.

[14] McGovern, J., Sims, O., Jain, A., & Little, M. (2006). Event-driven architecture. Enterprise Service Oriented Architectures: Concepts, Challenges, Recommendations, 317-355.

[15] Sanchez, S. A., Romero, H. J., & Morales, A. D. (2020, May). A review: Comparison of performance metrics of pretrained models for object detection using the TensorFlow framework. In IOP conference series: materials science and engineering (Vol. 844, No. 1, p. 012024). IOP Publishing.

[16] Hollingsworth, J. K., & Miller, B. P. (1992). Parallel program performance metrics: A comparison and validation. University of Wisconsin-Madison Department of Computer Sciences.

[17] Kuhner, M. K., & Yamato, J. (2015). Practical performance of tree comparison metrics. Systematic Biology, 64(2), 205-214.

[18] Jhawar, R., & Piuri, V. (2017). Fault tolerance and resilience in cloud computing environments. In Computer and information security handbook (pp. 165-181). Morgan Kaufmann.

[19] Strigini, L. (2012). Fault tolerance and resilience: meanings, measures and assessment. In Resilience assessment and evaluation of computing systems (pp. 3-24). Berlin, Heidelberg: Springer Berlin Heidelberg.

[20] Quinn, T., Bockhorst, R., Peterson, C., & Swindlehurst, G. (2012). Design to achieve fault tolerance and resilience (No. INL/EXT-12-27205). Idaho National Lab.(INL), Idaho Falls, ID (United States).

[21] Autenrieth, A., & Kirstädter, A. (2000, April). Fault-tolerance and resilience issues in IP-Based networks. In Second International Workshop on the Design of Reliable Communication Networks (DRCN2000), Munich, Germany.

Keywords:

Event-Driven Architecture (EDA), Microservices, Asynchronous Messaging, Event Sourcing, CQRS, Kafka, RabbitMQ, Resiliency, Scalability.