Using the service (aka module) keyword in app.yaml its possible to create microservices on app engine.
The reason of this post is to get a better picture of how to setup an application existing of microservices on the app engine. The application in question will receive, store and send a good amount of data.
Microservices
Microservices communicate with eachother using HTTP requests. How do you decide where the service can be reached, and how does this translate to the development environment.
- Discovery service? Minimal sample or link?
- Hardcoded location <service>.<app_id>.appspot.com? and modify hosts file for local development?
Endpoints
- Is it a common practice to use the Endpoints feature to develop an API for internal communication between services?
- Another solution would be a webapp
- Is it a common practice to use the Endpoints feature to develop an REST API for users which communicates with the services?
- Another solution would be a webapp
Developing an application which receives/stores/distrubutes a large data set. Pushing and pulling data is done using a REST API. My concern is that the data travels to multiple services over the network increasing bandwith usage. Example;
[user] -> REST API Service -> Data Service -> Datastore
In a monolith application the data gets processed directly. In a microservice application the data travels from the user to the API Service and is then send to the Data Service to be processed.
- Give the Data Service an API which is accessible by the user?
- Is this an issue on App Engine cost wise?