Tuesday, February 7, 2017

Microservices and Reactive Architecture

Micro services
The Microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms. 

Critical characteristics of a Micro Services are
  1. Componentization via services
  2. Organized around Business Capabilities
  3. Smart End points
  4. Infrastructure Automation
  5. Design for failure


Key considerations for efficient Micro Services development and deployment.
  1. Infrastructure Automation and Rapid Provisioning
  2. Basic Monitoring
  3. Rapid Application Deployment
  4. Devops 


Advantages for Microservices are 
  1. Ability to deploy different services independently
  2. Reliability, due to the ability for a service to run even if another service is down. 
  3. Ability to build Services on different platforms, e.g. as a way to experiment with a new language.


Reactive Architecture
The need for error-tolerance and fast reaction in dynamic environments have resulted in reactive architectures. They have task-specific modules that initiate direct reactions in response to specific situations that occur in the environment. 

Key characteristics of Reactive Architecture are: 
  1. Responsive
  2. Resilient
  3. Elastic/Scalable
  4. Message Driven


Systems built as Reactive Systems are more flexible, loosely-coupled and scalable. They are significantly more tolerant of failure

Benefits of both Styles:
While Micro services enables looking at application in terms of small individually deployable services, Reactive Architecture helps building applications which can scale as need (at required later by scaling required services) and ensure fail over. Together they bring ease of maintenance, reliability, scalability and fail over to the application. 

No comments: