1.

Characteristics of a microservices architecture

Answer»
  1. High Cohesion - Small and focussed on doing one thing well. Small does not mean less number of lines of code because few programming languages are more verbose than others, but it means the smallest functional area that a single microservices caters to.
  2. Loose Coupling - Autonomous - the ability to deploy different services independently, and reliability, due to the ability for a service to run even if another service is down.
  3. Bounded Context - A Microservice serves a bounded context in a domain. It communicates with the rest of the domain by using an interface for that Bounded context.
  4. Organisation around business capabilities instead of around technology.
  5. Continuous DELIVERY and Infrastructure automation.
  6. Versioning for backward compatibility. Even MULTIPLE versions of same microservices can exist in a production environment.
  7. Fault Tolerance - if one service fails, it will not affect the rest of the system. For example, if a microservices serving the comments and reviews for e-commerce fails, the rest of the website should run fine.
  8. Decentralized data management with each service owning its database rather than a single shared database. Every microservice has the freedom to choose the right type of database appropriate for its business use-case (for example, RDBMS for Order Management, NoSql for catalogue management for an e-commerce website)
  9. Eventual Consistency - event-driven asynchronous updates.
  10. Security - Every microservice should have the capability to protect its own resources from unauthorized access. This is achieved using STATELESS security mechanisms like JSON Web TOKEN (JWT pronounced as jot) with OAuth2.


Discussion

No Comment Found