Performance Importance (DRAFT/rewrite)
Systems are designed and delivered with a constant focus on performance characteristics.
Performance is about retaining users. Sites should be fast and responsive to user input. Slow sites have a negative impact on revenue and conversion rates. Without a continued focus on the impact of changes to systems performance we risk impacting our users experience, our systems ability to scale and our systems stability. This can lead to impacting our revenue, conversion rates and to systems outages.
- Setting a performance budget per page or service as early as possible and incorporated in the build process helps focussing on performance throughout the project, these goals help to better balance performance without harming functionality or user experience.
- Applications should incorporate an analysis of impact to performance (client-side and/or back-end) after every commit by adding short component performance tests to the CI pipeline with leveraging mocks/stubs for dependencies (with sitespeed.io and/or gatling tools, for instance).
- Teams need awareness of how their systems have been engineered and meet their performance criteria, and avoid accidentally introducing changes that lead to performance and stability degradation and impact our users’ experience.
- Volume/load testing is to be considered for back-end performance testing and client-side performance testing for applications with a front-end.
- Longer performance tests can be run in a more ad-hoc way to address specific stability/reliability/availability risks.
- Higher volume stress component performance tests should be considered to address specific scalability risks.
- As well as implementing continuous component performance testing, teams should consider automated integration / end-to-end performance testing against an entire tech stack if their application is performance critical and after assessing the risk of impacting upstream or downstream dependencies performance.
- Performance production observability is to be used as well to understand better the behaviour of distributed/complex systems by looking at the data they generate. This can be used for instance with deployment strategies that enable a safe rollout with observability over a change with using feature toggles to dark launch new features to customers. For example, if your monitoring dashboards show an increase in latency after you enable a particular feature, you can turn it off again without having to re-deploy an entire release candidate, you can also slowly ramp up traffic with monitoring (Golden signals or customs) to assess the performance.
- Production performance assessment are also useful activities to mitigate the risk of environmental, usage or operational differences between test and production. For instance, by using monitoring to assess performance in production or by validating in production the performance workload profiles used in the test environment or by running production performance testing.