google-app-engine


GAE: multiple modules vs. multiple applications


App Engine allows you to have multiple modules within a single application. I'm trying to understand what the benefits of this are over having multiple App Engine projects.
In my situation, I have three components
A back-end component that does all the processing, stores all data, and is accessible with a REST API
A first front-end (e.g., request handlers) component under a first domain name that probably doesn't need its own datastore
A second front-end component under a second domain name that also probably doesn't need its own datastore.
Whether I use multiple modules or multiple apps, the communications between components are done using HTTP requests.
With modules, all the modules use the same datastore and memcache, but with different projects, they will each have their own memcache and datastore. I don't think this matters for me, because only the backend component needs a datastore.
I'm leaning towards using separate applications instead of separate modules because it seems easier to have complete separation.
Is there any reason I should prefer separate applications over modules or vice versa?
The question is somewhat opinion-based but there are many more reasons to use services (as they are now known) over separate projects.
You cite the main reason in your question: shared back-end services. Although you don't think that matters as they probably don't need Datastore, I would rather assume they may need them in the future than not (and then have to integrate via your other application's HTTP interface instead of direct Datastore RPC).
By using different services in the the same project, you benefit from simpler access to other Cloud Platform services (e.g. BigQuery) through things like service accounts.
You also get things like service discovery through the Modules Service. If you were to deploy as separate projects, App Engine doesn't know your projects from mine.
By using separate projects, you get pretty much the same separation as using services, but forego the benefits above.
Some people might want to use a separate project to benefit from an extra 28 free instance hours, but that wouldn't be a great long term design goal for my liking.

Related Links

Securely providing external service credentials to Google App Engine?
Arduino make GET request to Google app engine
Is my GAE Search corrupt?
Jinja2 reuse templates for new and edit
Using QuerySplitter in Google Datastore to load chunks of a known size
Can you explain what the app engine context interface is?
How to ensure that my entity will never be an orphan?
GAE custom Go runtime - internal.flushLog error
Google Datastore - Search Optimization Technique
Can't lease tasks by service account
Why custom domain “myapp.com” which replaces “myapp.appspot.com” took so long to load when comparing to “myapp.appspot.com”?
Does objectify have a get_or_insert equivalent
Custom domain from google not routing to App engine site
Unable to stop or delete datalabs environment on Google Cloud Platform
Is there a way to interactively create a new Datastore entity kind for Go GAE apps?
Is IP address from GoogleAppEngine URLFetch in same project static?

Categories

HOME
assembly
apache-jena
apache-spark-mllib
solver
spring-data-redis
seo
pyqt4
code-coverage
jtextpane
boto3
flume
extjs4.2
categorical-data
openstreetmap
reactive-programming
ibeacon-android
bitnami
do-while
altera
esoteric-languages
searchview
intershop
identity-management
mapstruct
nim
bourbon
epsilon
interpreter
xcode-ui-testing
fat
stackexchange
jackson-modules
paperjs
corenlp-server
eviews
paragraph
utorrent
weather
fossil
video-capture
python-pptx
swagger-php
wurfl
modernizr
tasm
azure-arm
levenshtein-distance
flask-login
optimizely
getchar
jquery-ui-draggable
netbeans6.8
vugen
lightning
x-ray
java-bytecode-asm
edit
headless
janus
lsyncd
grails-plugin
beamer
model-associations
lean
google-query-language
cassia
cortex-m
kendo-upload
dynatree
gocql
fiware-monitoring
poppler
phonertc
zen-cart
opserver
sapscript
cryptographichashfunction
execve
beatsmusic
filesplitting
device-tree
unix-socket
mobility
gnumeric
vsx
oocss
kaleidoscope
css-reset
cascadingdropdown
pyunit
cuda-gdb
objectquery
jquery-address
denied
jquery-tools
entitydatasource
w3c-geolocation
quotation-marks
photolibrary
timertask
instantiationexception
office-2007
lxr
sun
asynchronous-wcf-call
alsb
sifr3
soappy
wcf-proxy

Resources

Encrypt Message