A Reactive Approach in a High-Load Application Using the Service for Calculating Cashback as an Example
This article does not aim at describing frameworks and architecture, as they are already well documented. Rather, it is intended for those who start working with microservices and Project Reactor, and describes the main features of these technologies and what they will have to deal with and work with.
Unlike monolithic, microservice architecture is based on the allocation of small independent software services, each of which implements a separate business function. If everything is connected in a monolith (and in case of failure of one function the others can “fall off”), then microservices can provide flexibility and stability of the system. Large IT solutions can contain dozens of microservices in their architecture, and a separate independent team can work with each of them.
Example
Consider the case study from practice. The insurance company contacted us to upgrade its online application with a flexible microservice architecture. We were faced with the task of implementing cashback in the application, that is, accruing bonus points to the user for the purchase of an insurance policy.
At first glance, the task looked simple.
For each paid (extended) policy to accrue to the user a certain cashback of X% through the accounting service. The user should have access to information about the received cashback.
Upon reaching a certain total cashback, automatically transfer funds to the client through the accounting service. The payout history should be available to the user.
The main project used the Kafka message queue as a means of exchanging information between microservices, and also as the only permanent replicated information store.
When you need to implement certain functions on microservices, you always need to keep in mind the possibility of horizontal scaling. The code should work not only in a multi-threaded environment, but also in the case when several containers with a microservice are launched.
We also add that the clients of such an application are supposedly unlimited. And many of them are mobile, i.e. relatively slow.
Software Development Budget for 2020
Digital technology enables organizations to increase productivity and better interact with customers. However, in many technological initiatives, cost overruns are still observed, which significantly damages the end result and undermines the value of the software development effort.
Cost estimation is not a simple task, the incorrect solution of which can lead to disastrous consequences. In order to avoid such an outcome, companies must take into account the costs of man hours, user needs, program capabilities, structure and coding costs. Proper distribution of invested funds requires a strategic approach to the organization of projects, and clarity of their final result, which allows to achieve certain business goals.
In severe cases, sometimes you even need to return to the very beginning of planning and again evaluate the priorities of financing your digital endeavors. Therefore, we offer you some practical tips for building an effective software development budget in 2020.
How to Evaluate the Expertise of a Software Developer in 5 Easy Questions? Expert Answer
When you often conduct interviews, you may want to have several key questions at hand so that you can immediately understand what kind of programmer is in front of you. Today we give you expert advice whether there are such questions, and if so, what are they.