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.
PaaS Clouds offer application developers an environment to build, deploy, and manage applications without infrastructure complexity. These platforms streamline development with integrated tools and services.PaaS Clouds empower developers by providing a suite of development tools, middleware, and cloud-based resources. They facilitate seamless deployment of applications, enhancing scalability and reducing the time-to-market. Users appreciate the ability to focus on application logic while the...
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