I am currently looking at deploying an SOA style
Application into a PAAS on the cloud.
I am evaluating a number of PAAS providers
Including Cloud Foundry, Heroku and Jelastic.
At the moment, for simplicities sake, I just have a grails app and a single service jar file with an embedded Jetty server. This will expand to be multiple services and web front ends, with a service ate way in the middle all communicating via a mixture of rabbit mq and http.
I am struggling at the moment to understand the topology of how these would be deployed onto a PAAS.
My questions are:
-
Do all services and web apps have to be deployed as top level “applications” within the PAAS (for instance can dynos be used
In Heroku?) -
If so, can access to the services be restricted so that requests can only be made to them from the webapp (gateway eventually).
-
Do they need to exist as a top level app in order to benefit from load balancing (and auto scaling) as there may be several instances of each service.
-
If each service was to have its own datastore, I presume again this would require it to be an app?
-
If there is a way to achieve this without using a full app for each service, how are the nodes individually addressable? Can they register themselves with some kind of directory service?
Thanks!
I will answer for CloudFoundry as this is what I’m most proficient in (and what I’m paid for 🙂
Preamble: CloudFoundry has the concepts of applications (pieces of code that run, which may or may not be exposed to the outside world i.e. there is a
standaloneruntime) and services (datastores and the like, RabbitMQ falls into that category). You deploy apps and bind them to zero or more services.and scale each of what you call service (i.e. not service in the
CF sense, but in the SOA sense) individually
Hope this makes sense 🙂