2) what does "best" mean?
--> Lowest cost?
--> Highest reliability?
--> lowest cost of development?
--> best set of service offerings?
--> specific set of capabilities (HIPAA, ISO compliances, HPC computation?
--> "hybrid management"?
Yet another person chiming in that the question is generally too broad to answer.
1) what does "scale" mean?
--> do you mean millions/billons of simultaneous users?
--> do you mean petabytes of data?
--> do you mean thousands of parallel processing threads?
Each "scale" requires different archtectures.
Some can leverage PaaS, others require dedicated and specialized compute services. For example if you are going to do the kind of parallel processing that oil field analysis requires, even HOOPs in the Cloud won't scale.
OTOH if what you need is to support lots of simultaneous users. PaaS of the Google App Enging, MSFT Azure, Amazon Elastiic Beanstalk might well work for you.
I would agree the question is far too broad to answer fully. You always design it to scale although I would suggest some more questions and understanding needed here.
There is no good answer to that beyond "you design it to scale". If you
need a RBDMS, you work trying to use a cluster or master-multi-slave
arrangement, considering update propagation delays. You may consider
offloading work from the database by relying on all kinds of cache, from
memcache all the way to a CDN that can cache responses. You may want to use
queues to time-offset some workloads, smoothing them along time. If your
data fits, you may consider using a non-relational datastore that can be
immensely clustered. You may want to denormalize everything. You should
also design into the application several "degraded" modes that you can
control or that can be automatically set if a given event happens: you may
want to have a read-only mode for when you can't write to your database
(for any number of reasons, including maintenance) or a different visual
element arrangement if some external API goes offline.
Or you may simply opt to run it on Google App Engine, Heroku, OpenShift or
any other PaaS platform and let the platform guide your design.
Platform-as-a-service (PaaS) is a kind of cloud computing service in which, rather than having to build and maintain their own infrastructure, a client is able to develop, run, and manage applications on a platform that is provided by a third-party provider. The provider hosts both software and hardware, freeing the client from having to install and handle them in-house.
2) what does "best" mean?
--> Lowest cost?
--> Highest reliability?
--> lowest cost of development?
--> best set of service offerings?
--> specific set of capabilities (HIPAA, ISO compliances, HPC computation?
--> "hybrid management"?
Yet another person chiming in that the question is generally too broad to answer.
1) what does "scale" mean?
--> do you mean millions/billons of simultaneous users?
--> do you mean petabytes of data?
--> do you mean thousands of parallel processing threads?
Each "scale" requires different archtectures.
Some can leverage PaaS, others require dedicated and specialized compute services. For example if you are going to do the kind of parallel processing that oil field analysis requires, even HOOPs in the Cloud won't scale.
OTOH if what you need is to support lots of simultaneous users. PaaS of the Google App Enging, MSFT Azure, Amazon Elastiic Beanstalk might well work for you.
I would agree the question is far too broad to answer fully. You always design it to scale although I would suggest some more questions and understanding needed here.
There is no good answer to that beyond "you design it to scale". If you
need a RBDMS, you work trying to use a cluster or master-multi-slave
arrangement, considering update propagation delays. You may consider
offloading work from the database by relying on all kinds of cache, from
memcache all the way to a CDN that can cache responses. You may want to use
queues to time-offset some workloads, smoothing them along time. If your
data fits, you may consider using a non-relational datastore that can be
immensely clustered. You may want to denormalize everything. You should
also design into the application several "degraded" modes that you can
control or that can be automatically set if a given event happens: you may
want to have a read-only mode for when you can't write to your database
(for any number of reasons, including maintenance) or a different visual
element arrangement if some external API goes offline.
Or you may simply opt to run it on Google App Engine, Heroku, OpenShift or
any other PaaS platform and let the platform guide your design.
You must hire the right CTO or SOA architect and Clean Coders