Microservice Architecture and Its Challenges
Microservices architecture is becoming increasingly popular while building large scale applications as it provides n number of benefits.
- Separate lifecycle of each service so services can be deployed independently which means services can evolve separately.
- Each service can be fine tuned for different SLAs and scalability
- Each Service can be developed using different stack
- Each service can be monitored separately
However, Microservice service architecture is not a free lunch. It throws many challenges that must be discussed and dealt with even before venturing into this (unchartered) territory.
- Authorization – How do you make sure that particular service and it’s APIs can be called only when user is authorised to do so.
- Data Consistency – ACID is no longer available, deal with eventual consistency.
- Service Discovery – How to find and interact with new services. If there are lots of services then how to make sure that they are discoverable from other services
- Deployment – What if there is a hierarchy in microservice dependency
- A -> B -> C
- SLA – Multiple hops in a request will add to latency and affect your SLA
- Fault Tolerance – How to handle Cascading Failure
- Monitoring – (How to monitor a system which has 100s or even 1000s of services)
- Tracing – Logging & Request Tracing (A message will travel across many boundaries so how to nail down where message got lost/delayed)
- Tech Stack – Selecting a stack (to go with single stack or multiple stacks?)
- Packaging and Deploying – (How to come up with a uniform way of packaging and delivering services )
- Debugging – During development phase how to make sure that developers are able to debug code as effectively as they do in monolithic system
May 31, 2019
April 20, 2019
March 25, 2019