The Beginner’s Guide to Performance Engineering
Prakash Patil | April 3, 2019
The current industry expectation for Performance positions is increasingly changing to “Performance Engineer” from “Performance Tester.” Businesses are recognizing the need to restructure teams and redefine roles to ensure delivery of stable and high-performing infrastructure and applications. This has led to a significant increase in the demand for Performance Engineers who have complete knowledge of Java/.Net full stack, Database, and the latest Application Performance Monitoring tools.
Performance Engineering means a thorough understanding of the instrumentation of various parts/components of an application with regard to the Web Server, Application Server, Database Server, Firewall, Load Balancer, and System Configuration.
What does it take to be a Performance Engineer?
Performance Engineering requires a much broader skill set, including techniques for measurement, analysis, diagnostics, and optimization. Aspiring Performance Testers, who wish to transition to Performance Engineering should have a thorough understanding of the following components:
Application Architecture – Thorough knowledge of the complete Application Architecture plays a crucial role for a Performance Engineer to get a clear picture of the end-to-end flow of the application and its different components. It helps in analyzing the application data flows and identifying the exact source of performance issues.
Hardware/System Configuration – Understanding the application’s hardware requirement is another crucial part of a Performance Engineer’s responsibility. It helps in assessing the kind of hardware configuration required for the Web, App, and Database Servers to handle the anticipated user traffic in Production successfully.
Web/App/DB Server – A Performance Engineering should have a clear understanding of the Application Architecture. An accurate analysis will be possible only if the Engineer knows how the Web, App, and DB Servers are hosted and communicating with each other.
Network Bandwidth – This provides teams an estimate of network bandwidth required for the application on the peak load to perform within the established SLAs.
Database Pre-Requisites – There are a few basic database pre-requisites, which have to be in place before initiating performance executions like Database Indexing, Statistics Updates, and Database Shrinking. An important and powerful component is SQL Profiler in SQL Server or AWR report in Oracle, included with SQL or Oracle, and it provides an immense amount of reporting on the database performance issues.
Perfmon (Performance Monitor) or APM (Application Performance Monitoring) tools – Perfmon is an inbuilt Windows performance monitoring tool which provides a detailed report on .Net, services, network, system, memory, and processor components usage on the peak load time. There are plenty of third-party APM tools available in the market that can be installed in the application servers to get the detailed metrics of the applications. These monitoring tools help in analyzing the performance issues in-depth and identifying specific performance bottleneck.
We will deep-dive into the individual components as a part of our blog series on Performance Engineering.