Friday, August 14, 2020

Reactive Microservice

 Much of the things on Reactive has been told and informed in many lectures and debates… Many has investigated and outcome with Reactive behavior understanding using Reactive programming. In short team if we want to know what is REACTIVE in terms of programming we can broadly classify into below given aspect

Responsive: This term is not related to UI/UX concept. Here it means the system responds in a timely manner if at all possible and should be active enough to give response in proper define time.

Resilient: The system stays responsive in the face of failure. This means it should have capabilities to overcome failure. This give highly-available for system.

Elastic: The system stays responsive under varying workload i.e. depending on the workload it can easily scale up and on low workload it should scale down to provide better performance.

Message Driven: Reactive Systems or its component should have the ability to talk with other asynchronous message these ensure loose coupling, isolation and location transparency between component.

Having said this if someone ask us what is the meaning of Reactive microservice we can say combination of Reactive behavior with Microservice concept.

Microservice :- For this concept we break the big monolithic system in the small part. Each part is specifically responsible for one of the functionality that whole system gives. Breaking down the big system in to small helps in easy and parallel development, testing, release. Many frameworks are available for microservice i.e. in java we have Spring Boot that support concept of Microservice as Admin, Actuator, Eureka, Configuration, Hysteric, log, Swagger etc.

When we add reactive to our microservice it contains all the above add-on of reactive behavior. Spring webflux provide the same to our microservice i.e it gives following advantages to our microservice

1- Our Microservice instance store the data/their respective state in memory. So that they should not go to the Database for fetching the value every time. This increase the performance timing. Even at one point it handle the single point failure as the data is in memory even though the DB is down our UI can work accordingly.
2- Reactive Microservice can talk to each other Asynchronously using message architecture.
3- Service automatically do the rebalancing of the work. Depending on Work load the Microservice instance can scale up and scale down for better performance.
4- They support the failure recovery principle. Means they can self-heal in case of failure.
So in short it is super fast, Ultra resilient, Hyper scalable and cloude native..

No comments: