Say it with me… “Proper Planning and Preparation Prevents Poor PaaS Performance.” I’m sure you have heard the original 7 Ps before. My version is a little different as I have decided to focus on the performance of platform as a service (PaaS). Hopefully this saying will help you remember some of my tips for building higher performance web apps!
The only way to measure the performance of your app is to plan ahead and identify key metrics that can help you gauge how your app is performing. CPU and memory usage are not enough. Identify potential bottlenecks and KPIs within your app and track their every movement. You can track them via statsd, mbeans, Windows performance counters, or other solutions. You can monitor key web requests and database queries via an application performance monitoring (APM) solution. Also don’t forget to have good logging and error tracking in place.
The only way to ensure that your application can perform at a high level and scale is to do a lot of planning and design work. Be sure to spend some extra time researching and selecting the right application stack. There is an insane amount of options these days when it comes to SQL, NoSQL, caching, and other technologies. I would caution picking something you have never used just because it is the cool new thing. You could (will) waste months trying to figure out how to scale some new NoSQL solution that you aren’t familiar with. My biggest suggestion is making sure you know how to scale out any SQL usage so you don’t end up with one giant database.
Deploying an application can be complicated. Make sure you take the extra time to set up a build server to ensure that you can systematically repeat your deployment process over and over to make sure no steps are skipped. With a single click, we can ensure that our code is compiled and deployed all the way to Azure exactly the same way every time via Bamboo. This automation also helps you deploy hot fixes quick when performance problems do arise.
When it comes to creating high performance web apps, load testing is key. Tools like jmeter, loader.io, and others can make load testing easy these days. You will also want to use an APM solution to help you identify the bottlenecks in your code, like slow database queries, too many queries, too many cache calls, slow 3rd party web services, etc. Canada’s recent election is a great example of massive scale and load testing for success. Learn how they scaled up to 800k requests a second on Azure.
The performance of your application is critical to ensure that your users have a good user experience with your product. There has been lots of research that shows internet users these days are used to very fast sites and even a slight slow down can cause them to leave your website. Google is now recommending that response times be under 200ms which can be quite challenging. Tracking user satisfaction (like apdex scoring) via an APM solution or 99% percentiles is a good way to gauge how happy your users are.
Platform as a service (Paas) makes it easier than ever to design and build high performance web apps. Cloud providers like Azure & AWS make it easy and low cost to get started the right way from the beginning. From the very start, you can use services like caching, queuing, SQL, and NoSQL databases and know that they can scale and you don’t have to worry too much about how to scale them. A few years ago having to install, deploy, and support all of those pieces of your application stack took a lot of work.
Agile development is the opposite of stability. As you continue to make changes to your product, you could introduce new performance problems or bugs at any time. As your application usage grows, new bottlenecks, like a slow database query, will be found. Be sure to think about performance constantly as usage grows and new features are released. Cloud hosting can also have performance ups and downs due to noisy neighbors and their own maintenance. To constantly monitor the performance of your application, you will want to utilize an APM product that can track the overall performance of your application and help identify slow web requests, database queries, web service calls and more. If you’re ready to test out Stackify’s APM+ solution on your own data, simply click here to get started.