Redux
Tags: redux, react, javascript
Published: 2020-03-09 12:46:04

Redux is a JavaScript library for application state management. Redux-Saga is a  middleware  from the Redux library that allows for the application side effects to be easier to manage, control, and test. The architectural model describes the control flow in the system. While separation of concerns is achieved through a modular structure. Modeling the use cases of the system as sagas makes them more readable and supports automated testing. The implementation of the architecture is described through code listings. One of the most important attributes of a software codebase is the readability of the code. When we're talking about a software project that lasts for many years and has a large amount of developers working on it the readability of the code will have a important effect on the speed and quality of the development effort. Developers are constantly reading old code when they are developing new code. Managing the application state and control flow properly has a huge impact on the readability. If the codebase and the flow of control in the application is easy to follow and understand for the developers, then developing new features or fixing existing bugs will be faster and less error prone. 

Architectural complexity has detrimental effects on development productivity. Reducing the complexity of the software will also definitely help alleviate the burden on the developers allowing them to be more productive as well as less frustrated in
their work. And of course, all the time saved on development work can be directly mapped to cost savings as well. It is important to be able to automatically test as many parts of a system as possible. 
New technologies, techniques and tools are constantly being introduced for handling common challenges in the field of software development field. So, most of the time there will be a very limited amount of research available. In Redux-saga 8 introduces a new kind of a pattern for handling application side-effects and flows. Proper state management is vital for keeping track of all the data in your application. Failing
to do so will most likely result in some kind of problems during the development of the software. Some of the most common problems are issues with duplicate and out-of-sync data. Letting the application to get into that kind of a state will increase the effort it takes to maintain the software and it will most likely also introduce bugs along the way. It is hard work to try to manage multiple instances of a single piece of data and developers – being human – tend to miss some of the instances when making modifications to the codebase. Worst case scenario is that you might end up with presenting or storing wrong data if there are multiple instances of the supposedly same piece of data. 

You can keep your application much simpler if you take care and make sure there is a single source of truth for the data. A successful software project must focus on the needs of a customer. There are different
ways of modeling out the domain to make sure you are truly developing something that produces value for the customer. Good architecture should be one that enables the use of different domain models and supports the developers in implementing the required features and use
cases. In other words, the architecture should provide a proper way for handling pieces of the application logic and use case workflows.