Focus on designing the applications that optimize communications between
application components. For example, combine communications into a single
stream of data or a group of messages, rather than constantly communicating
as if the application components reside on a single platform.
4) Model and design for performance and scaling
Extend considerations around how the application components communicate
to include overall performance as well. This includes understanding how the
application will scale under an increasing load.
Designing for performance means first building a
model that represents how the application behaves
under an increasing load.
If 1,000 or more users log on at the same time, how will the application handle
the increased traffic on the network, the increased load on the application
servers, and the load placed on the back-end databases? You need to under-
stand how application components handle the load as the number of users
increases to 1,000 or more users.
This example might increase the load on the application servers by 80 percent,
the load on the network by 10 percent, and the load on the database by 40 per-
cent. Given that, adding 1,000 more users will likely saturate the application
servers you’ve provisioned, and you’ll need to spin up more application server
instances. The network capacity might remain the same, but the number of
database instances may have to increase to handle any additional load.
Armed with this model, you can figure out how best to scale the application by
automatically spinning up resource instances that are needed. In some cases,
cloud service providers offer auto-scaling capabilities, where provisioning
occurs automatically. The most efficient path, however, lies in understanding
the application’s workload profile and defining the path to scaling the applica-
tion, as well as putting mechanisms in place to ensure that it will, indeed, scale.
Finally, monitor overall application performance using application-aware per-
formance monitoring tools, and create interfaces within the application to
better enable performance monitoring. How the application provisions and
de-provisions resources should be innate.
5) Make security systemic within the application
For most people who build applications, security is typically an afterthought.
When hosting an application in the cloud, however, security should be a high
priority. Your cloud-based application architecture should make security sys-
temic to the application—it should be designed and built into the application
architecture.
WINTER 2016 | THE DOPPLER | 21