Be in the Horzion project for months now, learn lots of new things and it might be a good time to document some learnings.
To switch from monolithic service to micro service means a total mightset change. The frist thing is to become a DevOps. You need to write/debug/test your code, build/deploy the code locally and remotely and monitor the service. This is very chanllenging in mature company because thses functions are isolated into different teams/organizations.
Here are some components in building microservice:
- service register/discover
- config management
- (distributed) cache
- (distrobued) database
- authentication for internal and external users
something need special handling:
- how to handle exception: you can throws an exception in one service and hope another service catch it in old fasion.
- how to pass data between services: if several services need to process the same request at different stage. if you need to merge the reply from couple services? or some service need the same intermedian data?
- how to resolve service dependency: the business logic can be sync or async.
- how to handle failover: if a service not available, will it retry and how?
- how to document your service: this will impact how user can easily use the APIs
More to add later…