Hello Richard,
If you existing application is fairly modular, all you need to work on, to convert it to a micro-services-based app, is to at least convert your imports and read-writes from various models to calls via HTTP. The new services would provide full isolation of code; the only way to execute code in these services is through an HTTP invocation, such as a user request or a RESTful API call. With more work you may be able to re-think the existing modular structure to reduce dependencies and optimize calls, in the end.
1) The best approach to building and endpoints-based application using services depends on your needs and the architecture that arises naturally from the analysis of those needs. More information from the “About Cloud Endpoints Frameworks”
page and the “Converting Backends to Services”
document.
2) Some of the characteristics of inter-services communications in the micro-services architecture are:
- Code in one service can't directly call code in another service.
- Code can be deployed to services independently.
- Different services can be written in different languages, such as Python, Java, Go, and PHP.
- Auto-scaling, load balancing, and machine instance types are all managed independently for services.
3) The optimum structure of your architecture should reflect your application needs. Usually, starting from existing modules might prove easier than rewriting the entire application specifically for the micro-services architecture.