Why?
The smaller the service is, the easier to be integrated and managed.
History?
Monolithic -> MVC -> RPC -> SOA -?> Microservice (running in its own process)
How?
Existing frameworks
- Spring Cloud(http://cloud.spring.io)
- Imixs-Workflow(http://www.imixs.org/)
- Dubbo(http://dubbo.io)
Steps to design
- Separate the implementation to front end, service, support basis...
- Divide according to techniques and system architecture...
- Verify the communication mechanism, such as REST or RPC
Workload balance and robustness
- A pulse exists between each server/client and the ConfigServer;
- A new server register to configServer;
- A new client contact ConfigServer via server names;
- The client may select service when multi server exist;
- The ConfigServer may inform the client about the new service provider if service state changes.
Continuous integration
cloud based, Docker, DevOps...
Implementation
- Develop via cloud based platform
- Distribute via container style service publication