The Doppler Quarterly Winter 2016 | Page 23

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